DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3955|回复: 0
打印 上一主题 下一主题

[UUProg] uuprog开发教程:芯片支持库加载1

[复制链接]
跳转到指定楼层
楼主
发表于 2014-12-10 08:32:35 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
      芯片支持库可以说是编程器软件的重点,记录芯片的支持量,芯片的相关信息,以及芯片的操作数据和时序等,这里的时序和固件中的时序是有区别的,这里是下位机固件中硬件实现的软件调用。
     整个软件的操作核心都是基于这个库来实现的,这就是为什么编程器厂家不会介绍这部分的原因,而且这部分的管理、结构等都不会有任何介绍,也不会有给用户添加的任何接口。开放了接口就等于给用户无限扩展支持的通路,这是厂家所不愿意发生的。我们将会花几节的教程将这部分进行讲解,一窥其神秘。
     芯片支持库可以说是一个文件型数据库,有采用现有数据库结构的,这种比较容易理解,只要按数据库操作语句操作就行,也是最简单的;另一种就是自定义型的数据库,这个比较难理解,按自己的需求、结构等实现自己需要的数据库,可以方便管理,有效,高效的实现特定的需求,同时还可以保护好数据的安全。后一种是大多数厂家的实现方法,我们的数据库也是采用这种方法,但是不同的是,我们同时提供了用户管理芯片库的接口和操作界面,可以方便的实现用户自己添加芯片支持。
这一界主要还是先识别用到的结构,乏味的开始,呵呵。

看图中结构名(结构定义都是以tag开头的,习惯)。这里我们需要用到tagDeviceListFileHeadStruct、tagDeviceListFileStruct、tagTypeStruct、tagTypeStruct1等,因为支持库的信息量非常大,可以用个小型的数据库来定义了,我们这里定义了自己的数据库格式,而且还用到了结构嵌套,不熟这块的赶紧修补下,不然你看不下去的。
1、支持库文件头结构
这个可比工程文件结构复杂好几倍了。基本都是以功能名命名的,这个就不多说了吧。
  1. typedef struct tagDeviceListFileHeadStruct
  2. {
  3.    char Appname[20];
  4.    char DeviceListFileVer[8];
  5.    int DeviceCount;
  6.    int TypeListCount;
  7.    int OperationListCount;
  8.    int SizeListCount;
  9.    int PinListCount;
  10.    int DataWidthListCount;
  11.    int PackageListCount;
  12.    int VCCListCount;
  13.    int VPPListCount;
  14.    int AdapterListCount;
  15. }DeviceListFileHeadStruct,*LPDeviceListFileHeadStruct;
复制代码

2、芯片信息结构
这个就是一个芯片型号的数据结构了,整个支持库基本就是这一大块。
  1. //Device File Struct
  2. typedef struct tagDeviceListFileStruct
  3. {
  4.         char DeviceName[20];
  5.         DWORD DeviceType;
  6.         DWORD DeviceDataWidth;
  7.         DWORD DeviceID;
  8.         DWORD DeviceManuID;
  9.         char DeviceManuICO[20];
  10.         char DeviceManuName[20];
  11.         char DeviceICICO[20];
  12.         DWORD OperationID;
  13.         DWORD DeviceSize;
  14.         DWORD DevicePackage;
  15.         DWORD DevicePinCount;
  16.         float DeviceVCC;
  17.         float DeviceVPP;
  18.         DWORD DeviceAdapter;
  19.         char Datasheet[20];
  20.         char DeviceNote[100];
  21.         DWORD DeviceCheckCRC;
  22. }DeviceListFileStruct,*LPDeviceListFileStruct;
复制代码

3、电压值数据结构
这里是芯片编程电压及工作电压用到的,也就是浮点型的
  1. typedef struct tagTypeStruct1
  2. {
  3.         char TypeName[20];
  4.         float TypeVal;
  5. }TypeStruct1;
复制代码
4、芯片的封装结构
这个主要用到的地方就是芯片的封装类型,当然也有其他用到的,主要就是实现文本到整型的转换联系
  1. typedef struct tagTypeStruct
  2. {
  3.         char TypeName[20];
  4.         DWORD TypeVal;
  5. }TypeStruct;
复制代码

通过数据结构就能获取到支持库的信息及数据组织结构了,要是不明白请先看看文件操作,数据结构等相关内容。这部分必须要非常熟悉,后面的支持库的加载,添加、删除、修改等都会用到,而且不能搞错,错了基本就是烧毁芯片的事了。编程器的操作依据都是基于该库的芯片数据来实施各项配置命令的,操作过程中用户不能干预,也就是说是底层的。
这块要分几节才能讲解清楚,欢迎继续关注下节精彩内容。



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-12-26 14:21 , 耗时 0.088235 秒, 25 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

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