打印

J-link烧写Uboot的问题

[复制链接]
5029|27
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
MCU2me|  楼主 | 2013-3-27 10:10 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
网上下了一个文档,讲的是先配置Jlink “Use target RAM”地址为10000000。然后选择了flash的型号。设定了Base ADDr为 0。然后开始擦除,传送Uboot。
有两个疑问:
1.它的意思是不是这样?:Jlink把外部flash的初始化代码放到10000000 然后通知ARM从0地址执行烧好的U boot?
2.把Uboot烧写到0地址的话,启动代码(就是汇编+C的那个.s文件)不是也要放到0地址执行吗? 这不是矛盾了吗?

相关帖子

沙发
cool_coder| | 2013-3-27 13:47 | 只看该作者
Segger给出的说明就那么一点点

这里RAM应该是被当作写闪存的缓冲区了。闪存的BASE ADDRESS和目标芯片有关,一般情况下,芯片手册里都会给出地址空间映射表,查一下就知道了。

使用特权

评论回复
板凳
MCU2me|  楼主 | 2013-3-27 14:39 | 只看该作者
cool_coder 发表于 2013-3-27 13:47
Segger给出的说明就那么一点点

这里RAM应该是被当作写闪存的缓冲区了。闪存的BASE ADDRESS和目标芯片有关 ...

0地址接了一块nor flash 。如果把U boot烧到这里 那我的启动代码放在哪里呢?

使用特权

评论回复
地板
MCU2me|  楼主 | 2013-3-27 14:39 | 只看该作者
cool_coder 发表于 2013-3-27 13:47
Segger给出的说明就那么一点点

这里RAM应该是被当作写闪存的缓冲区了。闪存的BASE ADDRESS和目标芯片有关 ...

0地址接了一块nor flash 。如果把U boot烧到这里 那我的启动代码放在哪里呢?

使用特权

评论回复
5
huangxz| | 2013-3-27 15:04 | 只看该作者
MCU2me 发表于 2013-3-27 14:39
0地址接了一块nor flash 。如果把U boot烧到这里 那我的启动代码放在哪里呢? ...

你的arm是不是atmel的啊?atmel的片内flash0x10000000映射到0的。

使用特权

评论回复
6
MCU2me|  楼主 | 2013-3-27 15:21 | 只看该作者
huangxz 发表于 2013-3-27 15:04
你的arm是不是atmel的啊?atmel的片内flash0x10000000映射到0的。

s3c44b0。没有内部flash。

使用特权

评论回复
7
huangxz| | 2013-3-27 15:35 | 只看该作者
MCU2me 发表于 2013-3-27 15:21
s3c44b0。没有内部flash。

没有注意看帖子,其实jlink在烧写flash的时候,是会在mcu里面放一段代码的,最终还是mcu执行代码去烧写flash,而这段代码是放在mcu的内部ram里面执行。而执行这段代码的功能是将缓冲写的flash里面,不知道这样有没有说清楚。

使用特权

评论回复
8
cool_coder| | 2013-3-27 16:00 | 只看该作者
UBOOT就是启动代码,还有别的启动代码?你的NOR FLASH接在BANK#0,就是默认的复位向量位置,系统复位后自动从这里开始执行代码。而NOR FLASH有XIP特性,正适合这样用。没记错的话,S3C44B0比较简单,应该没有0地址重映射的功能,谁接在那里就运行谁。

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
MCU2me + 2
9
MCU2me|  楼主 | 2013-3-27 16:37 | 只看该作者
huangxz 发表于 2013-3-27 15:35
没有注意看帖子,其实jlink在烧写flash的时候,是会在mcu里面放一段代码的,最终还是mcu执行代码去烧写flash ...

说的很清楚!非常的谢谢!
还有一个问题……看了一下芯片的寻址空间 10000000是bank7的末地址。44b的寻址空间不是256M吗?bank0-7一共正好256M。那个10000000地址,处理器是不能寻址的呀?

使用特权

评论回复
10
MCU2me|  楼主 | 2013-3-27 16:48 | 只看该作者
cool_coder 发表于 2013-3-27 16:00
UBOOT就是启动代码,还有别的启动代码?你的NOR FLASH接在BANK#0,就是默认的复位向量位置,系统复位后自动 ...

您说的对,44b不支持重映射。
有两个疑问
1.Uboot是不是包含那个init.s?(就是初始化堆栈,内存……然后跳到主函数的那个汇编文件)
2.对那个重映射感觉总是理解的不到位
我是个刚刚学习ARM的新手……见谅

使用特权

评论回复
11
huangxz| | 2013-3-27 17:03 | 只看该作者
MCU2me 发表于 2013-3-27 16:48
您说的对,44b不支持重映射。
有两个疑问
1.Uboot是不是包含那个init.s?(就是初始化堆栈,内存……然后 ...

烧在flash的是u-boot.bin这个映像,所以包含init.s的编译结果。
重映射就是指的是映射后的地址跟映射前的地址是一一对应的。

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
MCU2me + 2
12
江枫渔火| | 2013-3-27 23:47 | 只看该作者
32位处理器的直接寻址空间是 4GB。

使用特权

评论回复
13
MCU2me|  楼主 | 2013-3-28 08:46 | 只看该作者
江枫渔火 发表于 2013-3-27 23:47
32位处理器的直接寻址空间是 4GB。

44b用了32位地址线中的低28位,好像还是256M呀……

使用特权

评论回复
14
MCU2me|  楼主 | 2013-3-28 08:56 | 只看该作者
huangxz 发表于 2013-3-27 17:03
烧在flash的是u-boot.bin这个映像,所以包含init.s的编译结果。
重映射就是指的是映射后的地址跟映射前的 ...

哦是这样啊……如果说44b不支持重映射是不是说上电后,PC跳到0地址,在0地址对应的Nor flash里直接运行Uboot而不像ARM9外部启动那样搬运到内部RAM中。换句话说,如果我把我的板子0地址对应的flash换成NAND 我的Uboot是启动不了的对吗?

使用特权

评论回复
评论
江枫渔火 2013-3-28 12:57 回复TA
启动之后,就是从0地址开始运行的。由于0地址处就是NOR FLASH,它是可以直接运行代码的存储器,所以不需要搬移代码, 
15
huangxz| | 2013-3-28 12:18 | 只看该作者
MCU2me 发表于 2013-3-28 08:56
哦是这样啊……如果说44b不支持重映射是不是说上电后,PC跳到0地址,在0地址对应的Nor flash里直接运行Ub ...

NAND不能直接执行程序的.只有NOR放在0地址才可以。

使用特权

评论回复
16
MCU2me|  楼主 | 2013-3-28 12:25 | 只看该作者
huangxz 发表于 2013-3-28 12:18
NAND不能直接执行程序的.只有NOR放在0地址才可以。

我的意思是ARM7是在0地址的nor flash中直接运行还是像ARM9那样把代码搬到内部RAM中执行?

使用特权

评论回复
17
huangxz| | 2013-3-28 12:27 | 只看该作者
你的那个芯片是直接从NOR FLASH 中启动的,运行不一定,(只能这么说啊,因为程序最后可能在RAM,也可能在RAM中执行)

使用特权

评论回复
18
江枫渔火| | 2013-3-28 12:51 | 只看该作者
一般是不能直接烧写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。

使用特权

评论回复
19
cool_coder| | 2013-3-28 14:22 | 只看该作者
你看的那篇文档是不是针对S3C44B0的?关于BANK分区地址请参考官方手册p.152。8个分区中只有最后两个BANK6/7支持RAM。BANK6的起始地址是固定的0x0c00-0000,BANK7复位后默认地址是0x0e00-0000,但是可以编程修改。

使用特权

评论回复
评论
MCU2me 2013-3-28 14:50 回复TA
嗯是针对44b的文档,好的,我在看一下官方的手册…… 
20
MCU2me|  楼主 | 2013-3-28 14:26 | 只看该作者
huangxz 发表于 2013-3-28 12:27
你的那个芯片是直接从NOR FLASH 中启动的,运行不一定,(只能这么说啊,因为程序最后可能在RAM,也可能在RAM中 ...

无论0地址接的是Nor还是NAND,那44b会不会搬运Uboot的前4K(或者8k)到内部Ram?

使用特权

评论回复
评论
江枫渔火 2013-3-28 17:01 回复TA
0地址只会接NOR或者RAM,看你选择哪个启动方式,如果是NOR启动,那就跟NAND没有关系,如果你是选择NAND启动,就会把4K数据搬到内存,自动的 
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

79

帖子

1

粉丝