购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.4.3 <MQX>的下级文件夹解析

在MQX样例工程移植时,用户需要了解在MQX文件下,哪些需要更改,哪些无须更改。若CPU相同,表2-5中给出了用户更改权限,用户可更改内容的文件夹有app、bsp、config、io;用户无须更改内容的文件夹有include、kernel、psp、fio、string。

1.<app>

app文件夹下存放着用户编写的任务函数,是MQX下编程的主要文件夹。该文件夹所包含的文件名见表2-6,其中“app_inc.h”、“task_main.c”、“task_templates.c”这3个文件名保持不变,内容可修改。“task_xxx.c”为自定义任务,“xxx”代表具体任务名(小写)。

表2-6 app文件夹的内容

2.<bsp>

bsp文件夹存放着与硬件开发板相关的程序代码文件,这些文件根据芯片的外设模块及电路板进行设计,它包含了MQX操作系统启动过程中硬件系统(时钟、中断控制等)的初始化。为了提高系统的运行效率,对应用程序中可能用到的外设模块的初始化过程也被安排在bsp下相关文件中。表2-7列出了bsp文件夹的内容。

表2-7 bsp文件夹的内容

(1)bsp.h:该文件包含具体硬件中使用的设备驱动头文件,如<io.h>、<io_gpio.h>、<serial.h>;输入输出层头文件<fio.h>;各模块引脚资源复用初始化函数的声明(参见“init_gpio.c”)等。根据项目需求,可以 添加、删除、修改 该文件内容。

(2)bsp_config.h:该文件包含具体硬件相关的配置信息,如处理器存储系统边界定义、中断向量表位置、时钟配置、开发板小灯引脚配置、串口相关属性(串口号、波特率和串口队列长度等)配置等。根据项目需求,可以 添加、删除、修改 该文件内容。

(3)bsp_prv.h:该文件包含<init_bsp>中函数体的声明,硬件驱动模块初始化结构体信息。用户根据项目需求,可以 添加、删除、修改 该文件内容。

(4)init_bsp.c:该文件为板级支持包初始化文件。用于实现MQX中断处理系统的环境初始化、SysTick初始化、系统时钟初始化、所需设备驱动的安装、I/O子系统初始化和默认标准I/O流初始化等。用户根据项目需求,可以 添加、删除、修改 该文件内容。

(5)mqx_init.c—MQX初始化信息文件。该文件用于MQX 结构体默认信息初始化。 需要修改。

(6)init_xxx.c:初始化各驱动模块基本信息。模块寄存器的初始化分为两个部分,一部分是基本信息,一旦配置完成,不再修改;另一部分是功能信息,根据需求配置其他寄存器实现模块的不同功能。本文件是模块基本信息的配置(即前者),可在“…\mqx\source\bsp\twrK60”找到对应模块的基本信息。开发初始 修改 ,一旦确定,不再更改。

3.<config>

该配置文件夹存放对MQX系统进行编译配置的头文件,通过对这些头文件的配置,可以裁剪MQX功能。MQX样例模板系统编译配置方案为“用户自定义编译选项”+“small_ram_config.h”+“verif_enabled_config.h”,如表2-8所示,其中,“用户自定义编译选项”包括编译启用串口模块号、禁用编译中断配置功能等,用户可根据实际需求修改“用户自定义编译选项”文件下的内容。

飞思卡尔官方提供maximum_config.h、small_ram_config.h、smallest_config.h三个系统编译配置文件,以实现MQX不同复杂度编译配置要求。maximum_config.h实现最完全编译配置功能;small_ram_config.h用于内存较少的设备,部分功能裁剪;smallest_config.h为最精简功能配置。这三个配置文件 不需要修改 。在样例模板使用small_ram_config.h配置,若用户需要使用其余两个配置方案,可以将其内容复制至small_ram_config.h中,覆盖之前的配置方案。

表2-8 用户编译系统配置文件夹内容

verif_enabled_config.h主要用于内核的检查验证。该配置文件的存在,是因为在官方三个配置方案中部分功能默认不开启,如“MQX_CHECK_VALIDITY”为0,需要在不修改官网配置方案的前提下,实现该功能的开启。该配置文件给出了内核检查验证的基本要素,通常不需要修改。

在user_config.h配置文件中,可以通过宏定义常量的方式自定义配置关闭和开启对应的模块,如开启串口4(uart4)和关闭低功耗功能的配置如下。

4.<io>

在“io”系统文件夹中,存放着MQX官方设备驱动程序,如serial、adc等,这里不再一一列出,官方驱动源码请参考“…\mqx\source\io”目录。同时在该目录下,存放输入输出子系统接口函数,如表2-9所示。

表2-9 输入输出子系统接口函数文件

io文件目录下的修改,只是在该目录下添加、移除功能驱动模块,而不是意味着可修改官方驱动和表2-9中六个输入输出子系统接口函数,不建议修改官方驱动库。

5.<fio>

在fio文件夹下包含了关于POSIX标准文件输入输出API函数的实现源码,每个文件名对应着该函数的API调用名,该文件内容不必修改,fio文件夹的内容如表2-10所示。

理解fio文件夹的函数,可以先看include中的fio.h、fio_prv.h。在fio文件中对所有供外部调用的函数进行了声明,在fio_prv.h文件中对内部调用的函数进行声明,一般不提供外部调用。

表2-10 fio文件夹的内容

通过fio.h中可以看到MQX对标准C库中的函数进行了宏定义,访问标准C就是访问fio文件夹中的源码的函数。

6.<include>

在“include”文件夹下存放了MQX系统内核源码的所有头文件,如事件组件头文件event.h、轻量级内存管理私有头文件lwmem_prv.h、MQX默认配置头文件mqx_cnfg.h等。

其中,MQX默认配置头文件mqx_cnfg.h中定义了很多MQX默认配置,这个文件内容不可添加、删除、修改,如需更改其默认配置,请在“…\MQX\config\user_config.h”中更改。

7.<kernel>

在kernel文件夹下存放了MQX内核服务的源码文件,每个功能组件的服务被归类组织在以组件名称命名的源文件中,例如,event.c文件中就包含了所有关于MQX事件服务API函数的实现源码。官方MQX更新版本后,可将新kernel文件夹的内容,完全覆盖相关工程中的kernel文件夹中的内容,见表2-11, 该文件夹内容不可添加、删除、修改。

表2-11 ernel文件夹的内容

8.<psp>

处理器支持包(Processor Support Package,PSP)是MQX对处理器功能的抽象。本书主要基于Cortex-M架构的MQX工程框架模板,其PSP来自“..\Freescale_MQX_4_1\mqx\source\psp\cortex_m”目录,其内容见表2-12。此外,在MQX中,每种不同架构的处理器架构均对应各自独立的文件夹,MQX目前还支持架构包括ARM Cortex-A、PowerPC、ColdFire等架构处理器。 当CPU不改变时,该文件夹内容不必添加、删除、修改。

9.<string>

在string文件夹下包含MQX系统内核中使用的自定义实现的字符串处理函数。由于使用标准库中的部分字符串处理函数未针对嵌入式应用进行优化,因此在MQX内核自行实现这些函数,主要数字进制转换函数_str_mqx_uint_to_hex_string和获取字符串长度函数_strnlen。该目录下有str_utos.c和stn_len.c两个文件,其中str_utos.c用于把整型变成字符串类型,stn_len.c文件用于计算字符串的长度。 该文件夹内容不必添加、删除、修改。

表2-12 psp文件夹的内容 kMNa6OYu+7sG9tW7r7Gx2+abQKYLTdkPpi6KtTnKApLUkDJOxYpqML3RIzX82eVW

点击中间区域
呼出菜单
上一章
目录
下一章
×