这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 板卡试用 » 【FRDM-MCXA156评测】2、rt-thread MCXA156 BSP制

共3条 1/1 1 跳转至

【FRDM-MCXA156评测】2、rt-thread MCXA156 BSP制作

助工
2024-11-10 10:58:36   被打赏 50 分(兑奖)     打赏

rt-thread官方版本已经支持了NXP的frdm-mcxa153、frdm-mcxn947、frdm-mcxn236这3个开发板。暂时没有MCXA156 BSP,那就自己做一个BSP吧。

比较一下FRDM-MCXA153和FRDM-MCXA156的资料,会发现两者很像。

FRDM-MCXA153

MCXA15x Arm® Cortex®-M33内核,高达128KB的闪存,高达32kB的RAM,带有8kB ECC LPLUART、LPSPI、LPI2C、FS USB、DMA和LDO

FRDM-MCXA156

MCXA156 Arm® Cortex®-M33 core Up to 1 MB flash with up to 128 KB RAM with 8 KB ECC, CAN-FD, FlexIO, FS USB, I3C, LPLUART, LPSPI, LPI2C, DMA and LDO

只是MCXA156比 MCXA153的ROM、RAM大一些,应该改一下就可以用。

1、从\rt-thread\bsp\nxp\mcx\mcxa\frdm-mcxa153拷贝一份到156

image.png


2、scf和ld

拷贝一份MCXA156_flash.scf(分散加载链接文件)到frdm-mcxa156\board\linker_scripts
MCXA156_flash.scf可以从156的例程keil工程中找到,156的RAM和ROM比153大,所以下面蓝框部分与153的scf不同。

image.png

同目录下还有一个MCXA153_flash.ld,可以改成MCXA156_flash.ld,用于gcc link,我没有用gcc,应该做如下修改吧。

image.png


3、frdm-mcxa156\board\MCUX_Config\board下文件

MCXA156 keil模板工程中拷贝4个文件到frdm-mcxa156\board\MCUX_Config\board,其实原来153有这4个文件,直接用也应该可以。

image.png

注意BOARD_InitPins(pin_mux.c)函数应该添加以下代码:

void BOARD_InitPins(void)
{
    /* PORT0: Peripheral clock is enabled */
    CLOCK_EnableClock(kCLOCK_GatePORT0);
	
    CLOCK_EnableClock(kCLOCK_GatePORT0);
    CLOCK_EnableClock(kCLOCK_GatePORT1);
    CLOCK_EnableClock(kCLOCK_GatePORT2);
    CLOCK_EnableClock(kCLOCK_GatePORT3);

    CLOCK_EnableClock(kCLOCK_GateGPIO0);
    CLOCK_EnableClock(kCLOCK_GateGPIO1);
    CLOCK_EnableClock(kCLOCK_GateGPIO2);
    CLOCK_EnableClock(kCLOCK_GateGPIO3);

    RESET_ReleasePeripheralReset(kLPUART0_RST_SHIFT_RSTn);
    RESET_ReleasePeripheralReset(kLPUART1_RST_SHIFT_RSTn);
    RESET_ReleasePeripheralReset(kLPUART2_RST_SHIFT_RSTn);

    RESET_ReleasePeripheralReset(kPORT0_RST_SHIFT_RSTn);
    RESET_ReleasePeripheralReset(kPORT1_RST_SHIFT_RSTn);
    RESET_ReleasePeripheralReset(kPORT2_RST_SHIFT_RSTn);
    RESET_ReleasePeripheralReset(kPORT3_RST_SHIFT_RSTn);

    RESET_ReleasePeripheralReset(kGPIO0_RST_SHIFT_RSTn);
    RESET_ReleasePeripheralReset(kGPIO1_RST_SHIFT_RSTn);
    RESET_ReleasePeripheralReset(kGPIO2_RST_SHIFT_RSTn);
    RESET_ReleasePeripheralReset(kGPIO3_RST_SHIFT_RSTn);


4、\frdm-mcxa156\board\Kconfig文件修改

这部分是给menuconfig用的

menu "Hardware Drivers Config"

config FRDM_MCXA156
    bool
    select FRDM_MCXA156_SERIES
    select RT_USING_COMPONENTS_INIT
    select RT_USING_USER_MAIN
    default y

menu "On-chip Peripheral Drivers"

    config BSP_USING_DMA
        bool "Enable DMA"
        select RT_USING_DMA
        default n

    config BSP_USING_PIN
        bool "Enable GPIO"
        select RT_USING_PIN
        default y

    menuconfig BSP_USING_UART
		bool "Enable UART"
		select RT_USING_UART
		default y
		select RT_USING_SERIAL
		if BSP_USING_UART
			config BSP_USING_UART0
				bool "Enable LPUART(UART0) as UART"
				default y

		endif


5、rt-thread\bsp\nxp\mcx\mcxa\Libraries

copy 一份MCXA153到MCXA156,将153都改成156

将156的SDK(FRDM-MCXA156\SDK_2_16_100_FRDM-MCXA156\devices\MCXA156\drivers)拷贝到bsp\nxp\mcx\mcxa\Libraries\MCXA156\MCXA156\drivers覆盖原来内容。

从156 SDK拷贝 startup_MCXA156.S 到bsp\nxp\mcx\mcxa\Libraries\MCXA156\MCXA156\arm

拷贝以下文件到bsp\nxp\mcx\mcxa\Libraries\MCXA156\MCXA156

image.png

6、修改keil模板文件template.uvprojx

回到bsp\nxp\mcx\mcxa\frdm-mcxa156

双击template.uvprojx进入keil

image.png

image.png

image.png

然后保存,keil模板就做好了。

7、menuconfig

GPIO和UART已经缺省选择了。

image.png

8、生成keil工程

image.png

9、修改main.c

int main(void)
{
#if defined(__CC_ARM)
    rt_kprintf("using armcc, version: %d\n", __ARMCC_VERSION);
#elif defined(__clang__)
    rt_kprintf("using armclang, version: %d\n", __ARMCC_VERSION);
#elif defined(__ICCARM__)
    rt_kprintf("using iccarm, version: %d\n", __VER__);
#elif defined(__GNUC__)
    rt_kprintf("using gcc, version: %d.%d\n", __GNUC__, __GNUC_MINOR__);
#endif

    rt_pin_mode(LED_PIN, PIN_MODE_OUTPUT);  /* Set GPIO as Output */
    rt_kprintf("FRDM-MCXA156 评测二 rt-thread配置\r\n");


    while (1)
    {
        rt_pin_write(LED_PIN, PIN_HIGH);    /* Set GPIO output 1 */
				rt_kprintf("LED_PIN is high\r\n");
        rt_thread_mdelay(500);               /* Delay 500mS */
        rt_pin_write(LED_PIN, PIN_LOW);     /* Set GPIO output 0 */
				rt_kprintf("LED_PIN is low\r\n");
        rt_thread_mdelay(500);               /* Delay 500mS */
    }
}


10、运行效果

image.png




关键词: FRDM-MCXA156     评测     rt-thread    

助工
2024-11-10 21:16:08     打赏
2楼

A156都出来了,前几天还看NXP那边有人在问有没有这板子


工程师
2024-11-11 09:51:00     打赏
3楼

适配流程清晰 学习一波


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]