基于 32G12K128 实验箱V9.62_实验之TFT彩屏驱动+超64K编程
基于 32G12K128 实验箱V9.62_实验之TFT彩屏驱动+超64K编程本实验没啥新创意, 只是一个学习小结, 梳理一下超64K编程的心得体会.
内容是, 实验彩屏各驱动函数, 在320x240彩屏上显示7个彩色图片, 同时测试一下, 普通方式显示图片的用时. (主频35MHz)
用6个64x64像素的图标, 1个168x112像素的图片.
先计算一下所占字节容量:
一个图标64*64*2=8192, 即8K, 6个图标,8K*6=48K;
一个图片168*112*2=37632, 即37.63K;
总共: 48K+37.63K=85.63K
再加程序代码, 显然是需要超64K编程了.
先贴一下实验结果:
显示一个64x64图标, 用时5ms, 显示一张168x112图片,用时24ms.
再梳理一下实验过程:
1. 认识一下, code和 ecode关键词的含义和用法;
code关键词,让数据代码位于存储器地址范围 FF:0000 -- FF:FFFF(64K)
ecode 关键词, 让数据代码位于存储器地址范围 FE:0000 -- FF:FFFF(128K)
code 关键词, 在KeilC251编辑环境下, 语法高亮显示.
ecode 关键词, 在KeilC251编辑环境下, 不是语法高亮显示, 但具有实质作用.
code 和 ecode关键词, 书写源代码时, 放在数据类型与变量名称之间, 不要放错位置.
2. 规划一下存储分配, 正确设置编译环境各项参数;
CPU模式等三项, 不二选择,4K对齐.
考虑留用4K的EEPROM空间, 设置程序代码起始地址为 0xFE1000,长度为0x1F000.
注意Memory选择"ROM",不是"RAM".
3. 设置输出格式: HEX-386
4. 考虑一下指令优化
优化级别并非越高越好, 这里根据例程, 选择"尾部连接".
5. 结合实际使用的调试工具设置仿真调试选项
对于32G12K128, 目前最佳调试工具 STC-USB-Link1D, 选用SDW仿真模式, 设35MHz主频.用STCAI-ISP(V6.94H)制作仿真芯片.
仿真结束后, 保持芯片为仿真器状态, 程序代码保存其中, 掉电上电不丢失, 正常运行. (可能这是32G12K128芯片的特色之一,很好用)
6. 编译结果.
0错误,0警告...
7. 观察验证一下,代码数据在存储器中的位置. (也可打开.MAP文件查看)
进一步了解, 超64K编程的特点.
CODE 开始和结束
ECODE开始和结束
8. 感叹:
曾经的51单片机工程师们, 为突破64K编程, 可谓煞费苦心: 外挂128K存储器+Bank分区技术,搞得软硬件复杂而难用......
如今, 一片搞定, 太令人惊喜.... 国芯51单片机, 有望走得更远.....
aiapp-isp-v6.94P.zip
DebugLab 发表于 2024-9-10 20:35
aiapp-isp-v6.94P.zip
谢谢超版的浏览和提示.
其实日前已下载了最新v6.94P版本的ISP软件并收藏,只是发现菜单项简化了不少,暂时还没有启用.
我也在试着刷彩屏,
一个128*160页面都要40K,2个页面就超64K了。
不过梁工说过,如果是放图像等静态数据,
可能要外挂FLASH或TF了...
24
autopccopy 发表于 2024-9-11 00:10
我也在试着刷彩屏,
一个128*160页面都要40K,2个页面就超64K了。
不过梁工说过,如果是放图像等静态数据, ...
感谢 autopccopy 版主的鲜花鼓励和留言.
这个实验仅是体验一下超64K编程特点和注意事项, 以及感受一下刷屏的速度, 做些基本练习和技术储备.
真正做项目产品, 那是不能考虑将图象和静态数据都放在程序代码区的, 肯定要考虑外挂存储器的, 梁工说得对.
代码区则要存放用于数据采集和实时控制运算等更重要的代码.
随着用户的要求越来越高, 实际产品中, 往往趋向于使用串口屏, 让界面美工动画之类的事让另外一个CPU专门去做...
页:
[1]