找回密码
 立即注册
查看: 588|回复: 4

基于 32G12K128 实验箱V9.62_实验之TFT彩屏驱动+超64K编程

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:501
  • 最近打卡:2025-05-09 08:51:43

31

主题

347

回帖

3561

积分

荣誉版主

积分
3561
发表于 2024-9-10 19:45:15 | 显示全部楼层 |阅读模式
基于 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.
B.32G12K128超64K编程运行.jpg
再梳理一下实验过程:
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".
1.规划存储.jpg

3. 设置输出格式: HEX-386
2.输出选项.jpg       
4. 考虑一下指令优化

    优化级别并非越高越好, 这里根据例程, 选择"尾部连接".
3.指令优化.jpg    
5. 结合实际使用的调试工具设置仿真调试选项
    对于32G12K128, 目前最佳调试工具 STC-USB-Link1D, 选用SDW仿真模式, 设35MHz主频.  用STCAI-ISP(V6.94H)制作仿真芯片.
    仿真结束后, 保持芯片为仿真器状态, 程序代码保存其中, 掉电上电不丢失, 正常运行. (可能这是32G12K128芯片的特色之一,很好用)
4.仿真调试选项.jpg 5.下载调试选项.jpg

6. 编译结果.
   0错误,0警告...
A.编译结果.jpg

7. 观察验证一下,代码数据在存储器中的位置. (也可打开.MAP文件查看)
   进一步了解, 超64K编程的特点.
   CODE 开始和结束
6.CODE区开始.jpg 7.CODE区结束.jpg   
   ECODE开始和结束
8.ECODE区开始.jpg 9.ECODE区结束.jpg

8. 感叹:
    曾经的51单片机工程师们, 为突破64K编程, 可谓煞费苦心: 外挂128K存储器+Bank分区技术,搞得软硬件复杂而难用......
    如今, 一片搞定, 太令人惊喜.... 国芯51单片机, 有望走得更远.....


1 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:431
  • 最近打卡:2025-05-09 09:00:33
已绑定手机

77

主题

4874

回帖

8500

积分

超级版主

DebugLab

积分
8500
发表于 2024-9-10 20:35:35 | 显示全部楼层
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:501
  • 最近打卡:2025-05-09 08:51:43

31

主题

347

回帖

3561

积分

荣誉版主

积分
3561
发表于 2024-9-10 21:17:55 | 显示全部楼层

谢谢超版的浏览和提示.
其实日前已下载了最新v6.94P版本的ISP软件并收藏,只是发现菜单项简化了不少,暂时还没有启用.

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:493
  • 最近打卡:2025-05-09 00:12:09
已绑定手机

6

主题

285

回帖

867

积分

荣誉版主

积分
867
发表于 2024-9-11 00:10:40 | 显示全部楼层
我也在试着刷彩屏,
一个128*160页面都要40K,2个页面就超64K了。
不过梁工说过,如果是放图像等静态数据,
可能要外挂FLASH或TF了...

24

(仅供参考,欢迎探讨)
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:501
  • 最近打卡:2025-05-09 08:51:43

31

主题

347

回帖

3561

积分

荣誉版主

积分
3561
发表于 2024-9-11 19:03:54 | 显示全部楼层
autop*** 发表于 2024-9-11 00:10
我也在试着刷彩屏,
一个128*160页面都要40K,2个页面就超64K了。
不过梁工说过,如果是放图像等静态数据, ...

感谢 autopccopy 版主的鲜花鼓励和留言.

这个实验仅是体验一下超64K编程特点和注意事项, 以及感受一下刷屏的速度, 做些基本练习和技术储备.
真正做项目产品, 那是不能考虑将图象和静态数据都放在程序代码区的, 肯定要考虑外挂存储器的, 梁工说得对.
代码区则要存放用于数据采集和实时控制运算等更重要的代码.
随着用户的要求越来越高, 实际产品中, 往往趋向于使用串口屏, 让界面美工动画之类的事让另外一个CPU专门去做...
回复 支持 1 反对 0

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-9 09:37 , Processed in 0.117483 second(s), 80 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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