裸机嵌入式程序设计,类似于操作系统的设计了,需要从上电第一条指令开始,对整个生命周期全盘设计。

这里我从根据主要入口文件来几个方面阐述,入口start.s,中断处理interrupt.c,主程序入口main.c。当然还有lds链接指示文件和Makefile编译指示文件。
Start.s:
主要负责初始化一个合理完善的最小环境并提供给用户程序。这个环境,主要包括软件初始化和硬件初始化。
1、软件初始化
异常入口初始化(异常使能、异常向量初始化)
程序数据段初始化(如BSS段,是用户程序前最后的机会初始化该段)
堆栈初始化
2、硬件初始化
必要的IO设置
Interrupt.c:
主要负责用户中断使能,中断处理。在这个文件中,用户需对不同异常进行个性化的定制处理,以期达到最佳目的。
1、中断处理总调度入口
2、各个中断服务子程序
Main.c:
主程序入口文件,在start.s最后一步,一般情况都是直接跳到main.c的main函数,以此作为用户程序入口。
在main函数中,用户可以进一步调度中断初始化,各个设备初始化等。
Main函数最后,一般都是进入任务调度。
其他功能的C文件:
不同功能进行不同C文件API的封装,在main函数或者其他任务调度中进行调用。
*.lds:
此文件是程序编译链接可以指定的脚本文件,用户可以在此定制,以期适合自己的平台。
1、平台类型
2、程序入口符号指定
3、不同段的地址指定
Makefile:
此文件是编译控制文件,用户可进行定制以期得到最佳控制。
/*说明*/
不同平台下,如ARM和MIPS,中断向量的入口地址是不同的,异常处理方式可能也是有些区别,但总体思想还是一致的。所以,熟悉一种平台,再接触另一种平台,是可以借鉴和快速入门的。


还没有评论,来说两句吧...