注册 登录
查看: 215|回复: 2

[K60] UD版如何在调试变量程序与小车业务程序之间转换?

[复制链接]
发表于 2017-7-18 00:30:57 | 显示全部楼层 |阅读模式
RT,有两个主函数么?请山外哥赐教。
来自安卓客户端来自安卓客户端
回复

使用道具 举报

发表于 2017-7-18 00:41:34 | 显示全部楼层
看你是简单的函数区分,还是直接不同的app

如果是函数区分,直接开机,按键开过控制,或者液晶控制就好(例如菜单助手)。

如果是不同的app,这个比较复杂,涉及分块的思想:
http://www.vcan123.com/forum.php?mod=viewthread&tid=14490&ctid=51

不同的app,例如默认进入小车跑车程序,跑车程序里开机检查到开关关上,就执行参数调试的app(用jmp_bin函数来执行,另外一个新工程,但启动地址,要改一下,确保和小车跑车程序不冲突flash空间)。

jmp_bin(uint32_t addr);  是 FWD函数的功能,从103版本开始就有提供。addr 就是启动地址。
===========
举例:
假如 参数调试的app 启动地址是 128K  (如何改,ud的ppt文档有做介绍。ud烧录的话,需要改后缀,看上面帖子。)
那么在小车跑车程序,执行 jmp_bin(128*1024);  
单片机就会跳到新的APP执行,原先的小车跑车程序app就不会再执行的(ram数据也会被新app替换掉,不是简单的函数调用)
jmp_bin 必须是在超频之前,否则后面的app再进行超频,就时钟状态图不对了。


调试的变量如何保存共享?
UD专属例程,有 flash_data_init 的功能,比较简单保存的。只要2个app的结构体相同,就可以启动的时候,从flash 读取存储的参数。




回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-18 01:19:04 | 显示全部楼层
山外メ雲ジ 发表于 2017-7-18 00:41
看你是简单的函数区分,还是直接不同的app

如果是函数区分,直接开机,按键开过控制,或者液晶控制就好 ...

您好!
其实就是IAP吧?自定义了bootloader和default app,然后用户开发自己的user app,我的理解对么?
来自安卓客户端来自安卓客户端
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回列表 返回顶部