找回密码
 立即注册
楼主: lgwd

在汇编下如何使用Ai的CDC库?

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:244
  • 最近打卡:2025-05-01 15:50:20

49

主题

129

回帖

1361

积分

金牌会员

积分
1361
发表于 2024-11-27 21:06:15 | 显示全部楼层
我们产品的程序就是一个程序模块,所有子模块都包含在内。用了二十多年,不断修改完善。为了适用CDC和HID接口,已经用C语言全部重写了。但是C语言改写的程序毕竟是近年的,没有长期经过多方面考验!做产品的都知道,如果一个用户发现使用产品的问题,后面的补救是一件很麻烦的事。所以使用CDC和HID接口需要慎重!既然STC推出汇编使用CDC,本想加入原程序就行了,就像C编程那样,现在看来不是一件简单的事!如果是重新开发一个成品肯定会用C编程和重新规划!现在打算STC的CDC库怎样能简便加入原汇编程序。我会根据上述建议看能否找到简便的方法?以前的教材讲授A51汇编编程也少有介绍多文件,后来就推广C编程了。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15613
发表于 2024-11-27 21:35:03 | 显示全部楼层
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:244
  • 最近打卡:2025-05-01 15:50:20

49

主题

129

回帖

1361

积分

金牌会员

积分
1361
发表于 2024-11-27 23:42:21 | 显示全部楼层
我们的全部程序编译后代码不到6K。放在一个汇编文件中管理应方便些。Keil使用的是Lx51,查看了一下生成的MAP文件,STC的USB库分为好多模块,不是一两个。不知道怎么定位到Code的靠后位置?与STC手册中提到的CODE定位也不相同,BL51界面也不相同。
STC的模板也是使用Lx51,换成BL51编译根本通不过。我们的程序编码后也不超过6K,如果按建议分成多个小程序就怕还是不行,那费的功夫可不小!之前将C编写的CDC库加入到我们的C改写的程序中也很快通过了,改写了STC的CDC和HID双接口示例程序,我们自己编译的库在C程序中也能实现CDC和HID同时通讯。目前看来汇编实现CDC还要费些功夫!

点评

你的 6K 代码, 我理解为 用最原始的 ORG 定位, 内存 RAM 应用也未标准化定义, 变量地址以 EQU 命名, 具体怎么用, 靠人工安排(编译器不认识), 是这种类型的 ASM程序. 我将官方 stc8h_cdc_demo_asm 例程, 编译后查看 M  详情 回复 发表于 2024-11-28 08:28
我仔细想了一下, 将 LIB 重定位怕不行, 但将 obj 文件重定位行的通, 前提是 STC提供 USB库 的源代码(建库用的 C). 方法1. 将其拆分 重新 编译建 LIB, 再 连接到 你的长汇编中. 方法2. 搞个 假C框架启动程序, 可调  详情 回复 发表于 2024-11-28 06:27
我经常优化C编写的程序, 先将C编译转化为SRC文件, 再去C将SRC文件加入项目重新编译. 经常发现编译通不过, 通过分析程序代码, 得出结论, ASM汇编 仅是 C 的一个子集, C语言的 有些特性, ASM汇编 不支持! AX51-Lx51 扩  详情 回复 发表于 2024-11-28 05:52
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-11-28 05:52:28 | 显示全部楼层
lg*** 发表于 2024-11-27 23:42
我们的全部程序编译后代码不到6K。放在一个汇编文件中管理应方便些。Keil使用的是Lx51,查看了一下生成的MA ...

我经常优化C编写的程序, 先将C编译转化为SRC文件, 再去C将SRC文件加入项目重新编译.
经常发现编译通不过, 通过分析程序代码, 得出结论, ASM汇编 仅是 C 的一个子集, C语言的
有些特性, ASM汇编 不支持!
AX51-Lx51 扩展汇编连接器, 比 A51-BL51 标准汇编连接器, 增加了不少功能. 我喜欢用  A51-BL51 标准 编译 程序建立库,
这样, 在 AX51-Lx51 下, 一般都能用(也有特例, 因 AX51-Lx51 的检查条件更严格, 比如扩展中断向量就通不过)
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-11-28 06:03:22 | 显示全部楼层
根据楼主的问题, 我昨晚 分析了官方CDC库, 结论是放弃 LIB.
又花了几个小时, 转而 分析 官方CDC例程(带C源码), 有十几个USB例程, 分析得出结论, 有点乱, 主要是 每个例程, 根据功能, 随意修改 usb库,
想提炼出 单纯的 usb库, 比较吃力, 短时间未能成功.
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-11-28 06:27:09 | 显示全部楼层
lg*** 发表于 2024-11-27 23:42
我们的全部程序编译后代码不到6K。放在一个汇编文件中管理应方便些。Keil使用的是Lx51,查看了一下生成的MA ...

我仔细想了一下, 将 LIB 重定位怕不行, 但将 obj 文件重定位行的通, 前提是 STC提供 USB库 的源代码(建库用的 C).
方法1.  将其拆分 重新 编译建 LIB, 再 连接到 你的长汇编中.
方法2.  搞个 假C框架启动程序, 可调用  USB   C程序.
以上两种方法, 都需要 STC官方提供 USB库 源代码.
通过分析 官方USB例程(带C源码) 提取, 由于不规范, 太累了.
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-11-28 08:28:42 | 显示全部楼层
lg*** 发表于 2024-11-27 23:42
我们的全部程序编译后代码不到6K。放在一个汇编文件中管理应方便些。Keil使用的是Lx51,查看了一下生成的MA ...

你的 6K 代码, 我理解为 用最原始的 ORG 定位, 内存 RAM 应用也未标准化定义, 变量地址以 EQU 命名, 具体怎么用, 靠人工安排(编译器不认识), 是这种类型的 ASM程序.
我将官方 stc8h_cdc_demo_asm 例程, 编译后查看 MAP 文件, 发现内存 RAM存在严重的冲突, 就算你 再努力, 编译通过, 估计要解决你程序中的内存冲突(编译器无法识别,双方占用共同存储器), 也要大改特改你的程序.
采用官方已编译的 USB库, 这条路走不通, 只能使用官方未编译的 USB源码, 重新定义USB中变量占用地址, 才能根本解决问题.
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:244
  • 最近打卡:2025-05-01 15:50:20

49

主题

129

回帖

1361

积分

金牌会员

积分
1361
发表于 2024-11-28 22:11:24 | 显示全部楼层
我的程序以前是用内存小模式,精心安排变量包括位变量地址。一个大程序模块,各个子程序紧密连接。考虑到STC的库可能占用内存较大,才选择内存大模式。现在看来还是不行。之前根据STC的CDC和HID复合设备原代码,我编译了CDC和HID复合设备库,初步测试还行。下一步想在此基础上,参考网上搜寻的一篇文献,在xdata开辟一个公共存储区实现C编译的库与汇编程序通过公共存储区共享数据!谢谢大家费心回复!
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15613
发表于 2024-11-28 22:21:43 | 显示全部楼层
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:244
  • 最近打卡:2025-05-01 15:50:20

49

主题

129

回帖

1361

积分

金牌会员

积分
1361
发表于 2024-11-29 21:50:01 | 显示全部楼层
好的,谢谢!下载看看,不知这个版本是否更新一点?
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 02:35 , Processed in 0.155869 second(s), 102 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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