首页 » 互联网 » 国产芯片替代STM32处理器之后的代码治理和固件进级筹划_处置器_代码

国产芯片替代STM32处理器之后的代码治理和固件进级筹划_处置器_代码

萌界大人物 2024-11-10 06:05:53 0

扫一扫用手机浏览

文章目录 [+]

如果采取了st供应库函数进行产品的开拓,当用CKS或者GD的处理器替代st的处理器时。

必须要用国产厂家供应的库函数重新编写代码,那么须要澄清以下问题:

国产芯片替代STM32处理器之后的代码治理和固件进级筹划_处置器_代码 国产芯片替代STM32处理器之后的代码治理和固件进级筹划_处置器_代码 互联网

1. 能否将st以及国产厂家两套库函数编译下载到处理器,程序运行时肯定CPUID等条件判断芯片类型并调用对应的库函数。

国产芯片替代STM32处理器之后的代码治理和固件进级筹划_处置器_代码 国产芯片替代STM32处理器之后的代码治理和固件进级筹划_处置器_代码 互联网
(图片来自网络侵删)

在处理器中同时包含 st以及国产厂家的库函数,占用比较大的空间;

其余,当从处理器中读取出相应的二进制代码,并与st库函数编译出来进行比对,会在大量匹配的代码。
对付这样的比对结果,很难阐明采取国产厂家的芯片时并没有利用到st的库函数。

因此,不能将两套库函数同时编译下载到处理器

2. 能否用编译开关选择不同的库函数

为了便于软件工程的管理,希望利用两种不同芯片的软件共用工程文件,仅在代码层级通过宏定义来区分。

根据公司哀求,我们须要将全体工程上传到开源代码扫描平台进行扫描,当用blackduck进行扫描时,会同时检测到st以及国产芯片的代码库。

这时,须要向审核职员阐明这两套代码是通过编译开关进行区分,可以担保st的代码仅用于st的产品,不愿定审核职员是否认同这一点。

因此,不能用编译开关选择不同的库函数

综上,利用国产芯片替代时,须要:

利用不同的软件工程

编译天生不同的二进制代码

利用不同的git仓库进行代码管理

利用不同的软件料号进行固件管理

创建不同的BOM用于产品生产,根据处理器的厂家选择不同的生产BOM

产品出货之后,有两种不同的固件升级办法:

- 采取烧写工具通过SWD/JTAG升级接口进行升级

- 通过OTA办法由上位机等软件将固件发送给设备进行升级

当用国产芯片替代之后,在市场上的产品会存在利用不同处理器的多种型号。

不同型号须要升级对应的不同固件,但是用户并不知道处理器的差别。

因此,我们的升级方案须要自动识别出处理器的厂家,自动选择芯片对应的固件进行升级。

须要处理器供应方法识别生产厂家,

区分GD32和STM32

比如:

对付GD的处理器,通过下述方法区分GD32和STM32

GD32F30x在设计阶段,已经预留了干系寄存器,用户只须要软件读取寄存器 ,即可获取到干系的型号信息,GD32F30x每一型号此处值都为固定值 。

Code_Num=( uint32_t )( 0x40022100 );

对付CKS的处理器,芯片没有供应方法用于区分STM32。

采取烧写工具的升级方案如下:

1) 不能利用现成的烧写软件如st的programmer或者st-link utility等烧写程序。

st-link utility的命令行

2)自己开拓烧写软件,通过st-link utility供应的命令行按下述步骤烧写:

通过st-link_cli.exe -r8 0x40022100 12读取出型号信息 。

根据型号旗子暗记判断是否为GD的处理器,如果是则选择GD的固件,否则选择其它厂家的固件。

将选定的固件通过“st-link_cli.exe -p 固件名称“这一命令烧入处理器。

程序烧写工具

通过OTA的升级方案如下:

在主处理器、上位机、云做事器须要升级设备固件时,先发一条给处理器,由处理器读取型号信息并返回。
收到应答之后,判断是否为GD的处理器,如果是则选择GD的固件,否则选择其它厂家的固件,将固件按照原来方案分包发给处理器进行升级。

总结:

1) 国产芯片和ST芯片的代码须要按照完备不同的软件料号将代码分开管理

2) 通过烧写工具升级须要自己设计烧写软件

3) 通过OTA升级该当修正升级代码,增加判断芯片厂家的步骤

4) 没有供应方法识别厂家的芯片(如CKS)不能利用ST供应的代码库,只能直接操作寄存器进行软件开拓,而且须要与ST完备共用一套代码。

相关文章