当前位置: 技术问答>linux和unix
很菜的问题。。。关于uClinux启动地址。
来源: 互联网 发布时间:2016-07-30
本文导语: 请问一下,uClinux的启动地址具体是什么? 再请问一下,单片机写的程序,是直接烧到FLASH里的0x0地址的吗?上电后CPU从FLASH的0x0地址开如取指令? 如果直接把uClinux烧到ARM开发板里的FLASH,上电可以跑吗,为什么?(...
请问一下,uClinux的启动地址具体是什么?
再请问一下,单片机写的程序,是直接烧到FLASH里的0x0地址的吗?上电后CPU从FLASH的0x0地址开如取指令?
如果直接把uClinux烧到ARM开发板里的FLASH,上电可以跑吗,为什么?(自己实践跑不起...)
那么是不是可以这么理解。uClinux是一大堆指令,而要启动系统,则要在相对地址为某个启动地址启动系统。(比如我把系
统从0x00000开始烧写到板子上,要从0x10000开始取指),系统方能启动?
本人是个菜鸟,由其是硬件。希望高手指点一下。
再请问一下,单片机写的程序,是直接烧到FLASH里的0x0地址的吗?上电后CPU从FLASH的0x0地址开如取指令?
如果直接把uClinux烧到ARM开发板里的FLASH,上电可以跑吗,为什么?(自己实践跑不起...)
那么是不是可以这么理解。uClinux是一大堆指令,而要启动系统,则要在相对地址为某个启动地址启动系统。(比如我把系
统从0x00000开始烧写到板子上,要从0x10000开始取指),系统方能启动?
本人是个菜鸟,由其是硬件。希望高手指点一下。
|
单片机写的程序,是直接烧到FLASH里的0x0地址的吗?
--------------
如果你说的是51单片机,确实如此。高级点的芯片,如arm920t的s3c2440 ,s3c2440支持两种启动模式:NAND和nor flash启动。。从nor flash启动,0x00000000就是nGCS0片选中的那片nor flash。当从NAND启动时,cpu会自动从NAND flash中读取前4KB的数据放置在片内SRAM里(s3c2440是soc),同时把这段片内SRAM映射到nGCS0片选的空间,即0x00000000。
上电启动地址跟cpu严重相关。我见过的cpu都是从0x0开始存放一堆中断向量,其中0x0存放的reset中断的向量,上电执行的是0x0位置的中断向量,即一个跳转语句跳到真正的开始代码
如果直接把uClinux烧到ARM开发板里的FLASH,上电可以跑吗,为什么?(自己实践跑不起...)
------------------
linux在pc上需要有引导程序如grub,在嵌入式里同样需要引导的bootloader,wince也一样需要引导。
比如在arm上,bootloader在跳转到linux内核第一条代码前需要做以下工作:
R0为0,R1为机器类型ID,r2存放内核启动参数
禁止中断,cpu必须为svc模式,mmu必须关闭,数据cache必须关闭,看门狗关闭
同样,wince也有自己的bootloader要求。
--------------
如果你说的是51单片机,确实如此。高级点的芯片,如arm920t的s3c2440 ,s3c2440支持两种启动模式:NAND和nor flash启动。。从nor flash启动,0x00000000就是nGCS0片选中的那片nor flash。当从NAND启动时,cpu会自动从NAND flash中读取前4KB的数据放置在片内SRAM里(s3c2440是soc),同时把这段片内SRAM映射到nGCS0片选的空间,即0x00000000。
上电启动地址跟cpu严重相关。我见过的cpu都是从0x0开始存放一堆中断向量,其中0x0存放的reset中断的向量,上电执行的是0x0位置的中断向量,即一个跳转语句跳到真正的开始代码
如果直接把uClinux烧到ARM开发板里的FLASH,上电可以跑吗,为什么?(自己实践跑不起...)
------------------
linux在pc上需要有引导程序如grub,在嵌入式里同样需要引导的bootloader,wince也一样需要引导。
比如在arm上,bootloader在跳转到linux内核第一条代码前需要做以下工作:
R0为0,R1为机器类型ID,r2存放内核启动参数
禁止中断,cpu必须为svc模式,mmu必须关闭,数据cache必须关闭,看门狗关闭
同样,wince也有自己的bootloader要求。
|
lz的讲得很详细了,的确是和cpu有关的:当 PC 的电源打开后,80x86 结构的
CPU 将自动进入实模式,并从地址 0xFFFF0 开始自动执行程序代码,这个地址通常是 ROM-BIOS 中的地
址。
CPU 将自动进入实模式,并从地址 0xFFFF0 开始自动执行程序代码,这个地址通常是 ROM-BIOS 中的地
址。
|
不一定啊,
看具体的cpu体系结构,
看具体的cpu体系结构,