6203|6

74

帖子

2

TA的资源

一粒金砂(中级)

楼主
 

从NAND FLASH启动BeagleBone [复制链接]

时隔半年多,重拾BeagleBone,看了下BeagleBone的启动,本贴总结如何从NAND FLASH启动BeagleBone。一直看前辈们的帖子一步一步学BeagleBone,这次也发个帖子玩玩。

一、BeagleBone Linux启动过程了解
1、上电,处理器PoR(Power-on Reset)后就会跳到复位向量所指的程序段去运行,这段程序位于处理器的ROM中,由处理器生产厂商提供,我们称其为ROM BootLoaderRBL)。RBL在初始化固定存储设备(NANDFlashMMCEtc.)后,根据CPU的跳线选择,从持久性存储设备(Beaglebone默认是从MMC)中将第二部要用到的bootloader读入内存(至于是内部还是外部,要根据ROM中的程序来定,Beaglebone是内部ram),而后将控制权转交。

2、Bootloader,分两步:
第一步的bootloader我们称为Secondary Program LoaderSPL),或MLOSPL完成有限的初始化工作,最重要的就是初始化DDR RAM(或是其他大一点的外部RAM),因为下一步的U-Boot将要进驻其中。在这之后,SPL从持久性存储设备中将U-Boot(其他bootloader也行,我们这里以U-Boot为例)读入DDR RAM中,随后转交CPU控制权。
第二步终于到了万众瞩目的U-Boot阶段,使能大部分的处理器功能,将操作系统内核读入DDR RAM中,而后配置启动参数启动Linux内核。当然U-Boot的功能可不止这些,U-Boot中提供了很多应用程序,可以使用tftp下载文件,或是格式化存储设备等等。

3、Linux内核启动……内核初始化,MMU使能,外部设备初始化,PID1Init进程启动……
至于从什么地方加载内核到DDRRAM中,完全由U-Boot的启动参数或命令决定的。

为什么要分这么几步呢?源自网络上的一段解释:
一步Boot起来不行吗?>_< 其实任何一门技术都是让我们的生活变的简单,Bootloader也是,所以其不可能是麻烦……首先,第一步的RBL不可能太复杂,ROM大小是一个限制,最重要的还是因为其所能获取的系统信息太少,所以处理器只能使用简单的方法去寻找能完成复杂功能的代码,而后将处理器初始化工作交给它来完成。其次,SPL也不能很复杂,因为其位于处理器的内部RAM中,一般处理器的内部RAM都要小于128KB,其大小注定其不能完成很复杂的功能,是故,再寻找能力更强大一些的代码,将处理器初始化工作交给它来完成。到了在DDR RAM中执行的BootloaderU-Boot算一个),其功能就比较完善了,此时就可以启动操作系统了。

张图:
1.png
2.png 硬件跳线提示SPL
3.png AM335x Technical Reference Manual.pdf


二、第一部分是对BeagleBone启动过程简单的介绍,了解到BeagleBone默认是从MMC SD Card读取SPL的,看下板子上焊接了R80-R95,R100-R115电阻哪些焊接了,哪些没焊接,然后再对照AM335x Technical Reference Manual看下,就知道啦!如何改成从NAND FLASH读取SPL呢?改下部分引脚的电平就行了,直接接地或接+3.3V就行了,0402的电阻手工不好焊接。

SD 卡启动配置SYSBOOT[7:0]00010111/SYSBOOT[15:8]01000000。
NAND启动配置SYSBOOT[7:0]00010010/SYSBOOT[15:8]01000010

BeagleBone板子上没有NAND FLASH,连saveenv都搞不了,怎么板办?
扩展吧…

借鉴下这篇帖子吧,chenzhufly,神人神贴,一直模仿,从未超越,哈哈:
上扩展原理图:

4.png
5.png

三、硬件准备完成,下面就是软件了:
从SD卡启动,U-BOOT界面下通过TFTP将MLO下载到内存,再从内存写入NAND的SPL分区:
  1. U-Boot# dcache off(tftp一直没反应,加了这个就可以了)
  2. Data (writethrough) Cache is OFF
  3. U-Boot# tftp 0x80007fc0 MLO
  4. link up on port 0, speed 100, full duplex
  5. Using cpsw device
  6. TFTP from server 192.168.1.1; our IP address is 192.168.1.2
  7. Filename 'MLO'.
  8. Load address: 0x80007fc0
  9. Loading: ########
  10. done
  11. Bytes transferred = 37143 (9117 hex)
  12. U-Boot# nand erase 0x00000000 0x9117

  13. NAND erase: device 0 offset 0x0, size 0x9117
  14. Erasing at 0x0 -- 100% complete.
  15. OK
  16. U-Boot# nand write 0x80007fc0 0x00000000 0x9117

  17. NAND write: device 0 offset 0x0, size 0x9117
  18. 37143 bytes written: OK
复制代码
类似的将u-boot.img、uImage、jffs2文件镜像写入相应的分区:
  1. U-Boot# dcache off
  2. Data (writethrough) Cache is OFF
  3. U-Boot# tftp 0x80007fc0 u-boot.img  
  4. link up on port 0, speed 100, full duplex
  5. Using cpsw device
  6. TFTP from server 192.168.1.1; our IP address is 192.168.1.2
  7. Filename 'u-boot.img'.
  8. Load address: 0x80007fc0
  9. Loading: #############################################
  10. done
  11. Bytes transferred = 230316 (383ac hex)
  12. U-Boot# nand erase 0x00080000 0x383ac

  13. NAND erase: offset is not a number
  14. U-Boot# nand erase 0x00080000 0x383ac

  15. NAND erase: device 0 offset 0x80000, size 0x383ac
  16. Erasing at 0xa0000 -- 100% complete.
  17. OK
  18. U-Boot# nand write 0x80007fc0 0x00080000 0x383ac

  19. NAND write: device 0 offset 0x80000, size 0x383ac
  20. 230316 bytes written: OK


  21. U-Boot# dcache off
  22. Data (writethrough) Cache is OFF
  23. U-Boot# tftp 0x82000000 jffs2.img  
  24. link up on port 0, speed 100, full duplex
  25. Using cpsw device
  26. TFTP from server 192.168.1.1; our IP address is 192.168.1.2
  27. Filename 'jffs2.img'.
  28. Load address: 0x82000000
  29. Loading: #################################################################
  30.          #################################################################
  31.          #################################################################
  32.          #################################################################
  33.          #################################################################
  34.          #################################################################
  35.          #################################################################
  36.          #################################################################
  37.          #################################################################
  38.          #################################################################
  39.          #################################################################
  40.          #################################################################
  41.          #################################################################
  42.          #################################################################
  43.          #################################################################
  44.          #################################################################
  45.          #################################################################
  46.          #################################################################
  47.          #################################################################
  48.          #################################################################
  49.          #################################################################
  50.          #################################################################
  51.          #################################################################
  52.          #################################################################
  53.          #################################################################
  54.          #################################################################
  55.          #################################################################
  56.          #################################################################
  57.          #################################################################
  58.          #################################################################
  59.          #################################################################
  60.          #################################################################
  61.          #################################################################
  62.          #################################################################
  63.          #################################################################
  64.          #################################################################
  65.          #################################################################
  66.          #################################################################
  67.          #################################################################
  68.          #################################################################
  69.          #################################################################
  70.          #################################################################
  71.          ################################
  72. done
  73. Bytes transferred = 14138752 (d7bd80 hex)
  74. U-Boot# nandecc hw 0
  75. HW ECC Hamming Code selected
  76. U-Boot# nand erase 0x00780000 0xd7c000

  77. NAND erase: device 0 offset 0x780000, size 0xd7c000
  78. Erasing at 0x14e0000 -- 100% complete.
  79. OK
  80. U-Boot# nand write 0x82000000 0x00780000 0xd7c000

  81. NAND write: device 0 offset 0x780000, size 0xd7c000
  82. 14139392 bytes written: OK


  83. U-Boot# dcache off
  84. Data (writethrough) Cache is OFF
  85. U-Boot# tftp 0x82000000 jffs2.img
  86. link up on port 0, speed 100, full duplex
  87. Using cpsw device
  88. TFTP from server 192.168.1.1; our IP address is 192.168.1.2
  89. Filename 'jffs2.img'.
  90. Load address: 0x82000000
  91. Loading: #################################################################
  92.          #################################################################
  93.          #################################################################
  94.          #################################################################
  95.          #################################################################
  96.          #################################################################
  97.          #################################################################
  98.          #################################################################
  99.          #################################################################
  100.          #################################################################
  101.          #################################################################
  102.          #################################################################
  103.          #################################################################
  104.          #################################################################
  105.          #################################################################
  106.          #################################################################
  107.          #################################################################
  108.          #################################################################
  109.          #################################################################
  110.          #################################################################
  111.          #################################################################
  112.          #################################################################
  113.          #################################################################
  114.          #################################################################
  115.          #################################################################
  116.          #################################################################
  117.          #################################################################
  118.          #################################################################
  119.          #################################################################
  120.          #################################################################
  121.          #################################################################
  122.          #################################################################
  123.          #################################################################
  124.          #################################################################
  125.          #################################################################
  126.          #################################################################
  127.          #################################################################
  128.          #################################################################
  129.          #################################################################
  130.          #################################################################
  131.          #################################################################
  132.          #################################################################
  133.          ################################
  134. done
  135. Bytes transferred = 14138752 (d7bd80 hex)
  136. U-Boot# nandecc hw 0
  137. HW ECC Hamming Code selected

  138. U-Boot# nand erase clean 0x00780000 0x0f880000

  139. NAND erase: device 0 offset 0x780000, size 0xf880000
  140. Skipping bad block at  0x081a0000                                          
  141. Skipping bad block at  0x081e0000                                          
  142. Skipping bad block at  0x09980000                                          
  143. Skipping bad block at  0x0a100000                                          
  144. Skipping bad block at  0x0b700000                                          
  145. Skipping bad block at  0x0b940000                                          
  146. Skipping bad block at  0x0dea0000                                          
  147. Skipping bad block at  0x0e620000                                          
  148. Skipping bad block at  0x0f460000                                          
  149. Erasing at 0xffe0000 -- 100% complete. Cleanmarker written at 0xffe0000.
  150. OK
  151. U-Boot# nand write 0x82000000 0x00780000 0xd80000

  152. NAND write: device 0 offset 0x780000, size 0xd80000
  153. 14155776 bytes written: OK
复制代码
关于jffs2文件系统制作,下载,启动,请参考如下文档:

貌似jffs2文件系统已经被淘汰了,后面搞下UBIFS吧。。。
就到这了,感谢eeworld的chenzhufly,oschina的Cedric_Sun。。。
还是那句话:一直在模仿,从未超越过,汗。。。


[ 本帖最后由 黑非拉 于 2013-11-11 11:50 编辑 ]

1.png (18.8 KB, 下载次数: 0)

Beaglebone boot图解

Beaglebone boot图解

2.png (168.04 KB, 下载次数: 0)

硬件跳线提示RBL从何处读取SPL

硬件跳线提示RBL从何处读取SPL

3.png (15.87 KB, 下载次数: 0)

AM335x Technical Reference Manual.pdf

AM335x Technical Reference Manual.pdf

4.png (69.54 KB, 下载次数: 0)

4.png

5.png (39.21 KB, 下载次数: 0)

5.png

最新回复

感谢分享!  详情 回复 发表于 2013-11-18 16:38

赞赏

2

查看全部赞赏

点赞 关注(1)
 

回复
举报

1246

帖子

19

TA的资源

五彩晶圆(初级)

沙发
 
强烈支持!学习一下!楼主前两张图挂啦!

点评

哈哈,这么快,还在编辑中。。。  详情 回复 发表于 2013-11-11 11:30
 
 

回复

74

帖子

2

TA的资源

一粒金砂(中级)

板凳
 

回复 沙发anananjjj 的帖子

哈哈,这么快,还在编辑中。。。
 
 
 

回复

74

帖子

2

TA的资源

一粒金砂(中级)

4
 
传几个图片搞了半天,唉,表示压力很大!
 
 
 

回复

6040

帖子

204

TA的资源

版主

5
 
好贴要顶。
 
 
 

回复

535

帖子

0

TA的资源

版主

6
 
学AM335X就要一个模块一个模块来折腾
 
 
 

回复

54

帖子

1

TA的资源

一粒金砂(中级)

7
 
感谢分享!
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表