norains的专栏

只专注于WINCE开发

用户操作
[即时聊天] [发私信] [加为好友]
norainsID:norains
130820次访问,排名642(-1)好友0人,关注者26
代码其实是一种乐趣
norains的文章
原创 186 篇
翻译 0 篇
转载 10 篇
评论 257 篇
norains的公告
联系方式请看置顶文章
最近评论
晴天:請問一下:
如果要寫成Watchdog timer 納在這這要如何實現呢?
hustpanda:电子书看不了呢?
bobo:“耍大牌”...... 你就该直接拉黑
bulrush:你好,首先先感谢一下。我看了你的音量控制,自己也去实现了一下,但是我个人感觉“AudioUpdateFromRegistry”没有依据注册表的设置来更新控制面板的音量。没有马上更新,我重启系统后才看到更新的结果。也就是说这种方法是可行,但是必须要重启,显然这不合理。上面的兄弟说:引用了这两个类后不起作用
如:
void CSoundDlg::OnSoft()
……
manyanxinlv:尽管我还小 但是 我还是看看
文章分类
收藏
    相册
    动漫
    文章图片
    程序交流
    xumercury的BLOG
    狗友们的博客
    清蒸石斑鱼
    美女如刀锋
    茁茁的BLOG
    魅力老姐的窝
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 S-Record格式详解收藏

    新一篇: 很工作狂 | 旧一篇: DBAu1200 Development Board Boot Flash 地址释疑

    //========================================================================
    //TITLE:
    //    S-Record格式详解
    //AUTHOR:
    //    norains
    //DATE:
    //    Friday  25-April-2008
    //Environment:
    //    NULL
    //========================================================================

        一个完整的MOTOROLA S-Record格式数据包含如下区域:
        <type> <length> <address> <data> <checksum>
       
       
        各字段的意思分别如下:
       
        <type>:标示记录的类型,该字段占据1-byte。它可以有如下 数值:“S0”, “S1”, “S2”, “S3”, “S5”, “S7”, “S8” , “S9”
           
            “S0” -- 记录描述信息
           
            “S1”, “S2”, “S3” -- 记录存储的数据。这三者的区别在于地址(address)的长度不同,S1为2-byte,S2为3-byte,以及S3为4-byte。
           
            “S5” -- 包含了“S1”, “S2”, “S3”的信息。
           
            “S7”, “S8”, “S9” -- 确定程序的开始地址。这三者的区别也在于地址(address)的长度不同,S9为2-byte,S8为3-byte,以及S7为4-byte。
           
          
        <length>:标示了数据的长度,确切地说,是 <address>, <data> 和<checksum>这三个字段的byte的个数。该字段占据1-byte。
       
       
        <address>:标示了数据写入的起始地址。该字段的长度取决于<type>的取值。
       
       
        <data>:标示了存储的数据。该字段占据的byte个数可以这样计算:<length>的值 - <address>字段的长度(取值为2、3、4) - 1(<checksum>字段的长度)
       
       
        <checksum>:标示校验位,占据1-byte。该数据可以由<address>和<data>的数据累加然后每bit取反获得。
       
       
       
        最后我们以一条数据记录格式作为例子:
        S30A801000930300000000CF
       
        S3是记录的格式(<type>)。
       
        0A是长度(<length>),为十六进制,标识有10个byte。因为两个十六进制才是1-byte,所以801000930300000000CF的长度为10而不是20.换句话说,这数据列应该如此表示:80 10 00 93 03 00 00 00 00 CF。
       
        因为type是S3,所以地址(<address>)占4-byte,因此需要写入的地址为:0x80100093。
       
        既然已经知道了地址,那么数据(<data>)很显然就是0x0300000000了。
       
        最后的1-byte就是校验位(<chksum>)。例子数值由此得来:0xFF - ((0x0A + 0x80 + 0x10 + 0x00 + 0x93 + 0x03 + 0x00 + 0x00 + 0x00 + 0x00) & 0xFF)
       
     

    发表于 @ 2008年04月25日 09:35:17|评论(loading...)|编辑

    新一篇: 很工作狂 | 旧一篇: DBAu1200 Development Board Boot Flash 地址释疑

    评论:没有评论。

    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © norains