试用了一下 ChipON ---IDE集成开发环境,有点心得,提点建议,供今后升级时参考。
1. ASM 编译器
编译器不支持负号,如 MOV R0, #-1 编译出错,一定要写成 MOV R0, #0xff 才行。
2. C 编译器
启动文件 STARTUP.o 单独列出,充许用户可修改,便于应对不断扩容推出的 ChipON 芯片。
页面切换指令(包括 RAM 和 ROM 页切换)单独列出,在头文件中,以宏的方式定义,这样,用户可修改,以便取得最佳编之译结果。
标准库分 V1核 和 V2核, 再加一个 精简的 V2核库(不带硬件乘除法),对目前的芯片,足够用了。今后有新核芯片推出,再增加库。
对 V1核的编译器,数据(变量)结构,俺做 精简库 时已考虑了,占用 R0,R1,R6,R7 四个寄存器 及 8级模拟软栈(每个中断需多增加一组模拟软栈,STKxx 参数变量,中断保护栈需和模拟软栈定义在同一页)。
这样,能在中断中,能任意调用 乘除法及取模操作(包括浮点数运算),带参函数调用及指针操作(长度限在 8个BYTE 之内)。
对 V2核的编译器,由于RAM容量一般较大,用上述 数据(变量)结构,中断实时响应,执行效率不高。
因此建议,在 BANK 有 3个及以上时(标准 V2核都达标的),将 STKxx 参数变量 设计成 多页(镜像), ChipON V2核有两级中断,这样,有1个主页STKxx 参数变量,外加2页 STKxx 参数变量镜像即可。
注:1个镜像中,包含 STKxx 参数变量 ,中断保护栈 和 模拟软栈 。
这样, 在中断时,无需保存 STKxx 参数变量,只需要切换一下镜像指针,可减少中断对RAM的保护,加快中断程序执行,如果能改成每级中断保护占用一个Rn寄存器(目前占用两个),两级中断用去两个 Rn, 这样,程序可占用 Rn 六个寄存器,能更优化标准库,加快库程序的执行速度及效率。
这样改造后,中断响应处理事件速度加快,在中断中,除了能任意调用 乘除法及取模操作(包括浮点数运算),带参函数调用及指针操作(参数长度限制 和主程序标准相同)。
另外,再探讨一下 函数调用时,C编译器的处理方式,如果依现在的方式,将参数全部读入内部暂时变量中,释放 STKxx 参数变量 占用,则 模拟软栈 可取消,库函数所用到的 一些临时变量,直接在 入参的 STKxx 参数变量 之后 地址,以直接寻址方式 加入程序处理,库程序可做的更简洁更优化,执行速度更快。
3. DEBUG 调试
像 反汇编窗口,必须要有的,最好能增加 混合反汇编窗口,便于单步调试跟踪查错。
多开几个 对 变量,RAM, 标签 窗口,最好能同时多打开几个,市面上的流行软件,一般能同时打开 4个 窗口。
加入的 标签能指定类型结构,以 指定的类型 显示,如 int, long, float。
这样,由于技术的原因,对 C中的变量,识别率不高,无法显示的缺陷,可在很大程度,通过用户 自定义标签 解决之。
|