8303开发环境搭建*
Windows下环境搭建*
1.1 SDK 获取*
apus-pico
是托管在 GtiLab
私有仓库上,请阅读 注册 GitLab 账号 并将 GitLab
账号给我们的销售经理,由我司项目经理对该账号进行代码释放。
gitlab地址:https://gitlab.com/nationalchip/apus-pico
- 进入GitLab项目,如图复制项目的 git 地址:
- 获取代码:
$ git clone git@gitlab.com:nationalchip/apus-pico.git
1.2 编译和烧录*
工具链下载地址:http://yun.nationalchip.com:10000/l/OFidDc
串口烧录工具下载地址:http://yun.nationalchip.com:10000/l/9Frl3p
编译和烧录细节,参考gitlab上的说明文件: /docs/GX8303开发环境上手指南/GX8303开发环境上手指南.md
可以使用 /example/ble_peripheral/simple_ble_uart 例子作为入门参考。
1.3 配套开发板*
可以使用我们提供的 USB Dongle 开发板 GX8303A_USBDongle 进行开发调试:
1.4 GX8303 固件尺寸优化*
GX8303 共有 64KB ROM, 8KB SRAM 和 16KB OTP,没有 NOR Flash 或其他 RW 存储设备,烧录一次程序后就不能再烧了。
因此,调试时只能选择将程序全部链接到 SRAM 区域运行,使用 UART-RUN 方式来调试。 这需要开发尽量将程序做好模块化,调试某个模块时,关闭其他模块模块使能宏,并确保单一模块尺寸能够放进 SRAM 中。
完整程序集成,SRAM 放不下了,就要编译为 XIP 的方式,烧录到芯片调试验证,需要定制的socket板子来配合。
Memory Layout
/* ram.ld */
MEMORY
{
SRAM : ORIGIN = 0x1FFF06C0 , LENGTH = 0x1940 /* SRAM 8KB */
}
/* xip.ld */
MEMORY
{
SRAM : ORIGIN = 0x1FFF06C0 , LENGTH = 0x1940 /* SRAM 8KB */
XIPROM : ORIGIN = 0x1FFF8100 , LENGTH = 0x3F00 /* XIPROM 16KB */
}
GX8303 SDK 中的链接脚本定义了 RAM 和 XIP 两种程序加载方式,SRAM 只有 8K,起始地址为 0x1FFF0000,其中 SDK 保留了 一部分,用户开发所能使用的区域为 0x1FFF06C0 ~ 0x1FFF2000,共 6464 字节。
如果需要将固件加载到 SRAM 运行,需要保证 代码段+常量+带初值变量+无初值变量 ≤ 6464 字节
ELF 分析
以 SDK 中 simple_ble_peripheral 为例,使用 readelf 或查看 map 文件,分析符号表;
D:\Program Files\CDKRepo\Toolchain\CKV2ElfMinilib\V3.10.31\R\cskyelfabiv2\bin>readelf.exe C:\Users\zhuhy\Desktop\sbp.elf -s > C:\Users\zhuhy\Desktop\sbp_sec.txt
将空格替换为,后修改为 csv 格式打开,对 Size 进行降序排序,方便针对较大占用的符号进行分析裁剪。