0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

AT32讲堂008 | AT32 MCU如何用Eclipse插件调试sLib

雅特力 AT32 MCU ? 2022-06-15 10:43 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

概述

本文档仅介绍如何通过使用Eclipse、ARM-GCC编译工具、GNU-ARM插件、J-Link或AT-Link等资源来配置及调试AT32F403A的sLib,并提供sLib方案商开发算法范例及终端用户应用范例。关于AT32F403A的sLib详细介绍及说明,请详阅:《AN0040_AT32F403A_407_Security_Library_Application_Note》。环境说明:本文档安装说明基于WINDOWS 7 x64系统下实现,开发板使用AT-START-F403A。关于Eclips调试环境的安装及Eclipse工程的建立,请参阅《AN0033_Eclipse_with_GCC》。本文档所使用的软件都打包到Setup_SLIB_with_Eclipse_and_GCC_V2.0.0.zip,直接解压重新编译后即可运行。解压后Eclipse的workspace位于目录:Setup_SLIB_with_Eclipse_and_GCC_V2.0.0\utilities\slib_with_eclipse_and_gcc_demo。其中包含文件:图1. Eclipse工作目录2b40a05e-e6f7-11ec-aa96-dac502259ad0.png.metadata:此workspace的环境设定project_l0:方案商开发算法范例project_l1:终端用户应用范例

Project_L0方案商范例

_在此阶段的范例程序,将完成下列几个项目:

将低通滤波器函数编译成可执行(executr-only)的代码;

将低通滤波器函数的代码编排放置到主闪存区地址0x08004000~0x08004FFF(sector8~9);

将低通滤波器函数的系数编排放置到主闪存区地址0x08005000~0x08005FFF(sector10~11);

验证成功后,将sector8~9设置为指令安全库区,将sector10~11设置为数据安全库区,此部分可在范例的主程序中以调用slib_enable()函数来完成,或使用Artery ICP Programmer来完成(建议使用ICP工具完成设置);

产出终端用户程序调用低通滤波函数时,需用到的头文件及符号定义文件。

产生只执行(Exacute-only)代码

设置方式如下:

1) 选择C文件群组或个别的C文件,范例中是把要保护的相关C文件都放在FIR_Filter群组,点击FIR_Filter群组内需要设置只执行的文件,按鼠标右键选择“Properties”

图2. 设置要保护的C文件

2b6bc19e-e6f7-11ec-aa96-dac502259ad0.png

2) 点选C/C++Build->Settings->GNU ARM Cross C Complier->Miscellaneous,在”Other compiler flags”填入-mpure-code以及-mslow-flash-data这两个关键字,然后按Apply使设定生效

图3. 设置Miscellaneous

2bb66e88-e6f7-11ec-aa96-dac502259ad0.png

编排安全库区的地址

Project_L0范例的主闪存映像及RAM的使用分区如下图,RAM的分区主要是为了避免sLib保护区的代码与终端用户的代码用到相同的RAM而产生的冲突问题。图4. 主闪存映像及RAM的使用分区2bdffa78-e6f7-11ec-aa96-dac502259ad0.png

其中滤波器函数的代码编排放置到主闪存区的地址0x08004000~0x08004FFF(sector8~9),并将滤波器函数的系数编排放置到主闪存区的地址0x08005000~0x08005FFF(sector10~11)。RAM的部分则是将0x20000000到0x200000FF共256个字节保留给sLib保护区的代码使用。

步骤如下:

1) 依据”AT32F403AxC_FLASH.ld”linker descriptor文件做修改,编写一个ld文件,如project_l0\eclipse_gcc\ld目录下的slib.ld。2) 在slib.ld当中,将主闪存及RAM分区划分如下:2bf8a370-e6f7-11ec-aa96-dac502259ad0.png3)?将算法代码放到.slib_inst section,低通滤波器的系数放到.slib_data section,并将算法使用到的全局变量指定到.slib_ram section,如下图:图5. 配置code、data、ram section2c215f40-e6f7-11ec-aa96-dac502259ad0.png4)?在Project->Properties->C/C++Build->Setting->GNU ARM Cross C Linker->General设定中的Script files,加入slib.ld。图6. 设置Script files2c762d7c-e6f7-11ec-aa96-dac502259ad0.png5)?本范例会使用到gcc的数学运算函数库libm.a,在Properties->GNU ARM Cross C Linker->Miscellaneous设定中的Other linker flags填入--specs=rdimon.specs,linker才不会出现错误讯息。图7. 设置Other linker flags2caecdc6-e6f7-11ec-aa96-dac502259ad0.png关于ld文件的语法,可参考GNU linker的相关名文件。

产生头文件及符号定义文件

头文件(header file)跟符号定义文件(symbol definition file)是终端客户应用范例Project_L1在调用FIR低通滤波函数时需要用到。在范例中,就是main.c中包含的fir_filter.h文件。符号定义文件则是定义低通滤波函数的实际地址。

产生符号定义文件的方法:

1)进入Project->Properties->C/C++Build->Setting的Build Steps设定画面。图8. 设置Build Steps2cdc3914-e6f7-11ec-aa96-dac502259ad0.png

在Post-build steps的命令行中输入以下命令:

arm-none-eabi-objcopy.exe--keep-symbols="..\keep_sym.txt"-S--remove-section=.ARM.attributes--extract-symbol"${BuildArtifactFileBaseName}.elf""..\fir_filter_symbol.sym"2) 此处fir_filter_symbol.sym是要产出的符号定义文件,keep_sym.txt放在project_l0\eclipse_gcc目录下,是用来选择要产生哪些函数的符号,内容如下:2d0830e6-e6f7-11ec-aa96-dac502259ad0.png3)?重新编译整个项目后,在project_l0\eclipse_gcc目录下,就会产生一个名为fir_filter_symbol.sym的符号定义文件。

启用安全库区保护

要启用安全库区的保护功能,有以下两种方式:1) 使用ICP刻录工具Artery ICP Programmer(建议用此方式)。使用ICP Programmer启用sLib的方法,请参阅《AT32F403A Security Library Application Note》。2) 使用范例程序main.c之中的slib_enable()函数。在低通滤波函数测试正确后执行过一次此函数,就可以启用安全库区的保护功能。要执行此函数,只要在main.c中使能#define USE_SLIB_FUNCTION即可。

Project_L1终端用户范例

_

Project_L1范例会使用到在Project_L0中调试好,并已经被刻录到AT32F403A芯片的主闪存中且被sLib保护的FIR低通滤波器函数。根据Project_L0提供的头文件、符号定义文件以及主闪存区块映像,终端用户就可以参照Project_L1做到

建立一个应用项目;

引用Project_L0提供的头文件及符号定义文件到项目里;

调用FIR低通滤波器函数;

开发并调试用户自己的应用程序。

注:Project_L1必须使用跟Project_L0开发时一样的工具链及相同版本的编译程序,不然有可能会因为版本差异的兼容性问题,而无法使用Project_L0提供的代码。

建立用户的应用项目

因为Project_L0启用的安全库区已经占用了一些特定的主闪存页面,Project_L1的代码必须参照Project_L0提供的主闪存区块映像来编排放置的地址。其中sector8~11为安全库区所占用,终端用户需使用ld文件将这个区域隔离起来,避免代码在编译时被编排到这个区域内,方式如下:

参照project_l1\eclipse_gcc\ld目录下的end_user_code.ld文件,将主闪存空间切成两个区块FLASH_1及FLASH_2,中间空出来的区域就是sLib保护区。此外,RAM的区域也要保留0x20000000到0x200000FF的区域。如下图:

图9. end-user-code.ld配置2d2d96b0-e6f7-11ec-aa96-dac502259ad0.png

其中SLIB_CODE及SLIB_DATA两个区域,方案商已事先刻录代码,所以设定为NOLOAD,在下载Project_L1代码到主闪存时,就不会再次被下载。

在项目中加入符号定义文件

Project_L0所产生的符号定义文件fir_filter_symbol.sym必须被添加到Project_L1项目中,才能被正确的编译并链结到sLib保护区的代码。方法如下:

1) 将fir_filter_symbol.sym这个文件加到FIR_Filter群组;

2) 打开Project->Properties->C/C++Build->Settings->Tool Setting->GNU ARM Cross C Linker->Miscellaneous设定画面,在Other objects选单中加入此文件,在编译项目时就会可以被引用到。图10. 设置Other objects

2d5ac7ca-e6f7-11ec-aa96-dac502259ad0.png

关于雅特力雅特力科技于2016年成立,是一家致力于推动全球市场32位微控制器(MCU)创新趋势的芯片设计公司,专注于ARM Cortex-M4/M0+的32位微控制器研发与创新,全系列采用55nm先进工艺及ARM Cortex-M4高效能或M0+低功耗内核,缔造M4业界最高主频288MHz运算效能,并支持工业级别芯片工作温度范围(-40°~105°)。雅特力目前已累积相当多元的终端产品成功案例:如微型打印机、扫地机、光流无人机、热成像仪、激光雷达、工业缝纫机、伺服驱控、电竞周边市场、断路器、ADAS、T-BOX、数字电源、电动工具等终端设备应用,广泛地覆盖5G物联网、消费、商务及工控等领域。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    18082

    浏览量

    371077
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    AT32 MCU如何使用IAP

    AT32 MCU使用IAP的方法涉及在微控制器上创建特定固件,以实现在应用编程(In-Application Programming,简称IAP)功能,主要通过USART通信接口进行固件更新操作
    发表于 08-08 17:13

    AT32 IAP using the USART

    对于AT32 MCU,除了出厂固化的bootloader,用户也可以在应用程序中编写自己的bootloader程序,用于最终产品的固件更新。此功能称为应用程序内编程(IAP)。 本应用笔记的目的
    发表于 07-11 10:51

    AT32的ERTC与RTC的区别

    AT32单片机系列中包含两种实时时钟(RTC)模块:标准的RTC和增强型RTC(ERTC)。以下是两者的区别: 功能丰富性 RTC :提供基本的计数功能,以秒为单位递增,范围从0x00000000到
    发表于 07-11 10:48

    调试工具:Eclipse调试工具栏与窗口的深入分析

    科技有限公司自研AS32 系列 MCU 芯片的调试应用为研究背景,通过详细阐述 Eclipse 调试环境的搭建、工具栏各功能模块的原理与应用,以及各类
    的头像 发表于 07-07 11:32 ?259次阅读
    <b class='flag-5'>调试</b>工具:<b class='flag-5'>Eclipse</b><b class='flag-5'>调试</b>工具栏与窗口的深入分析

    Modus工具箱调试错误怎么解决?

    : Listening on port 4444 for telnet connections Started by GNU MCU Eclipse Started by GNU MCU E
    发表于 07-01 06:53

    RISC-V JTAG:开启MCU 芯片调试之旅

    在当今电子科技飞速发展的时代, MCU 芯片成为众多企业追求技术突破与创新的关键领域。而芯片的调试过程则是确保其性能与可靠性的重要环节。本文以国科安芯自研 AS32A601为例,旨在详细记录
    的头像 发表于 05-07 17:57 ?1781次阅读
    RISC-V JTAG:开启<b class='flag-5'>MCU</b> 芯片<b class='flag-5'>调试</b>之旅

    首日速递 | 雅特力闪耀2025慕尼黑上海电子展,全方位展现智能“芯”实力

    4月15日,慕尼黑上海电子展(electronicaChina2025)在上海新国际博览中心盛大启幕。雅特力携多款AT32系列MCU新品及完整应用方案矩阵,重磅亮相本届展会,通过四大核心展区,全面
    的头像 发表于 04-16 00:15 ?498次阅读
    首日速递 | 雅特力闪耀2025慕尼黑上海电子展,全方位展现智能“芯”实力

    雅特力AT32F402/F405入门使用指南

    搭建AT32开发环境一、调试工具及开发板目前AT32F402/AT32F405开发板都自带AT-Link-EZ调试工具,AT-Link-EZ如下图左边红框所示,它也可拆开后单独搭配其他电路板使用,支持IDE在线
    的头像 发表于 03-28 18:59 ?990次阅读
    雅特力AT32F402/F405入门使用指南

    ST7789-ZJY320S008技术资料

    3.20LCD插接40pin-ST7789-ZJY320S008技术资料
    发表于 11-22 16:28 ?0次下载

    STM32转AT32代码转换

    1.引言在嵌入式开发中,我们经常会遇到更换单片机芯片的事情,若芯片是同一厂家的还好说,若是不同厂家的则需要重新写,重新调,重新去学习其底层驱动程序,比较费时费力。如:ST32转AT32、ST32转
    的头像 发表于 09-28 08:09 ?844次阅读
    STM32转<b class='flag-5'>AT32</b>代码转换

    AT32讲堂088 | 雅特力AT32F402/F405时钟配置

    简介时钟是芯片正确高效运行的基础,正确的时钟配置是芯片能正确运行的必要条件,其重要性不言而喻。AT32各系列产品的时钟配置部分可能存在细微的差异和需要注意的事项,本文档就着重针对各系列的情况来详细
    的头像 发表于 09-15 08:08 ?1140次阅读
    <b class='flag-5'>AT32</b><b class='flag-5'>讲堂</b>088 | 雅特力AT32F402/F405时钟配置

    AT32讲堂087 | 雅特力AT32 IDE快速入门指南

    新建项目新项目向导AT32ID提供支持雅特力MCU的C语言项目模板,方便用户快速创建项目。菜单栏【File】>【New】>【CProject】。新建项目向导的对话框将出现。在对
    的头像 发表于 09-15 08:08 ?1562次阅读
    <b class='flag-5'>AT32</b><b class='flag-5'>讲堂</b>087 | 雅特力<b class='flag-5'>AT32</b> IDE快速入门指南

    C2000 MCU JTAG 连接调试

    电子发烧友网站提供《C2000 MCU JTAG 连接调试.pdf》资料免费下载
    发表于 09-09 09:30 ?0次下载
    C2000 <b class='flag-5'>MCU</b> JTAG 连接<b class='flag-5'>调试</b>

    雅特力AT32 MCU的随机数生成

    概述产品和生态系统安全性的需求比以往任何时候都更加重要。真随机数是所有安全系统的核心,其质量会影响设计的安全性。因此在没有内置硬件TRNG的AT32的微控制器系列中,如何提高随机数的有效,来符合
    的头像 发表于 08-30 12:26 ?1427次阅读
    雅特力<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>的随机数生成

    AT32讲堂085 | 雅特力AT32 MCU HICK时钟校准

    简介AT32系列MCU内部都有提供适合运行的内部高速时钟(HICK),其本质就是内置于芯片的RC振荡器。在25℃下,其典型值频率8MHz的精度由工厂校准到±1%,在-40到105℃,该内部高速时钟
    的头像 发表于 08-30 12:26 ?1347次阅读
    <b class='flag-5'>AT32</b><b class='flag-5'>讲堂</b>085 | 雅特力<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b> HICK时钟校准