您的位置:首页 > 其它

嵌入式ARM系统开发基础

2013-12-06 17:34 246 查看
从.net到delplhi 从windows到Linxu 未来有多远? 如何突破自己? 什么是自己? 我从哪里来,要到哪里去? 世界是什么? 是世选择了我,还是我选择了世界? 怎么才能够完成蜕变? 去他妈的,干吧!!!
ARM可执行文件格式 ELF:可执行文件格式 AFX:ARM的调试文件 BIN:可以写到flash或者RAM中直接运行
加载时地址就是程序放置的地址,运行地址就是程序定位的绝对地址,也即在编译连接时定位的地址。如果程序是在flash里运行,则运行地址和加载地址是相同的。如果程序是在ram里运行,但程序是存储在flash里,则运行地址指向ram,而加载地址是指向flash。代码一般是烧写在NAND里面 ARM上电启动 初始化ARM CPU异常处理向量表 禁止看门狗??? 禁止中断 初始化系统时钟,包括CPU主频,系统总线时钟频率,外设总线时钟频率 初始化SDRAM (SD卡) 控制器 设置ARM CPU 在各种模式下的栈指针 设置ARM中断向量表,安装中断处理程序 搬运可执行文件到RAM中 跳转到C语言程序的MIAN函数开始执行。
linux内核原码的组织 init 核心初始化代码 该目录下的mian.c中的start_lernel函数式内核运行的第一个C语言函数,相当于内核的mian函数 arch 体系结构的核心代码 不同的CPU不同的指令 MM 独立于CPU体系结构的内存管理代码 kernel 内核核心 drivers 驱动程序 ipc 进程间通信的代码 lib 库代码 ... 内核裁剪配置图 Kconfig|Kconfig|Kconfig|Kconfig ==>.config|makefile ==>uimage或者zimage CPU刚上电启动时,一般内存控制器还没有配置过,无法再内存中运行程序。 linux内核要运行CPU还必须满足一些条件 为了初始化CPU以及其他外设,必须要有一个先于内核的程序来配置硬件,这个程序就是BootLoader=BIOS+GRUB=Uboot(严格依赖硬件) CPU内部有一个叫做MMU的内存转换单元,其中有一个页表,用来实现CPU寻址与内存或者其他IO寻址转换。对于不同的操作系统,可以设置不同的内存转换的页表,UBoot可以写不同的内容,将不同的CPU地址分配给不同的硬件设备。比如32位CPU寻址范围为4G,可以只给内存分配1K,给硬件分配3G。这样即使你的内存有4G,CPU也只使用其中的1K。(当然这是作死的节奏)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: