仓酷云

标题: 来讲讲:使uboot撑持S3C6410的SD启动 [打印本页]

作者: 深爱那片海    时间: 2015-1-16 11:40
标题: 来讲讲:使uboot撑持S3C6410的SD启动
对于linux命令,一定要学会用man和info去查他们的解释;
这里利用的uboot并不是uboot官方公布的uboot代码,而是为三星定制的一个uboot版本s3c-u-boot-1.1.6,其代码作者就包含了三星的程序员与denx的员工。这个版本撑持SD启动,不外默许是nand启动,使它撑持uboot必要做以下事变:
  1、固然撑持uboot启动,可是uboot代码里不叫SD启动体例,而是叫movinand启动体例,在incluede/configs/smdk6410.h中就有这个选项,以是在这个文件里封闭nand启动,翻开movinand启动就能够了:
  //#defineCONFIG_BOOT_NOR
  //#defineCONFIG_BOOT_NAND正文nand启动
  #defineCONFIG_BOOT_MOVINAND翻开movinand启动
  //#defineCONFIG_BOOT_ONENAND
  //#defineCONFIG_BOOT_ONENAND_IROM
  #defineCONFIG_NAND
  //#defineCONFIG_ONENAND
  #defineCONFIG_MOVINAND翻开movinand选项,使uboot撑持movinand的操纵
  2、假如纯真是做下面的修改,仍是不敷的,在运转的时分会发明到了必定的时分uboot就逝世失落了,实在这是由于uboot中假定SMDK6410在利用SD体例的时分是从CH0启动的,可是手上的这个板子是经由过程CH1启动,那末在运转被复制到SRAM中的8K代码时分没举措在CH0检测到SD,更没举措将SD里的代码复制到SDRAM中。修正举措是在incluede/
  movi.h中HSMMC_CHANNEL修正为1。
  3、然后假如将上述修正后编译出来的u-boot.bin经由过程IROM_Fusing_tools间接烧写到SD中也是没举措启动的,必要运转以下的命令举行处置:
  catu-boot.bin>>temp
  catu-boot.bin>>temp
  split-b256ktemp
  mvxaau-boot_256k.bin
  split-b8ku-boot.bin
  mvxaau-boot_8k.bin
  catu-boot_256k.bin>>u-boot_mmc.bin
  catu-boot_8k.bin>>u-boot_mmc.bin
  经由这些处置,实践上是将u-boot.bin内容反复一次后(为了包管到达256K,假如这个bin更小,那末大概必要反复3次、4次,直到凌驾256K为止),将前256K制成u-boot_256k.bin,再将前8K制成u-boot_8k.bin,最初将u-boot_256k.bin+u-boot_8k.bin兼并成一个256K+8K巨细的文件u-boot_mmc.bin,这个文件前256K就是u-boot_256k.bin尔后8K就是u-boot_8k.bin。把这个u-boot_mmc.bin经由过程IROM_Fusing_tools烧写到SD卡就能够乐成启动体系了。
  为何要做如许的处置这个bin文件呢?上面经由过程剖析IROM_Fusing_tools、uboot的源码来展现个中的由来。
  从网上能够下载到IROM_Fusing_tools的源码,在按下这个软件的start控件后,先是读取这个SD卡的第一个扇区,也就是这个磁盘的MBR扇区,判别是否是FAT32格局的磁盘(这也是为何用来做启动的SD必需格局化为FAT32格局),接着猎取总的扇区数量TOTAl_SECOTR,并将所要烧写的bin文件烧写到磁盘的这个扇区:TOTAL_SECTORC2-SIZE_OF_IMAGE/512。个中TOTAl_SECTOR是这个磁盘总的扇区数量;SIZE_OF_IMAGE/512是这个bin文件将要占有的扇区数(这里是以512为扇区巨细的,因而关于扇区更年夜的SD卡也就没举措利用了,而如今的年夜容量SD都大概利用了2K乃至4K的扇区,除非修正这个程序,并同步地在uboot中修正程序);至于2则是保存的2个扇区,至于为何要保存这2个扇区,必要剖析uboot的源码情形,上面将做进一步的论述。
  在SD启动体例下,S3C6410外部的IROM程序BL0起首运转,并将SD中的最初18个扇区入手下手的16个扇区内容复制到片内的8KSRAM,也就是SteppingStone,接着跳转到这块SRAM的入手下手地点入手下手运转,这8K的代码实践上就是下面u-boot_mmc.bin这个文件的最初8K,也是u-boot.bin的最入手下手8K代码,这段代码也叫BL1。从BL0跳转到BL1的时分uboot也就接受了CPU。
  Uboot的出口在start.S这个文件,cpu/s3c64x0/start.S中有如许一段代码:
  #ifdefCONFIG_BOOT_MOVINAND
  ldrsp,_TEXT_PHY_BASE
  blmovi_bl2_copy
  bafter_copy
  #endif
  这段代码是完成SD启动的关头。到了这里后就实行movi_bl2_copy,这个函数卖力将SD内的uboot完全地复制到SDRAM,这时候候完全的uboot也叫BL2,而这个函数实践上是挪用了以下函数:
  CopyMovitoMem(HSMMC_CHANNEL,MOVI_BL2_POS,MOVI_BL2_BLKCNT,(uint*)BL2_BASE,MOVI_INIT_REQUIRED);
  HSMMC_CHANNEL这是SD/MMC通道号,手上板子利用的是CH1,而默许是CH0,以是必要对这个举行修正。
  MOVI_BL2_POS是必要拷贝的数据位于SD的肇端扇区,其盘算举措是如许的,先失掉这个SD的总扇区数TOTAL,再减往256K的BL2和
12下一页


有些人号称用过十几种甚至几十种linux,向人谈论起来头头是到,好像懂的很多。
作者: 深爱那片海    时间: 2015-1-16 12:45
标题: 来讲讲:使uboot撑持S3C6410的SD启动
给你装的系统里为ubuntu12.04,它已经封装的很臃肿了,但是考虑到你没有很多时间投入其中,所以给你装了它,但是怎么用它提高开发效率,需要你在学习的过程中不断总结;
8K的BL1所占的扇区数,最初减往0.5K的eFuse和0.5K的保存区所占的扇区数,而这里还界说SD的扇区为512B。从这里能够看到和IROM_Fusing_tools对SD卡的处置是完整对应的。这里另有一个成绩,总扇区数TOTAL是怎样失掉的?从程序来看是从(TCM_BASE-0x4)这个地点读取到的,至于TOTAL是怎样被放到这里的就只能从BL0的代码找谜底了。</P>  MOVI_BL2_BLKCNT是必要复制的扇区数量,这里就是界说为256K,这也是为何必需把u-boot.bin转换成256K的文件。
  BL2_BASE是目标地点,也就是SDRAM中的地点。这里界说为0x57E00000,就是128M的SDRAM的最初2M,由于到这里为止MMU还没有翻开,因而这里利用的是物理地点。
  MOVI_INIT_REQUIRED这个参数的意义是甚么临时没有任何材料申明。
  而CopyMovitoMem这个函数的界说是如许的:
  #defineCopyMovitoMem(a,b,c,d,e)(((int(*)(int,uint,ushort,uint*,int))(*((uint*)(TCM_BASE+0x8))))(a,b,c,d,e))
  这个界说实践上是挪用了位于TCM_BASE+0x8这个地点的函数指针,个中TCM_BASE的值为0x0C004000,至于这个地点放的是甚么,也没材料申明。
  当复制完BL2后便会跳转到BL2的start_armboot这个C言语函数中运转了,今后的运转历程就不必要再剖析了

</p>
上一页12


对于linux命令,一定要学会用man和info去查他们的解释;
作者: 老尸    时间: 2015-1-18 12:53
直到学习Linux这门课以后,我才知道,原来我错了。?
作者: 爱飞    时间: 2015-1-26 21:35
直到学习Linux这门课以后,我才知道,原来我错了。?
作者: 飘飘悠悠    时间: 2015-2-4 22:36
我感觉linux的学习,学习编程~!~!就去学习C语言编程!!
作者: 变相怪杰    时间: 2015-2-10 22:40
如果你有庞大而复杂的测试条件,尽量把它剪裁得越小越好。可能你会遇到这种情况,对于一个问题会出现不同内容回答,这时你需要通过实践来验证。
作者: 透明    时间: 2015-3-1 17:19
随着实验课程的结束,理论课也该结束了,说实话教OS的这两位老师是我们遇到过的不错的老师(这话放这可能不太恰当).
作者: 小魔女    时间: 2015-3-10 21:49
下面笔者在论坛看到的一个好问题: “安装红旗4.0后,系统紫光输入法自带的双拼方案和我的习惯不一样,如何自定义双拼方案解决?谢谢?”这个问题很简练。
作者: 兰色精灵    时间: 2015-3-17 11:37
通过一条缓慢的调制解调器线路,它也能操纵几千公里以外的远程系统。
作者: 小妖女    时间: 2015-3-24 10:12
众所周知,目前windows操作系统是主流,在以后相当长的时间内不会有太大的改变,其方便友好的图形界面吸引了众多的用户。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2