杰理芯片AC695通用SDKfw-AC63_GP_MCU-AC63_GP_MCU_v1.4.0使用心得

  1. 开发环境搭建

参考官网说明:

3. 开发环境安装说明 — JL Project Documentation

  1. SDK工程编译和下载

参考官网说明:

4. SDK工程编译与下载 — JL Project Documentation

网上下载的SDK第一次编译下载出错,是因为download.bat文件格式问题,要转换。

 

  1. 下载的SDK,timer.c的一个错误,左移10位改为左移2位。

 

  1. 底层UART修改

BIT(14)代表接收到一个字节,BIT(12)清除RXPEND

 

UART初始化函数,BIT(3)开启RX中断,BIT(0)使能UART

 

  1. 底层SPI

这几个地方用来修改SPI的模式

 

  1. SDK的Debug引脚配置

在board_demo.c中

 

  1. 工程里面添加文件,配置头文件路径,添加库文件。

可以添加文件和添加整个文件夹

 

在build options,添加头文件路径

 

添加库文件

 

  1. 开发工程调试,

在Start.s里面程序异常会进入异常解析函数

 

异常解决函数在debug.c里面,屏蔽release()函数,否则程序异常了会调用软复位,看不到异常信息了。

 

关于调试打印的异常信息,参考官网:

5.1. 串口调试 — JL Project Documentation

  1. 栈大小的修改

在Start.s里面可以修改栈大小,usp是用户函数使用的栈空间,ssp的中断函数使用的栈空间

 

可以通过下面方式打印栈地址。

 

  1. RAM分散文件

查看sdk_ld.c文件。

程序的RAM分配情况,可以查看编译器的Build log,里面有大小,和起始地址。

 

也可以查看tools文件夹下的symbol_tbl.txt文件。

AC569的RAM是两块,

 

堆空间大小,RAM0:(prp_bss地址到---0x2BF00),RAM1:(clock_bss+4地址到---0x30000)

 

  1. 编库工程创建

创建工程时,选择Static Library,然后添加要编库的文件到工程,编译。

 

 

  1. flash操作

关闭VM区,用户写flash时的起始地址从哪里开始。

 

 

关闭VM区,再boot.c里面有main函数,把vm_init_app()注释掉,resfile_init()函数的返回值就是用户可以操作flash的起始地址。

 

 

当VM区关掉后,也可以看编译输出信息,VM_START_ADDR:这个地址就是用户可以操作flash的起始地址。

 

 

Flash使用,需要先调用初始化函数,然后再调用读写API。

 

 

在使用flash之前,先调用flash_read_write_init()完成对flash的初始化,

Flash读接口。使用flash_read_buff();需要修改这个API,否则读flash时间会长。使用norflash_read();

 

 

Addr = 需要从用户可以操作的地址开始,也就是resfile_init()的返回值(前提是把VM区关闭)。

Flash写接口flash_write_buff()。

 

 

  1. 双备份升级

升级开始要调用这个函数进入升级,UART接收数据包是在中断中接收的,第一次接收到升级数据包,会调用update_download_opt函数进行update初始化。后续都是在中断中接收完数据包然后处理。

Update_download_opt函数在user_msg_handler函数中调用,user_msg_handle然后在main.c里面调用。

 

 

在main.c里面开始判断flash中的标志是否为0x05060708,是进入升级模式,否则运行APP程序。

 

 

2、Burn标志位置

烧录标志在flash的位置。SFINT_ENDPAGE的大小不需要管。BURN_FLAGSTARTPAGE的计算方式为,编译器输出的信息中VM_START_ADDR/512。

 

 

 

 

在设置BURN_FLAGSTARTPAGE时候,要使START_MB_ADD地址能够被4K整除,否则存储模板的时候会多写一次。

 

  1. 进入升级模式命令

1A指令,1擦除系统参数初始化标志,2设置burn标志,进入update,3软复位。

 

  1. 串口升级规范

1、数据包格式

 

 

SyncData0:固定为0xAA

SyncData1:固定为0x55

Cmd_len:Cmd_data部分的长度

Cmd_data:命令内容

Cc16:整个命令包(去除crc自身)的crc结果。

 

  1. 升级命令:(0x01) update_start

 

 

  1. 升级数据请求:(0x02)update_read_req

 

 

 

  1. 升级结束:(0x03)update_stop

 

 

 

  1. 升级结束返回:(0x03)update_stop_res

 

 

  1. 升级长度通知:(0x04)update_len_notify

 

 

 

  1. 升级在线通知:(0x05)update_alive_notify

 

 

 

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值