NXP RT1052 新建工程--库函数版

参考:IMX+RT开发实战指南

1、新建本地工程文件夹
新建4个文件夹

名称作用
doc用来存放程序说明的文件,由写程序的人添加
libraries存放的是库文件
project用来存放开发环境相关的工程文件
user用户编写的驱动文件


在本地新建好文件夹后,把准备好的库文件添加到相应的文件夹下,即从 SDK 固件库里面把这些文件拷贝到我们新建的工程下的文件夹里面。
 

doc

必读说明.txt。 这个文件我们自己手动新建, 可要可不要,主要为了方便以后对本工程编写说明。

libraries 
CMSIS 文件夹: 里面放着跟 ARM 内核有关的 CMSIS 标准库文件, 直接从固件库里面拷贝。

devices\MIMXRT1052\ cmsis_drivers 文件夹: RT1052 兼容 CMSIS 标准的部分外设库文件,直接从固件库里拷贝

devices\MIMXRT1052\ drivers 文件夹: RT1052 外设库文件, 直接从固件库里面拷贝。

devices\MIMXRT1052\ utilities 文件夹: RT1052 的常用调试工具,直接从固件库里面拷贝。

devices\MIMXRT1052\ xip 文件夹:使用 XIP 功能时需要的启动或加载驱动程序,直接从固件库里面拷贝。

fsl_device_registers.h、 MIMXRT1052.h、 MIMXRT1052.xml、MIMXRT1052_features.h、 system_MIMXRT1052.c 
和system_MIMXRT1052.h 文件: RT1052 固件库的全局文件,直接从固件库里面拷贝。

 

project 
gcc 文件夹: ARM GCC 编译器相关的启动文件及分散加载文件。
iar 文件夹: IAR 开发环境相关的启动文件及分散加载文件。
mcuxpresso 文件夹: MCUXpresso 开发环境相关的启动文件及分散加载文件。

mdk 文件夹: MDK(Keil)开发环境相关的启动文件及分散加载文件。
(1) 从 SDK 的 boards\evkbimxrt1050\demo_apps\hello_world\mdk 目录复制如下文件加入到 mdk 文件夹:

evkbimxrt1050_flexspi_nor.ini、 evkbimxrt1050_ram.ini、evkbimxrt1050_sdram_init.ini、 evkbimxrt1050_sdram_txt_init.ini
(2) 新建 nor_txt_ram 文件夹,在该文件夹下再分别新建空的 Listings 及
Objects 文件夹。


user 
bsp 文件夹:用来放置以后编写的驱动文件,手动新建空的文件夹待用。

xip 文件夹:用来放置 FLASH 程序存储器、启动相关的文件。该目录下的文件是我们根据官方的 xip 文件进行定制的,它包含以下文件:
fire_imxrt1052_sdram_ini_dcd.c\h  fire_imxrt1052_spiflash_config.c\h   fsl_flexspi_nor_boot.c\h当你自己尝试新建工程时,
请直接从我们的这个例程中直接复制所有xip 目录中的内容,这部分与官方的是不一样的。

board.c\h、 clock_config.c\h、 peripherals.c\h 及 pin_mux.c\h 文件:直接从SDK 的 boards\evkbimxrt1050\project_template 目录中拷贝。

main.c 文件: main 函数文件, 这个文件我们自己手动新建,不用固件库
里面配套的。

 复制 CMSIS 文件夹至工程的 libraries 目录

 

 复制固件库主体至工程的 libraries 目录

 

复制固件库主体至工程的 libraries 目录,并将arm重命名为mdk,gcc重命名为armgcc,内容不变。
 

复制调试相关的文件至工程的 mdk 目录
 

在 mdk 目录下创建包含 Listings 和 Objects 的 nor_txt_ram 文件夹
 

 

复制官方 demo 的 project_template 文件至工程的 user 目录(新建空BSP文件夹,空的main.c文件待用,其他文件从SDK中复制到工程目录。)

 

xip目录文件比较特殊,根据官方目录文件进行定制的。定制时需要根据开发板中的 FLASH 存储器芯片进行了修改。测试的时候可以拷贝过去。

开始新建工程:

 

把 MDK 的工程文件保存至 project\mdk 目录下

 

选择NXP芯片型号。(如果没有出现相应的芯片型号,则KEIL5 没有添加 RT1052 芯片包),请去ARM官网下载。见https://blog.csdn.net/ldinvicible/article/details/90287774文档描述。

 

在线添加是从 ARM 的官方网站下载, 且其服务器在国外,下载会非常慢,点击 Cancel 关闭。

1、将新建的工程中添加7个组文件夹,用来存放各种不同的文件。文件从本地建好的工程文件夹下获取,双击组文件夹就会出现添加文件的路径,然后选择文件即可,添加时主要是添加 C 源文件和 S 汇编文件, H 头文件可以不添加,正常编译工程后相应的头文件会自动添加到包含它的 C 文件“+”号下。

CMSIS存放 system_MIMXRT1052.c 文件
startup存放汇编的启动文件: startup_MIMXRT1052.s
drivers与 RT1052 外设相关的库文件
fsl_common.c
fsl_clock.c
fsl_gpio.c
fsl_lpuart.c
fsl_iomuxc.h
以及以后会追加的 fsl_xxx.c 文件(xxx 代表外设名称)
utilities存放开发调试相关的工具文件
fsl_assert.c
fsl_debug_console.c
fsl_notifier.c
fsl_sbrk.c
fsl_shell.c
fsl_str.c
fsl_log.c
fsl_io.c
board存放官方的板级配置文件
board.c
clock_config.c
pin_mux.c
user用户编写的文件:
main.c: main 函数文件,暂时为空
xip启动和程序存储器相关的文件:
fire_imxrt1052_sdram_ini_dcd.c
fire_imxrt1052_spiflash_config.c
fsl_flexspi_nor_boot.c
doc必读说明.txt:程序说明文件,用于说明程序的功能和注意事项等

 

添加后效果

 

 

 

配置魔术棒选项卡

很多人串口用不了 printf 函数,编译有问题,下载有问题,都是这个步骤的配置出了错。
 

Target 选项卡
在 Target 选项卡中选中微库“Use MicroLIB”,为的是在日后编写串口驱动的时候可以使用 printf 函数。而且有些应用中如果用了 RT1052 的浮点运算单元 FPU,一定要同时开微库,不然有时会出现各种奇怪的现象。 FPU 的开关选项在微库配置选项下方的“Use Double Precision”中,默认是开的。

Output 选项卡
Output 中把输出文件夹定位到我们工程目录下的“mdk\nor_txt_ram\Objects”文件夹,这样编译后生成的文件就会被存储到该文件夹中。如果在编译的过程中生成 hex 文件,那么那 Create HEX File 选项勾上。把“Browse Information”选项取消勾选,否则编译时间非常长,取消勾选后会无法使用程序的“Go To Definition…”的跳转定义浏览功能,需要时可把它勾选上然后重新编译程序。

Listing 选项卡
在 Listing 选项卡中把输出文件夹定位到我们工程目录下的“mdk\ nor_txt_ram \Listings”文件夹,编译后生成的链接信息文件就会被保存至该目录。

C/C++选项卡
在 C/C++选项卡中添加预定义宏及编译器编译的时候查找的头文件路径;.

1、在“Define”框中添加预定义宏。此处我们加入如下的宏(在输入时不要加回车,此处添加回车只是方便阅读)
CPU_MIMXRT1052DVL5B,XIP_EXTERNAL_FLASH=1,XIP_BOOT_HEADER_ENABLE=1,XIP_BOOT_HEADER_DCD_ENABLE=1,PRINTF_FLOAT_ENABLE=1,SCANF_FLOAT_ENABLE=1,PRINTF_ADVANCED_ENABLE=1,SCANF_ADVANCED_ENABLE=1

注意两个宏之间使用英文逗号分隔开
 宏“CPU_MIMXRT1052DVL5B” , 用于指定本程序的 CPU,在固件库“fsl_device_registers.h”文件中有根据该宏来决定对应芯片代码的预编译分支。
 宏 XIP_EXTERNAL_FLASH=1, XIP_BOOT_HEADER_ENABLE=1,XIP_BOOT_HEADER_DCD_ENABLE =1” , 用于指示本程序的代码存储在外部的 FLASH 存储器中,且使用 XIP 组中的启动配置(XIP 组下的各文件包含这些宏的判断分支),在工程中的 clock_config.c 文件会根据XIP_EXTERNAL_FLASH 宏来决定是否开启 flexspi 外设的时钟。
 宏“PRINTF_FLOAT_ENABLE=1, SCANF_FLOAT_ENABLE=1,PRINTF_ADVANCED_ENABLE=1, SCANF_ADVANCED_ENABLE=1”,它们用于配置库函数重新定义的“PRINTF”和“SCANF”函数是否支持浮点数的功能。
 

2、在“Include Paths”处添加头文件路径。固件库依赖非常多的头文件
     ..\..\libraries\CMSIS\Include
     ..\..\libraries\drivers
    ..\..\libraries\utilities
    ..\..\libraries\utilities\str
     ..\..\libraries\utilities\log
     ..\..\libraries\utilities\io

 ..\..\libraries\utilities
     ..\..\libraries\xip

 ..\..\libraries\
      ..\..\user
      ..\..\user\bsp

 

在“Misc Controls”处添加编译器配置。为了正常编译或减少部分编译警告提示,需要在此处增加如下配置。

--library_interface=armcc --library_type=standardlib --diag_suppress=66,1296,186

Asm 选项卡
在 Asm 选项卡中包含有 Asm 汇编器相应的配置
 

Linker 配置

Linker 选项卡包含对链接器的配置,链接器对 C/C++及 ASM 汇编器生成的*.o 目标文件链接得到最终的可执行程序文件。


在这个 Linker 选项卡中我们主要设置链接使用的存储器分配文件。 KEIL 会根据我们的芯片型号设置一个默认的存储器分配文件,但我们要使用的是前面复制到工程目录 mdk 下的 MIMXRT1052xxxxx_flexspi_nor 文件,所以需要重新配置,配置方法是在 Linker 选项框中取消勾选“Use Memory Layout from TargetDialog”选项,然后打开 Scaltter File 栏右侧的按钮把 MIMXRT1052xxxxx_flexspi_nor 添加进去。
 

修改存储器分配文件。这个 MIMXRT1052xxxxx_flexspi_nor 存储器分配文件是适配官方评估版的,针对特定开发板的存储器,需要进行修改,点击选项框中的“Edit”按钮会弹出该文件的内容,然后直接编辑即可,
 

添加忽略警告提示。在同样的选项框下“disable Warnings”添加对忽略 6314 类型警告的配置,否则在后面编译时经常会提示分配的部分存储器没有使用的警告,比较烦人,可以忽略。
 

添加 Misc controls 配置。在分散加载文件中部分存储器节区是属于 xip 组文件的,该组文件中的内容与主体程序无调用关系,所以为了防止被编译器优化而删除,需要在 Misc controls 配置中添加如下保持节区的指令:
--keep=*(.boot_hdr.conf)
--keep=*(.boot_hdr.ivt)
 

 

Debug 选项配置

 

Utilities 选项配置

 

Debug Settings 选项配置

选择目标存储器下载算法
在“Debug Settings”弹出的“FLASH Download”选项卡中还需要选择目标存储器下载算法,具体要根据板子上使用的 FLASH 型号来决定。

设置下载算法空间(库函数版)
 

Flash Download 页面的说明
 

给 main 文件添加内容
可以从 SDK 中的如下目录中拷贝样例程序“hello_world”的 hello_world.c 文件内容至此进行测试
 

 

编译下载

编译报错,选择的芯片和宏不对应,增加宏CPU_MIMXRT1052DVL6A,

头文件要增加完,否则编译不成功     

..\..\libraries\CMSIS\Include
     ..\..\libraries\drivers
    ..\..\libraries\utilities
    ..\..\libraries\utilities\str
     ..\..\libraries\utilities\log
     ..\..\libraries\utilities\io

 ..\..\libraries\utilities
     ..\..\libraries\xip

 ..\..\libraries\
      ..\..\user
      ..\..\user\bsp

使用 RAM 及 SDRAM 版本的注意事项
由于“debug” 版本的工程仅用于调试且并没有定制下载的相关配置,所以要使用时不能像 NorFlash 版本的工程那样直接点击 Load 按钮下载程序到开发板运行,而只能点击Debug 按钮进入调试模式进行仿真。
 

 

  • 6
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值