嵌入式linux应用开发完全手册(S3C2440)

开发板硬件:

? 开发板的内存里面各个块都是什么作用?

? 做裸机开发的时候裸机程序应该烧写到哪个地方?为什么?以及是如何被引导运行的?

裸机开发是在Nand flash?!其他区域如nor flash行么?

Keil中,启动代码***.s中的main()跳转接口地址,决定了Read/write Memory Area和Read/Only Memory Area的地址?

是板子本身固化有一个引导程序么?是的话是存放在内存什么地方的,如何可以查看到,以及实现的具体功能是什么?)

启动代码: ******.s

引导程序时bootloader的一部分

?裸机程序可以烧写到哪些内存RAM,Nand flash, Nor flash?

 

国嵌点亮LED例程(其实是个引导程序,LED灯的控制写入到了引导程序)

1、编译生成可执行文件

2、使用超级终端檫除Nand flash

3、使用usb下载可执行文件到内存区域0x30000000,gboot.bin为什么不是下载到Nand flash?(貌似是因为lds链接器脚本规定的原因,.bin由.lds .s make生成,可以将gboot.bin反汇编查看启动完整流程,以及代码存放地址空间)

(可以使用J-Link commander来把我们要烧到nand flash的bin文件加载到内存0x30000000处)

使用J-Link v8和u-boot烧写裸机程序到s3c2440的nand flash(这里假设nor flash已经烧进了u-boot)

如果没有烧进u-boot,也可以先通过J-Link commander把对目标板SDRAM的初始化init.bin文件加载进SRAM(s3c2440里面的steppingstone,如果是nor启动方式的话,这个steppingstone被映射到0x40000000上,如果从nand启动的话,被映射到0x0地址上.然后设置PC值并运行它,这样SDRAM就被初始化好了.然后把u-boot.bin加载到SDRAM的某个地址处,只要不跟其他需要用到的空间重叠就行,运行u-boot。

 

程序计数器PC的功能

用来存放下一条指令的地址的。当执行一条指令时,首先需要根据PC中存放的指令地址,将指令由内存取到指令寄存器中,此过程称为“取指令”。与此同时,PC中的地址或自动加1或由转移指针给出下一条指今的地址。此后经过分析指令,执行指令。完成第一条指令的执行,而后根据PC取出第二条指令的地址,如此循环,执行每一条指令!

  • GPIO接口
    • GPIO相关寄存器
      • GPxCON
      • GPxUP
      • GPxDAT
    • 软件访问硬件
      • 访问单个引脚
      • 以总线方式访问硬件(更常见)
        1. 地址对齐的16位操作
        2. 地址不对齐的16位操作
        3. 8位读操作由16位拆分得到
        4. 32位读操作由16位组合得到
        5. 16位写操作
    • GPIO操作实例

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。