随笔分类 -  裸机1-detail

裸机1
摘要:37.C与汇编混合编程 新建light.c: 修改start.S: 修改Makefile:加light.o 最后make成功,烧写成功。 同样,我们也可以在C函数里调用我们的汇编里面的函数: 修改start.S:把light_led申明为global: 在light.c中被调用: Make编译烧写到 阅读全文
posted @ 2016-02-14 10:31 cestlavie 阅读(374) 评论(0) 推荐(0) 编辑
摘要:36.从汇编到C(bl1到bl2) 从汇编跳转到C必须使用绝对跳转: 工程代码: 在Makefile中加入main.o: Start.S: Make编译: Main.c代码: #define GPKCON (volatile unsigned long*)0x7F008820 //volatile指 阅读全文
posted @ 2016-02-14 10:30 cestlavie 阅读(332) 评论(0) 推荐(0) 编辑
摘要:35.BSS段的知识 在C语言中,初始化的全局变量是存在数据段的,初始化的局部变量是存在栈中的,用malloc分配的空间是存在堆里的,未初始化的全局变量是存在bss段。 Hello.c: #include <stdio.h> int bssdata; int main(){ bssdata = 20 阅读全文
posted @ 2016-02-14 10:29 cestlavie 阅读(393) 评论(0) 推荐(0) 编辑
摘要:33.代码搬移 这节里的代码搬移是针对SRAM的: 起始地址: 2440的起始地址是0 6410的起始地址是0x0c000000. 210的起始地址是0x 6410: 210: 链接起始地址: 2440:0x30008000 6410:0x50008000 210:0x20008000 终点:就是l 阅读全文
posted @ 2016-02-14 10:28 cestlavie 阅读(264) 评论(0) 推荐(0) 编辑
摘要:34.栈的初始化 前面知道,uboot的第一阶段是用汇编代码来对硬件等进行初始化的。第二阶段是用C语言的。但是此时没有C语言的运行环境。而C语言的运行需要堆栈等资源。所以这一节是第二阶段的C语言环境运行的栈的初始化。 1.栈:是一种具有先进先出性质的数据组织方式,也就是说后存进去的先取出,后存进去的 阅读全文
posted @ 2016-02-14 10:28 cestlavie 阅读(1045) 评论(0) 推荐(0) 编辑
摘要:32.210内存的知识 210可寻址的空间是4GB大小,内存的起始地址是20000000,前面知道2440使用的内存是SDRAM,6410使用的内存是DDR,这里210使用的是DDR2.在210的地址空间中零地址处跟6410一样也是映射镜像区,例如当选择从NandFlash启动的使用,就会把IROM 阅读全文
posted @ 2016-02-14 10:27 cestlavie 阅读(371) 评论(0) 推荐(0) 编辑
摘要:31.6410内存的知识 6410的地址空间分布: S3C6410处理器拥32位地址总线,其寻址空间为。其中高为保留外设区,低2GB区域又可划分为两部分:主存储区和外设区。 外设主要是寄存器所在的地址。 主存储区分为:Boot镜像区、内部存储区、静态存储区、保留区、动态存储区: Boot镜像区:这个 阅读全文
posted @ 2016-02-14 10:25 cestlavie 阅读(484) 评论(0) 推荐(0) 编辑
摘要:30.2440内存的知识 首先看2440的地址线:mini2440原理图.pdf 2440的芯片提供了27根地址线=128M。 S3c2440芯片对外提供的引脚上,只给出了27根地址线addr[0:26].这27根引脚地址线,只能访问128M的外设空间。 为了扩大外设的访问范围,S3c2440芯片又 阅读全文
posted @ 2016-02-14 10:24 cestlavie 阅读(405) 评论(0) 推荐(0) 编辑
摘要:29.内存的基础知识 内存的分类: 内存由于具备访问速度快,访问方式简单等优点,成为了PC或者是嵌入式硬件平台上不可或缺的元件。在开始学习如何使用内存之前,非常有必要先了解一下内存的分类: DRAM:它的基本原件是小电容,电容可以在两个极板上保留电荷,电容就是通过电荷来保存信息的,为了保持数据不丢失 阅读全文
posted @ 2016-02-14 10:23 cestlavie 阅读(260) 评论(0) 推荐(0) 编辑
摘要:28.时钟初始化 ARM系统时钟初始化: 这就需要知道什么是时钟脉冲信号,什么是时钟频率,什么是时钟源。 时钟脉冲信号: 时钟脉冲信号:按一定的电压幅度,一定的时间间隔连续发出的脉冲信号。时钟脉冲信号是时序逻辑的基础,它用于决定逻辑单元中的状态何时更新。数字芯片中众多的晶体管都工作在开关状态,它们的 阅读全文
posted @ 2016-02-14 10:22 cestlavie 阅读(647) 评论(0) 推荐(0) 编辑
摘要:27.点亮led的操作 Led可以作为我调试程序的工具:在嵌入式系统软件,例如Bootloader和kernel,在开发初期,由于串口等硬件尚未被初始化,因此调试手段相当有限,这时候可以采用Led来作为调试手段。 OK6410有关led的原理图: 从上图知道,要让led发光二极管,就是从右到左导通, 阅读全文
posted @ 2016-02-14 10:18 cestlavie 阅读(537) 评论(0) 推荐(0) 编辑
摘要:26.核心初始化之关闭MMU和cache 下面看看ARM存储体系: 可以看到速度最快的是处理器和内部寄存器,他们的数量很少,价格很昂贵。接着是TCM紧耦合存储器:cache和main memory。速度最慢的是外部存储介质:Flash和SD卡等。 CACHE: 上面是两种访存的两种机制,一种是处理器 阅读全文
posted @ 2016-02-14 10:17 cestlavie 阅读(899) 评论(0) 推荐(0) 编辑
摘要:25.核心初始化之中断屏蔽-210 在210中屏蔽中断的机制和6410是一样的。而且两者都是向量中断,很多中断都是硬件实现的,不像2440。 但是在210中的中断屏蔽寄存器有4个: 四组屏蔽寄存器的地址: 所以屏蔽中断就是把上面的四个屏蔽寄存器设置为全1,设置为0仍是没有影响。 代码实现: 编译: 阅读全文
posted @ 2016-02-14 10:15 cestlavie 阅读(192) 评论(0) 推荐(0) 编辑
摘要:24.核心初始化之中断屏蔽-6410 打开6410的芯片手册,在12.VECTORED INTERRUPT CONTROLLERS向量中断控制寄存器。向量中断(6410、210)很多时候是使用硬件来完成中断的跳转的。 下面的最后一个寄存器VICxINTENABLE,功能是Interrupt Enab 阅读全文
posted @ 2016-02-14 10:14 cestlavie 阅读(216) 评论(0) 推荐(0) 编辑
摘要:23.核心初始化之中断屏蔽-2440 在上一节中,我在设置关闭看门狗的时候,已经把WTCON的[2]设置为0,屏蔽了中断。如下图: 这一节是要屏蔽中断寄存器: 下面是2440芯片处理中断的机制: 中断屏蔽寄存器: 可以看到,只要把中断对应的中断屏蔽寄存器对应的位置为1即可。所以屏蔽中断就是往中断屏蔽 阅读全文
posted @ 2016-02-14 10:13 cestlavie 阅读(252) 评论(0) 推荐(0) 编辑
摘要:22.核心初始化之看门狗 看门狗定时器,在嵌入式领域,有些设备需要工作一些极端的环境,就是人很少到或者很难到的地方。在长期的运作中,难免会出现故障死机的情况,这时,如果派人去查看情况,耗费耗时等,所以人们就设置了一种机制,就是系统里有一个重启的机制叫看门狗定时器。它工作的方式:就是系统的watchd 阅读全文
posted @ 2016-02-14 10:12 cestlavie 阅读(451) 评论(0) 推荐(0) 编辑
摘要:21.核心初始化之svc模式 要设置系统工作svc特权模式,从前面的学习知道这需要设置CPSR程序状态寄存器。 在ARM Architecture Reference Manual.pdf文档中,2.Programmers' Model的2.5.Program status register。 可以 阅读全文
posted @ 2016-02-14 10:11 cestlavie 阅读(1207) 评论(0) 推荐(0) 编辑
摘要:20.核心初始化之异常向量表 一、异常向量表: 包含:1.异常定义 2.异常类型 3.异常入口 4.向量表 首先异常定义,在ARM Architecture Reference Manual.pdf文档中,2.Programmers' Model的2.6.Exceptions异常: 异常:因为内部或 阅读全文
posted @ 2016-02-14 10:10 cestlavie 阅读(813) 评论(0) 推荐(0) 编辑
摘要:19.Bootloader框架设计 在前面的uboot代码分析知道,uboot的启动有三个步骤BL0,BL1,BL2。由于BL0是固化程序,厂商提供的,所以不用考虑。所以Bootloader框架就剩下设计BL1和BL2了。 2440开发板: 6410和210: 阅读全文
posted @ 2016-02-14 10:09 cestlavie 阅读(310) 评论(0) 推荐(0) 编辑
摘要:18.U-boot的工作流程分析-210 210启动流程: 前面在2440和6410中虽然有BL1和BL2之分,210也是一样的: 阅读全文
posted @ 2016-02-14 10:08 cestlavie 阅读(219) 评论(0) 推荐(0) 编辑