摘要:
以下裸机程序基于GT2440,编译器为arm-linux-gcc-4.4.3。 程序结构:程序由sdram.S和main.c两个文件组成,sdram.S文件完成一些初始化工作,如时钟初始化,内存控制器初始化,拷贝第二阶段代码到sdram等;main.c负责循环点亮、熄灭四个LED。 程序流程:上电时,cpu自动跳到复位异常向量入口,在复位异常处理里首先关闭看门狗,接着初始化系统时钟,初始化内存控制器,拷贝第二阶段代码到sdram,最后跳转到sdram里执行main()函数。sdram.S: 1 #define MEM_REG_START 0x48000000 2 #defi... 阅读全文
摘要:
以下裸机程序基于GT2440,编译器为arm-linux-gcc-4.4.3。 程序布局:源代码由interrupt.S和led.c两个文件组成,interrupt负责初始化工作,led.c里定义了中断处理程序。 程序流程:首先安装异常向量表,在复位异常里关闭看门狗,然后进入普通中断模式,设置普通中断的栈指针(为C语言写的中断处理程序做准备),接着设为特权模式,初始化中断(设置IO管脚,开启中断),最后CPU一直死循环等待外部中断触发。当外部中断到来时,先保护现场,跳到led.c里的handle_irp()函数,在该函数里将四个LED点亮,接着返回,最后恢复现场,返回到死循环。int... 阅读全文