J-link烧写Uboot的问题
网上下了一个文档,讲的是先配置Jlink “Use target RAM”地址为10000000。然后选择了flash的型号。设定了Base ADDr为 0。然后开始擦除,传送Uboot。有两个疑问:
1.它的意思是不是这样?:Jlink把外部flash的初始化代码放到10000000 然后通知ARM从0地址执行烧好的U boot?
2.把Uboot烧写到0地址的话,启动代码(就是汇编+C的那个.s文件)不是也要放到0地址执行吗? 这不是矛盾了吗? Segger给出的说明就那么一点点
这里RAM应该是被当作写闪存的缓冲区了。闪存的BASE ADDRESS和目标芯片有关,一般情况下,芯片手册里都会给出地址空间映射表,查一下就知道了。
cool_coder 发表于 2013-3-27 13:47 static/image/common/back.gif
Segger给出的说明就那么一点点
这里RAM应该是被当作写闪存的缓冲区了。闪存的BASE ADDRESS和目标芯片有关 ...
0地址接了一块nor flash 。如果把U boot烧到这里 那我的启动代码放在哪里呢? cool_coder 发表于 2013-3-27 13:47 static/image/common/back.gif
Segger给出的说明就那么一点点
这里RAM应该是被当作写闪存的缓冲区了。闪存的BASE ADDRESS和目标芯片有关 ...
0地址接了一块nor flash 。如果把U boot烧到这里 那我的启动代码放在哪里呢? MCU2me 发表于 2013-3-27 14:39 static/image/common/back.gif
0地址接了一块nor flash 。如果把U boot烧到这里 那我的启动代码放在哪里呢? ...
你的arm是不是atmel的啊?atmel的片内flash0x10000000映射到0的。 huangxz 发表于 2013-3-27 15:04 static/image/common/back.gif
你的arm是不是atmel的啊?atmel的片内flash0x10000000映射到0的。
s3c44b0。没有内部flash。 MCU2me 发表于 2013-3-27 15:21 static/image/common/back.gif
s3c44b0。没有内部flash。
没有注意看帖子,其实jlink在烧写flash的时候,是会在mcu里面放一段代码的,最终还是mcu执行代码去烧写flash,而这段代码是放在mcu的内部ram里面执行。而执行这段代码的功能是将缓冲写的flash里面,不知道这样有没有说清楚。 UBOOT就是启动代码,还有别的启动代码?你的NOR FLASH接在BANK#0,就是默认的复位向量位置,系统复位后自动从这里开始执行代码。而NOR FLASH有XIP特性,正适合这样用。没记错的话,S3C44B0比较简单,应该没有0地址重映射的功能,谁接在那里就运行谁。 huangxz 发表于 2013-3-27 15:35 static/image/common/back.gif
没有注意看帖子,其实jlink在烧写flash的时候,是会在mcu里面放一段代码的,最终还是mcu执行代码去烧写flash ...
说的很清楚!非常的谢谢!
还有一个问题……看了一下芯片的寻址空间 10000000是bank7的末地址。44b的寻址空间不是256M吗?bank0-7一共正好256M。那个10000000地址,处理器是不能寻址的呀? cool_coder 发表于 2013-3-27 16:00 static/image/common/back.gif
UBOOT就是启动代码,还有别的启动代码?你的NOR FLASH接在BANK#0,就是默认的复位向量位置,系统复位后自动 ...
您说的对,44b不支持重映射。
有两个疑问
1.Uboot是不是包含那个init.s?(就是初始化堆栈,内存……然后跳到主函数的那个汇编文件)
2.对那个重映射感觉总是理解的不到位
我是个刚刚学习ARM的新手……见谅 MCU2me 发表于 2013-3-27 16:48 static/image/common/back.gif
您说的对,44b不支持重映射。
有两个疑问
1.Uboot是不是包含那个init.s?(就是初始化堆栈,内存……然后 ...
烧在flash的是u-boot.bin这个映像,所以包含init.s的编译结果。
重映射就是指的是映射后的地址跟映射前的地址是一一对应的。 32位处理器的直接寻址空间是 4GB。 江枫渔火 发表于 2013-3-27 23:47 static/image/common/back.gif
32位处理器的直接寻址空间是 4GB。
44b用了32位地址线中的低28位,好像还是256M呀…… huangxz 发表于 2013-3-27 17:03 static/image/common/back.gif
烧在flash的是u-boot.bin这个映像,所以包含init.s的编译结果。
重映射就是指的是映射后的地址跟映射前的 ...
哦是这样啊……如果说44b不支持重映射是不是说上电后,PC跳到0地址,在0地址对应的Nor flash里直接运行Uboot而不像ARM9外部启动那样搬运到内部RAM中。换句话说,如果我把我的板子0地址对应的flash换成NAND 我的Uboot是启动不了的对吗? MCU2me 发表于 2013-3-28 08:56 static/image/common/back.gif
哦是这样啊……如果说44b不支持重映射是不是说上电后,PC跳到0地址,在0地址对应的Nor flash里直接运行Ub ...
NAND不能直接执行程序的.只有NOR放在0地址才可以。 huangxz 发表于 2013-3-28 12:18 static/image/common/back.gif
NAND不能直接执行程序的.只有NOR放在0地址才可以。
我的意思是ARM7是在0地址的nor flash中直接运行还是像ARM9那样把代码搬到内部RAM中执行? 你的那个芯片是直接从NOR FLASH 中启动的,运行不一定,(只能这么说啊,因为程序最后可能在RAM,也可能在RAM中执行) 一般是不能直接烧写NAND FLASH芯片,是把你要烧录的数据先写到内存指定位置里,然后传一段烧录代码到CPU,然后让CPU跳到这段代码执行烧录。
就三星的芯片,把UBOOT镜像烧到0地址好像是不对的~0地址貌似要么指向NOR FLASH(nor启动),要么指向内部RAM地址(nand 启动)
如果是用NAND FLASH启动,也就是开机的时候,把nand flash中内容的前4K数据拷贝到内部RAM处,并且映射到0地址处。
貌似默认uboot就是在nand flash中使用的?
引导代码维持在4K内,烧录在nand flash 的最先4K空间,这样系统启动的时候,就会将这4K引导代码复制到内部RAM里,并且映射为0地址处,从此处执行引导。
引导的任务就是把uboot剩下的部分从nand flash中拷贝到大内存中,就是外部RAM里,并跳转到起点运行~正式进入uboot。 你看的那篇文档是不是针对S3C44B0的?关于BANK分区地址请参考官方手册p.152。8个分区中只有最后两个BANK6/7支持RAM。BANK6的起始地址是固定的0x0c00-0000,BANK7复位后默认地址是0x0e00-0000,但是可以编程修改。 huangxz 发表于 2013-3-28 12:27 static/image/common/back.gif
你的那个芯片是直接从NOR FLASH 中启动的,运行不一定,(只能这么说啊,因为程序最后可能在RAM,也可能在RAM中 ...
无论0地址接的是Nor还是NAND,那44b会不会搬运Uboot的前4K(或者8k)到内部Ram?
页:
[1]
2