【MCU】国民N32固件库移植
前言
链接:
- 李柱明博客
- 移植AT32库&FreeRTOS教程
- 由于大部分国产MCU移植固件库、RTOS源码都是差不多的,所以本文不讲细节,如想熟悉移植的套路,就参考上面链接去移植自己手上的MCU。相信移植一次后就懂了,然后自己写一篇博文记录一下,可以理清移植思路,也可以分享给众多道友。
- 下面主要列出国民技术移植要点。(基于ST工程)
移植N32Gxxx系列要点
- 文件替换:
- 启动文件:如:startup_n32g45x.s。
- 系统文件:如:system_n32g45x.c。
- 内核文件:如:core_cm4.h 等等。可以把国民技术官方提供的文件夹一键copy过去。
- 外设驱动库:如:n32g45x_xxx.c、n32g45x_xxx.h、misc.c、misc.h。
- 中断回调函数专用文件:如:n32g45x_it.c、n32g45x_it.h。
- 工程配置:
- 修改芯片选择。(安装号芯片包)
- 修改工程中全局宏。
- 更改烧录算法文件。
- 代码修改:
- 修改主频。首次,建议和原工程主频保持一致。修改在系统文件 system_n32g45x.c 中修改即可。
- 时钟。这个要特别留意。所使用的国民32时钟树与移植的STM32型号时钟树是否一致,若不一致则修改对应code即可。
- 国民库中各种外设名称与ST库有不少差异(注意,是名称有差异,但是框架和实现原理都差不多),所以只需要修改对应正确的名称即可。(慢慢换吧,虽然多,都是可以使用一键一键替换。)。实在不行就参考例程来改。
- DMA 可能需要重新映射。
- 烧写环境搭建:
- 安装芯片包才能在 MDK 上选择正确的芯片。
- 若MDK或jlink无法识别MCU型号导致无法烧写,可以参考以下操作:
下载由国民技术提供的 jlink 工具文件:jlink工具添加Nationstech芯片Vx.x.x。如:
文件夹内容解析:
- Device:下载算法文件。
- Samples:J-Flash 工程。
- Nationstech-JLinkDevices.xml:需要添加的国民技术芯片型号文件。
- JLinkNsUnlockTool V1.0.1.exe:解锁国民技术芯片读保护 L1 级别应用程序。
- JLinkNsUnlockToolConfig.ini:解锁读保护应用程序所需的配置文件。
- jlink工具添加Nationstech芯片流程_V1.0.pdf:官方教程(推荐)。
- 修改 JLinkDevices 配置文档。
- 找到 JLink 安装路径,打开 JLinkDevice 文档。(可使用notepad打开)
- 把国民技术提供的 Nationstech-JLinkDevices.xml 文档里面 Nationstech 芯片配置内容复制到 JLink 安装路径下的 JLinkDevice 文档末尾。点击保存(按格式添加。)。
- 添加 Nationstech 的下载算法文件。
- 把jlink工具添加Nationstech芯片V*x.x.x/Devices路径下的 Nationstech 文件夹拷贝到 JLink 安装路径/Devices 文件夹下。
- 添加 Nationstech 的 JFlash 工程文件。
- 把jlink工具添加Nationstech芯片V*x.x.x/Samples/JFlash/ProjectFiles路径下的 Nationstech 文件夹拷贝到 JLink 安装路径/Samples/JFlash/ProjectFiles 文件夹下。
- 添加解锁 Nationstech 芯片读保护 L1 等级的应用程序。
- 把JLinkNsUnlockToolConfig.ini和JLinkNsUnlockTool V1.0.1.exe拷贝到 JLink 安装路径下。
【MCU】国民N32固件库移植的更多相关文章
- stm32f4xx标准外设固件库
STM32F4的相关资料:http://www.stmcu.org/document/list/index/category-523 一.标准固件库简介 本文下载的是STM32F4xx_DSP_Std ...
- STM32固件库3.5+uCOS2.86移植(转自暴走的工程师)
考了很多移植的资料和代码,终于移植好了...应该是完美移植吧~~哈哈哈~~ 编译环境是IAR 工程适用于STM32F10X大容量产品,如果不是,请自行修改启动文件和工程配置 编译器优化等级最高...这 ...
- 在IAR(EWARM)中移植STM32固件库
一.移植环境说明 (1).win10系统 (2).IAR(EWARM)7.7 (3).STM32标准固件库3.5.0 http://www.st.com/content/st_com/en/produ ...
- STM32 之 HAL库(固件库) _
1 STM32的三种开发方式 通常新手在入门STM32的时候,首先都要先选择一种要用的开发方式,不同的开发方式会导致你编程的架构是完全不一样的.一般大多数都会选用标准库和HAL库,而极少部分人会通过直 ...
- STM32 之 HAL库(固件库)
1 STM32的三种开发方式 通常新手在入门STM32的时候,首先都要先选择一种要用的开发方式,不同的开发方式会导致你编程的架构是完全不一样的.一般大多数都会选用标准库和HAL库,而极少部分人会通过直 ...
- 如何从ST网站找到对应的固件库
ST官方网站改版后,基本上很难搜索到固件库的地址,找了半天才找到固件库的下载地址,通过此方法可以找到其他需要的资源,故记下来方便大家. 下载的网站地址为: Home>Tools and Soft ...
- 【STM32学习笔记1】基于固件库的STM32_MDK工程模版
文章包含STM32固件库介绍和工程模板搭建两方面内容. 一.STM32固件库介绍 要建立工程模板,首先要对STM32的固件库有所了解.STM32的固件可以从ST官网下载,网址为:http://www. ...
- STM32固件库详解
STM32固件库详解 emouse原创文章,转载请注明出处http://www.cnblogs.com/emouse/ 应部分网友要求,最新加入固件库以及开发环境使用入门视频教程,同时提供例程模板 ...
- 第9章 初识STM32固件库
第9章 初识STM32固件库 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fire ...
随机推荐
- ECMAScript 7 (ES 2016 /ES7 ) Ecma-262 7Edition
Standard ECMA-262 ECMAScript 2016 Language Specification 7th edition (June 2016) http://www.ecma-int ...
- API 授权 All In One
API 授权 All In One 身份验证 授权类型 身份验证类型 继承认证 没有认证 API密钥 不记名令牌 基本认证 摘要授权 OAuth 1.0 OAuth 2.0 授权码 隐含的 密码凭证 ...
- MDN & JavaScript 文档翻译状态
MDN & JavaScript 文档翻译状态 https://developer.mozilla.org/zh-CN/docs/MDN/Doc_status/JavaScript refs ...
- 微信公众号 bug
微信公众号 bug web bug refs xgqfrms 2012-2020 www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!
- 大数据开发-linux下常见问题详解
1.user ss is currently user by process 3234 问题原因:root --> ss --> root 栈递归一样 解决方式:exit 退出当前到ss再 ...
- django学习-27.admin管理后台里:对列表展示页面的数据展示进行相关优化
目录结构 1.前言 2.完整的操作步骤 2.1.第一步:查看ModelAdmin类和BaseModelAdmin类的源码 2.2.第二步:查看表animal对应的列表展示页面默认的数据展示 2.3.第 ...
- 翻译:《实用的Python编程》02_02_Containers
目录 | 上一节 (2.1 数据类型) | 下一节 (2.3 格式化) 2.2 容器 本节讨论列表(list),字典(dict)和集合(set). 概述 通常,程序必须处理许多对象. 股票的投资组合 ...
- 经典面试题:在浏览器地址栏输入一个 URL 后回车,背后发生了什么
尽人事,听天命.博主东南大学硕士在读,热爱健身和篮球,乐于分享技术相关的所见所得,关注公众号 @ 飞天小牛肉,第一时间获取文章更新,成长的路上我们一起进步 本文已收录于 CS-Wiki(Gitee 官 ...
- Google单元测试框架gtest之官方sample笔记1--简单用例
1.0 通用部分 和常见的测试工具一样,gtest提供了单体测试常见的工具和组件.比如判断各种类型的值相等,大于,小于等,管理多个测试的测试组如testsuit下辖testcase,为了方便处理初始化 ...
- List和String的非空判断
1.如果想判断list是否为空,可以这么判断: if(null == list || list.size() ==0 ){ //为空的情况 }else{ //不为空的情况 } 2.list.isEmp ...
