随想录(学习nxp rt1052 soc)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
在国内市场上,stm32是谜一样的存在。工控领域,除了51单片机,大概就是stm32的应用最广。其实不管是在消费类玩具电子,还是工业生产、物联网,stm32都有它的一席之地。近年来,随着m7的发布,现在stm32的最高频率甚至可以达到600M,这个频率基本上可以运行uclinux了,不再是传统意义上的单片机了。最近花了一些时间学习m7,由于意法半导体出的m7芯片比较晚,之前大家学的比较多的还是nxp公司的rt1052系列,所以我也不例外。但是stm32f系列和rt系列差不多,掌握一个,另外一个学习也不难。
1、开发板
关于m7的开发板,可以选用野火或者是正点原子。
2、软件开发环境
一般都选用MDK开发。
3、连接方法
电源线连接开发板电源,usb线作为串口打印,还有就是jtag、作为版本烧录或者调试使用,
4、地址分布
地址分布是学习soc很重要的一个方面,但是好像很多朋友都不是太注意
0x0~0x20000, 0x20000000~0x20060000,内部ram空间
0x80000000~ sdram空间
0x60000000~ spiflash 映射的空间,即能被cpu直接访问的空间
其他外设空间,比如GPIO1是0x401B8000
5、关键的几个配置文件
FLM文件,只有选择合适的FLM文件,jtag才能将代码下载到norflash当中
ini文件,jtag加载程序的时候需要执行的文件,比如文件中的_loadDcdcTrim就是用来进行dcdc电压设置的
scf文件,keil使用的链接脚本,类似于gcc下面的ld文件
6、KEIL工程中重要的代码文件
fire_imxrt1052_sdram_ini_dcd.c,sdram初始化文件
fire_imxrt1052_spiflash_config.c,spi flash初始化文件,告诉soc如何用线性方式读取指令
fire_flexspi_nor_boot.c,配置文件,包含了上述两个文件的一些地址信息
当然startup_MIMXRT1052.s和main.c也比较重要,但是它们的逻辑简单,应该一下子就学会了。
7、KEIL常用的一些选项
DOWNLOAD(F8),烧录按钮
START/STOP DEBUG(ctrl + F5),调试按钮
Options for taget,工程属性设置按钮
8、CMSIS包
现在MCU的开发方式最好依赖于API进行开发,CMSIS就是其中一种。这样在换不同厂家的mcu时,代价也小一点。当然,如果大家还是对硬件很感兴趣,可以调试的时候单步执行下去,效果是一样的,问题不是很大。
比如说,如果有一个最简单的gpio操作,一般是这么安排的,首先选择pin、设定pin属性,最后设置gpio属性,这样就可以完成一个基本的gpio操作。我们可以引用一下野火的代码来说明这个问题,
/**
* @brief 初始化LED相关IOMUXC的MUX复用配置
* @param 无
* @retval 无
*/
static void LED_IOMUXC_MUX_Config(void)
{/* 核心板的LED灯 */ /* 设置引脚的复用模式为GPIO,不使用SION功能 */IOMUXC_SetPinMux(CORE_BOARD_LED_IOMUXC, 0U);/* RGB LED灯,使用同样的IOMUXC MUX配置 */ IOMUXC_SetPinMux(RGB_RED_LED_IOMUXC, 0U); IOMUXC_SetPinMux(RGB_BLUE_LED_IOMUXC, 0U); IOMUXC_SetPinMux(RGB_GREEN_LED_IOMUXC, 0U);
}/**
* @brief 初始化LED相关IOMUXC的MUX复用配置
* @param 无
* @retval 无
*/
static void LED_IOMUXC_PAD_Config(void)
{/* 核心板的LED灯 */ IOMUXC_SetPinConfig(CORE_BOARD_LED_IOMUXC, LED_PAD_CONFIG_DATA); /* RGB LED灯,使用同样的IOMUXC PAD配置 */ IOMUXC_SetPinConfig(RGB_RED_LED_IOMUXC, LED_PAD_CONFIG_DATA); IOMUXC_SetPinConfig(RGB_GREEN_LED_IOMUXC, LED_PAD_CONFIG_DATA); IOMUXC_SetPinConfig(RGB_BLUE_LED_IOMUXC, LED_PAD_CONFIG_DATA);
}/*** @brief 初始化LED相关的GPIO模式* @param 无* @retval 无*/
static void LED_GPIO_Mode_Config(void)
{ /* 定义gpio初始化配置结构体 */gpio_pin_config_t led_config; /** 核心板的LED灯,GPIO配置 **/ led_config.direction = kGPIO_DigitalOutput; //输出模式led_config.outputLogic = 1; //默认高电平led_config.interruptMode = kGPIO_NoIntmode; //不使用中断/* 初始化 LED GPIO. */GPIO_PinInit(CORE_BOARD_LED_GPIO, CORE_BOARD_LED_GPIO_PIN, &led_config);/* 使用同样的LED config配置RGB LED灯 */GPIO_PinInit(RGB_RED_LED_GPIO, RGB_RED_LED_GPIO_PIN, &led_config);GPIO_PinInit(RGB_GREEN_LED_GPIO, RGB_GREEN_LED_GPIO_PIN, &led_config);GPIO_PinInit(RGB_BLUE_LED_GPIO, RGB_BLUE_LED_GPIO_PIN, &led_config);
}/*** @brief 初始化控制LED的IO* @param 无* @retval 无*/
void LED_GPIO_Config(void)
{/* 初始化GPIO复用、属性、模式 */LED_IOMUXC_MUX_Config();LED_IOMUXC_PAD_Config();LED_GPIO_Mode_Config();
}
9、MCU支持的外设
目前rt soc支持GPIO、UART、IIC、CAN、Norflash、NAND flash、SD、Ethernet、Camera等很多设备,基本上除了视频、音频、3d、编解码之外,MCU可以完成你需要的任何功能。
10、更多的第三方包
除了CMSIS,我们还可以在野火的开发包里面看到很多的中间件,比如rtos、fatfs、usb、sd、lwip、emwin等等,大家可以根据自己的需要灵活使用。当然这么高的cpu频率,使用时多做一些复杂的算法计算,效果应该还是不错的。
随想录(学习nxp rt1052 soc)相关推荐
- NXP RT1052 eFlexPWM—灵活的增强型 PWM例程
参考IMX+RT开发实战指南 eFlexPWM 初始化结构体详解 结构体成员用于设置PWM 基本工作参数,并由 FLEXPWM 初始化配置函数调用,初始化结构体中设定的参数将会设置定时器相应的寄存器, ...
- 【SoC FPGA学习】一、AC501-SOC FPGA开发板介绍
少一些功利主义的追求,多一些不为什么的坚持. [SoC FPGA开发常见问题合集]SoC FPGA开发过程中常见问题 本系列学习笔记基于小梅哥SOC Cyclone V SoC开发板. 一. ...
- 简谈:如何学习FPGA
一.入门首先要掌握HDL(HDL=verilog+VHDL). 第一句话是:还没学数电的先学数电.然后你可以选择verilog或者VHDL,有C语言基础的,建议选择VHDL.因为verilog太像 ...
- 代码随想录Day04 | LeetCode24. 两两交换链表中的节点、LeetCode19. 删除链表的倒数第N个节点、LeetCode160. 链表相交、LeetCode142. 环形链表Ⅱ
LeetCode24. 两两交换链表中的节点 力扣题目链接 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点.你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换). 示例 ...
- 代码随想录Day01 | LeetCode704.二分查找、LeetCode27.移除元素
数组理论基础 数组是存放在连续内存空间上的相同类型数据的集合. 数组可以方便的通过下标索引的方式获取到下标下对应的数据 需要两点注意的是 数组下标都是从0开始的. 数组内存空间的地址是连续的 正是因为 ...
- NXP iMX8 Ubuntu 系统移植及 ROS 应用
By Toradex 胡珊逢 1). 简介 NXP iMX8 是NXP近期发布的基于Cortex-A72.Cortex-A53等性能非常强大的的ARM处理器, 默认 BSP 是基于 Yocto 工程编 ...
- 零基础入门FPGA,如何学习?
问:本人零基础,想学FPGA,求有经验的人说说,我应该从哪入手,应该看什么教程,应该用什么学习板和开发板,看什么书等,希望有经验的好心人能够给我一些引导. 如果想速成,那就上网看视频吧,这样主要是面 ...
- nvdla学习笔记_神经网络加速器NVDLA顶层接口与工作流程
Nvidia的开源神经网络加速器NVDLA已经在GitHub上面存在两个多月的时间了,而距离软件Software Stack的开源也差不多提上了日程.近期,NVDLA的代码库中已经更新了System ...
- 基于NXP iMX7 ARM处理器部署FreeRTOS实时操作系统
1). 简介 FreeRTOS是广泛使用的开源实时操作系统, 被众多芯片厂商包括NXP所支持, 本文就展示在NXP iMX7 ARM处理器上面的M4核心上面部署FreeRTOS. NXP iMX7 A ...
最新文章
- 在SolidWorks 3D CAD中构建乐高直升机
- linux下怎么修改mysql的字符集编码
- 使用jdk 自带的jarsigner 签名工具签名的apk 和android规范有区别
- python snmp采集交换机信息_Python采集12星座信息,分析出12星座的各个特点
- Stanford Parser的学习之开篇(一)
- jdbc教程_JDBC教程
- SpringCloud + RocketMQ实现可靠消息最终一致性事务
- tcp流式传输_收听互联网广播以及下载和流式传输免费音乐的最佳网站
- jasperreport报表导出excel锁定行和列
- HACCP的相关文献包含哪些?
- 关于制作Unity动画的时候出现的问题:
- 数据压缩——LZW 编解码算法实现与分析
- 这样的钓鱼邮件,你会中招吗?
- mysql_assoc什么意思_MYSQL_ASSOC?
- 网信耕耘十余载,金融安全3.0时代的缔造者
- MySql零基础教学,超细致,从小白到精通
- QA与QC质量管理对比
- python 逻辑运算符_Python关系和逻辑运算符
- unity3D更换编辑器版本脚本无法识别MonoBehaviour和unityengine解决方法
- RPC304A POE系统四通道PSE控制芯片,POE Controller,PSE Controller ,主要PIN IP804/IP808,TPS28361等芯片