找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 3740|回复: 12

jtag用wholeflash全备份和拆机用编程器读出的资料一样吗(已测试完全一样 )

[复制链接]
发表于 2010-3-15 00:52 | 显示全部楼层 |阅读模式
本帖最后由 霹雳 于 2010-3-21 15:28 编辑

请大虾们知道
我的恩山、我的无线 The best wifi forum is right here.
发表于 2010-3-15 08:39 | 显示全部楼层
不一样,
jtag 读出的是little endian 字序,
编程器读出的是big endian 字序,
其他都是一样的。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2010-3-15 08:58 | 显示全部楼层
那么,楼上朋友知道有什么软件或者办法转换这两种字序吗?
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2010-3-15 10:02 | 显示全部楼层
不一样,
jtag 读出的是little endian 字序,
编程器读出的是big endian 字序,
其他都是一样的。
maithon 发表于 2010-3-15 08:39

找个软件字节交换一下就可以了,有些编程器的软件带此功能
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2010-3-15 10:09 | 显示全部楼层
1.故事的起源 “endian”这个词出自《格列佛游记》。小人国的内战就源于吃鸡蛋时是究竟从大头(Big-Endian)敲开还是从小头(Little-Endian)敲开,由此曾发生过六次叛乱,其中一个皇帝送了命,另一个丢了王位。 我们一般将endian翻译成“字节序”,将big endian和little endian称作“大尾”和“小尾”。 2.什么是Big Endian和Little Endian? 在设计计算机系统的时候,有两种处理内存中数据的方法。一种叫为little-endian,存放在内存中最低位的数值是来自数据的最右边部分(也就是数据的最低位部分)。 比如某些文件需要在不同平台处理,或者通过Socket通信。这方面我们可以借助ntohl(), ntohs(), htonl(), and htons()函数进行格式转换, 个人补充:一个操作数作htonl或ntohl结果不一定相同,当机器字节序跟网络字节序刚好是仅仅big endian和little endian的区别时是相同的。 3. 如何理解Big Endian和Little Endian    举个例子: int a = 1; a这个数本身的16进制表示是0x00 00 00 01 在内存中怎么存储呢? 如果你的CPU是intel x86架构的(基本上就是通常我们说的奔腾cpu),那么就是0x01 0x00 0x00 0x00 , 这也就是所谓的little-endian, 低字节存放在内存的低位. 如果你的CPU是老式AMD系列的(很老很老的那种,因为最新的AMD系列已经是x86架构了), 它的字节序就是big-endian, 其内存存储就是 0x00 0x00 0x00 0x01在内存中从高字节开始存放。 现在世界上绝大多数的CPU都是little-endian。 4. 了解big-endian和little-endian有什么作用? 一个重要的作用就是了解在网络上不同的机器间的数据如何传输。 假设我们在网络上有两台机器A和B, 其中A为little-endian,B为big-endian 机器A要传输上面的整数a给机器B,如何传输呢? 过程是这样的: 机器A先把a在内存中的四个字节0x 01 0x00 0x00 0x00转化为网络字节序0x00 0x00 0x00 0x01,然后一个字节一个字节(从0x00到0x01)喂到网络上去 然后机器B从网络上一个字节一个字节地取出四个字节0x00 0x00 0x00 0x01后又会转化为本地字节序 0x00 0x00 0x00 0x01后放入内存。因而B正确地得到了来自A的数据a 如果数据缺少在网络上的字节序转换的话,情况会怎样呢? 机器A先把a由在内存的四个字节0x 01 0x00 0x00 0x00 一个字节一个字节地喂到网络上,然后机器B从网络上一个字节一个字节地收到0x 01 0x00 0x00 0x00并放入到内存中, B认为他收到了0x01000000, 也就是十进制数1677216,这显然是错误的. 5.如何判断系统是Big Endian还是Little Endian? 在/usr/include/中(包括子目录)查找字符串BYTE_ORDER(或_BYTE_ORDER, __BYTE_ORDER),确定其值。这个值一般在endian.h或machine/endian.h文件中可以找到,有时在feature.h中,不同的操作系统可能有所不同。一般来说,Little Endian系统BYTE_ORDER(或_BYTE_ORDER,__BYTE_ORDER)为1234,Big Endian系统为4321。大部分用户的操作系统(如windows, FreeBsd,Linux)是Little Endian的。少部分,如MAC OS ,是Big Endian 的。本质上说,Little Endian还是Big Endian与操作系统和芯片类型都有关系。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2010-3-15 12:54 | 显示全部楼层
要是这样的话,写个软件很容易啊
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2010-3-15 16:36 | 显示全部楼层
是选四字节交换吗

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2010-3-15 16:54 | 显示全部楼层
16位芯片应该是是双字节的
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2010-3-15 16:55 | 显示全部楼层
1byte(即一字节) = 8bit = 2Hex
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2010-3-16 09:23 | 显示全部楼层
看懂了.谢谢.
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2010-3-16 09:41 | 显示全部楼层
很多hex editor 支持交换,只要能位 位移操作就行,
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2010-3-21 15:30 | 显示全部楼层
完全一样啊  昨天比较了 jtag和编程器读出的数据一样         把jtag读出数据用编程器写回机器工作正常
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2010-4-12 16:46 | 显示全部楼层
完全一样啊  昨天比较了 jtag和编程器读出的数据一样         把jtag读出数据用编程器写回机器工作正常
霹雳 发表于 2010-3-21 15:30

不知道用编程器读出数据然后用jtag写回去能不能行哦
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

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

本版积分规则

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-4-19 23:05

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

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