嵌入式系统设计(裸机嵌入式程序设计怎么快速理解(底层)

精英怪
广告

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

嵌入式系统设计(裸机嵌入式程序设计怎么快速理解(底层)

这里我从根据主要入口文件来几个方面阐述,入口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,中断向量的入口地址是不同的,异常处理方式可能也是有些区别,但总体思想还是一致的。所以,熟悉一种平台,再接触另一种平台,是可以借鉴和快速入门的。

发表评论

快捷回复: 表情:
AddoilApplauseBadlaughBombCoffeeFabulousFacepalmFecesFrownHeyhaInsidiousKeepFightingNoProbPigHeadShockedSinistersmileSlapSocialSweatTolaughWatermelonWittyWowYeahYellowdog
评论列表 (暂无评论,184人围观)

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