Board logo

标题: C和C++嵌入式系统编程 [打印本页]

作者: linuxarm    时间: 2007-1-5 20:33     标题: C和C++嵌入式系统编程

C和C++嵌入式系统编程 part1

 

 

f4ffjCF4.rar (976.56 KB)


附件: [C和C++嵌入式系统编程] f4ffjCF4.rar (2007-1-5 20:33, 976.56 KB) / 下载次数 674
http://bbs.eccn.com/attachment.php?aid=684&k=1a9da43ad276e27068373b7dd43e3326&t=1732480464&sid=0FwnOH
作者: linuxarm    时间: 2007-1-5 20:33

C和C++嵌入式系统编程 part2

 

 

uaZRVP2K.rar (431.69 KB)


附件: [C和C++嵌入式系统编程] uaZRVP2K.rar (2007-1-5 20:33, 431.69 KB) / 下载次数 714
http://bbs.eccn.com/attachment.php?aid=685&k=814227333da846abec04f524c67248a4&t=1732480464&sid=0FwnOH
作者: jjcrazy    时间: 2007-1-8 12:49

asdfasd
作者: oraclexiang    时间: 2007-2-5 10:59



作者: stone123456    时间: 2007-2-6 13:30

oh


作者: zsfWalker    时间: 2007-2-9 12:05

hao ,xiexie
作者: yinxb0714    时间: 2007-2-12 14:13

不错,谢谢!
作者: zhaowenzhe    时间: 2007-2-13 23:19

呵呵 。我看看 有没有关于用C来模拟C++封装的例子。

作者: zijunqy    时间: 2007-3-5 09:23

好东西,谢谢。


作者: 流风    时间: 2007-3-7 08:34

谢谢提供
作者: zengzpi    时间: 2007-3-12 16:06

thanks!
作者: lq7824    时间: 2007-3-15 19:15

好好好
作者: Enbrow    时间: 2007-3-26 13:54

谢谢提供
作者: ang_xj    时间: 2007-3-28 11:03

谢谢。。看一下


作者: ic_chen    时间: 2007-3-29 14:18

怎么级别不够

[em06]
作者: dingjian_209    时间: 2007-3-29 14:25

好东东


作者: zhangchule    时间: 2007-4-2 12:55

谢谢!


作者: wufeng    时间: 2007-4-17 23:50

好东西啊


作者: beiter    时间: 2007-4-19 17:23

呵呵
作者: daimy    时间: 2007-4-23 10:31

想看看,谢谢
作者: hatty    时间: 2007-4-25 00:14

为什么要发表才能看?[em06]
作者: match07    时间: 2007-4-26 17:50

支持一个!


作者: wgn1110    时间: 2007-4-27 15:17

sdfg
作者: wgn1110    时间: 2007-4-27 15:18

sdfg
作者: yifang310    时间: 2007-5-3 22:25

谢谢


作者: spirit0903    时间: 2007-5-9 14:47

怎么一解压就是错误,请指教啊


作者: girllara    时间: 2007-5-11 11:08

为什么不能解压?
作者: simon117    时间: 2007-5-14 18:59

好东西,谢谢
作者: baby6066    时间: 2007-5-17 01:20

不错 正需要呢


作者: wanghengone    时间: 2007-5-18 15:59

JTAG(Joint Test Action Group)联合测试行动小组)是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试。现在多数的高级器件都支持JTAG协议,如DSP、FPGA器件等。标准的JTAG接口是4线:TMS、 TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线。
JTAG最初是用来对芯片进行测试的,基本原理是在器件内部定义一个TAP(Test Access Port?测试访问口)通过专用的JTAG测试工具对进行内部节点进行测试。JTAG测试允许多个器件通过JTAG接口串联在一起,形成一个JTAG链,能实现对各个器件分别测试。现在,JTAG接口还常用于实现ISP(In-System rogrammable?在线编程),对FLASH等器件进行编程。
JTAG编程方式是在线编程,传统生产流程中先对芯片进行预编程现再装到板上因此而改变,简化的流程为先固定器件到电路板上,再用JTAG编程,从而大大加快工程进度。JTAG接口可对PSD芯片内部的所有部件进行编程

JTAG的一些说明

通常所说的JTAG大致分两类,一类用于测试芯片的电气特性,检测芯片是否有问题;一类用于Debug;一般支持JTAG的CPU内都包含了这两个模块。
一个含有JTAG Debug接口模块的CPU,只要时钟正常,就可以通过JTAG接口访问CPU的内部寄存器和挂在CPU总线上的设备,如FLASH,RAM,SOC(比如4510B,44Box,AT91M系列)内置模块的寄存器,象UART,Timers,GPIO等等的寄存器。

上面说的只是JTAG接口所具备的能力,要使用这些功能,还需要软件的配合,具体实现的功能则由具体的软件决定。
例如下载程序到RAM功能。了解SOC的都知道,要使用外接的RAM,需要参照SOC DataSheet的寄存器说明,设置RAM的基地址,总线宽度,访问速度等等。有的SOC则还需要Remap,才能正常工作。运行Firmware时,这些设置由Firmware的初始化程序完成。但如果使用JTAG接口,相关的寄存器可能还处在上电值,甚至时错误值,RAM不能正常工作,所以下载必然要失败。要正常使用,先要想办法设置RAM。在ADW中,可以在Console窗口通过Let 命令设置,在AXD中可以在Console窗口通过Set命令设置。
下面是一个设置AT91M40800的命令序列,关闭中断,设置CS0-CS3, 并进行Remap,适用于AXD(ADS带的Debug)
setmem 0xfffff124,0xFFFFFFFF,32 ---关闭所有中断
setmem 0xffe00000,0x0100253d,32 ---设置CS0
setmem 0xffe00004,0x02002021,32 ---设置CS1
setmem 0xffe00008,0x0300253d,32 ---设置CS2
setmem 0xffe0000C,0x0400253d,32 ---设置CS3
setmem 0xffe00020,1,32 ---Remap
如果要在ADW(SDT带的DEBUG)中使用,则要改为:
let 0xfffff124=0xFFFFFFFF ---关闭所有中断
let 0xffe00000=0x0100253d ---设置CS0
let 0xffe00004=0x02002021 ---设置CS1
let 0xffe00008=0x0300253d ---设置CS2
let 0xffe0000C=0x0400253d ---设置CS3
let 0xffe00020=1 ---Remap
为了方便使用,可以将上述命令保存为一个文件config.ini, 在Console窗口输入 ob config.ini 即可执行。
使用其他debug,大体类似,只是命令和命令的格式不同。


设置RAM时,设置的寄存器以及寄存器的值必须和要运行程序的设置一致。一般编译生成的目标文件是ELF格式,或类似的格式,包含有目标码运行地址,运行地址在Link时候确定。Debug下载程序时根据ELF文件中的地址信息下载程序到指定的地址。如果在把RAM的基地址设置为0x10000000, 而在编译的时候指定Firmware的开始地址在0x02000000, 下载的时候,目标码将被下载到0x02000000,显然下载会失败。

通过JTAG下载程序前应关闭所有中断,这一点和Firmware初始化时关闭中断的原因相同。在使用JTAG接口的时候,各中断的使能未知,尤其是 FLASH里有可执行码的情况,可能会有一些中断被使能。使用JTAG下载完代码,要执行时,有可能因为未完成初始化就产生了中断,导致程序异常。所以,需要先关闭中断,一般通过设置SOC的中断控制寄存器完成。

使用JTAG写Flash。在理论上,通过JTAG可以访问CPU总线上的所有设备,所以应该可以写FLASH,但是FLASH写入方式和RAM大不相同,需要特殊的命令,而且不同的FLASH擦除,编程命令不同,而且块的大小,数量也不同,很难提供这一项功能。所以一般Debug不提供写Flash功能,或者仅支持少量几种Flash。

目前就我知道的,针对 ARM,只有FlashPGM这个软件提供写FLASH功能,但使用也非常麻烦。AXD,ADW都不提供写FLASH功能。我写Flash的方法时是,自己写一个简单的程序,专门用于写目标板的FLASH,利用JTAG接口,下载到目标板,再把要烧写的目标码装成BIN格式,也下到目标板(地址和烧 FLASH的程序的地址不同),然后运行已经下载的烧FLASH的程序。使用这种方式,比起FlashPGM的写Flash,速度似乎要快一些。

关于简单JTAG电缆。
目前有各种各样简单JTAG电缆,其实只是一个电平转换电路,同时还起到保护作用。JTAG的逻辑则由运行在PC上的软件实现,所以在理论上,任何一个简单 JTAG电缆,都可以支持各种应用软件,如Debug等。我就曾使用同一个JTAG电缆写Xilinx CPLD,AXD/ADW调试程序。关键再于软件的支持,大多数软件都不提供设定功能,因而只能支持某种JTAG电缆。

关于简单JTAG电缆的速度。
JTAG 是串行接口,使用打印口的简单JTAG电缆,利用的是打印口的输出带锁存的特点,使用软件通过I/O产生JTAG时序。由JTAG标准决定,通过JTAG 写/读一个字节要一系列的操作,根据我的分析,使用简单JTAG电缆,利用打印口,通过JTAG输出一个字节到目标板,平均需要43个打印口I/O, 在我机器上(P4 1.7G),每秒大约可进行660K次 I/O 操作,所以下载速度大约在660K/43, 约等于15K Byte/S. 对于其他机器,I/O速度大致相同,一般在600K ~ 800K.

关于如何提高JTAG下载速度。
很明显,使用简单JTAG电缆无法提高速度。要提高速度,大致有两种办法,
1。使用嵌入式系统提供JTAG接口,嵌入式系统和微机之间通过USB/Ethernet相连,这要求使用MCU。
2。使用CPLD/FPGA提供JTAG接口,CPLD/FPGA和微机之间使用EPP接口(一般微机打印口都支持EPP模式),EPP接口完成微机和CPLD/FPGA之间的数据传输,CPLD/FPGA完成JTAG时序。
作者: hxl8888    时间: 2007-5-29 10:26     标题: 太好了

tai hao le
作者: hybk1997    时间: 2007-6-23 01:32

谢谢提供
作者: hybk1997    时间: 2007-6-23 01:33

谢谢提供
作者: semitroy    时间: 2007-7-16 17:45

谢谢啦!

谢谢啦!

谢谢啦!

谢谢啦!

谢谢啦!

谢谢啦!


作者: fishhua    时间: 2007-7-16 22:01

最近在学习,想找点资料
作者: leon001    时间: 2007-7-18 13:21

不错 ,多谢


作者: kyoku    时间: 2007-7-18 14:36

ding
作者: wangvance    时间: 2007-8-15 19:12

谢谢


作者: speedzhou    时间: 2007-8-16 21:02

Thank You!
作者: flybye    时间: 2007-8-17 22:52

bucuo
作者: cjyaaa2000    时间: 2007-8-17 23:53

谢谢提供
作者: woshizsl    时间: 2007-8-23 12:18

谢谢楼主


作者: derylin    时间: 2007-8-24 17:34

的确是好东西!谢谢楼主!
作者: koduck    时间: 2007-8-30 01:33

谢谢分享!
作者: shihongbin1984    时间: 2007-9-1 11:00

什么精彩内容
作者: linsiling    时间: 2007-9-1 19:47

谢谢,顶一个!


作者: xinrui_198    时间: 2007-9-2 18:01     标题: fasf

fasfasasfsa
作者: superboy110    时间: 2007-9-14 19:47

好东西啊
作者: frank.tan    时间: 2007-9-14 21:57

Thanks
作者: monk3947    时间: 2007-9-19 13:55     标题: 回复:(linuxarm)C和C++嵌入式系统编程

thanks!i am searching for sth about it.and are there any things aboutMC68HC908GR8?


作者: yuhaihan    时间: 2007-9-25 14:22

[em01]
作者: connie_ling    时间: 2007-10-14 00:02

 

[em05]
作者: Archief    时间: 2007-10-15 03:03


作者: ieyer    时间: 2007-10-17 14:39

看一下看看!
作者: hulijun    时间: 2007-10-25 15:27

太好了

非常好


作者: catherine_kth    时间: 2007-10-30 23:57     标题: ding

[em01]
作者: yu1004    时间: 2007-10-31 12:12

好的,谢谢!
作者: Hendry    时间: 2007-10-31 14:26

it is so good!
作者: Hendry    时间: 2007-11-1 13:39

good!I like it!
作者: jtty    时间: 2007-11-1 14:24     标题: need right download

need right download
作者: li_xb@risingtop    时间: 2007-11-14 14:43     标题:

不顶不行!
作者: zhaoxilin    时间: 2007-11-17 02:47

xieixe


作者: wanghong    时间: 2007-11-22 12:26

怎样才能下载


作者: xiaobinic    时间: 2007-11-23 08:58

为什么我下载不了啊
作者: xty    时间: 2007-11-25 09:26

我为什么不能下载

[em14]
作者: 猫咪    时间: 2007-11-25 10:57

先收下,以后可能用的上,谢谢!
作者: mming    时间: 2007-11-30 13:04

3x for ur share
作者: zxrzjj    时间: 2007-12-11 22:16

好好好


作者: rexandimmj    时间: 2007-12-16 20:09

感謝分享!!!!!!!!!!!!!!!!!!!!!
作者: weilexiazai    时间: 2007-12-16 23:07

谢谢分享
作者: jiangwei0928    时间: 2007-12-19 22:08

谢谢
作者: cth2008    时间: 2007-12-31 21:48

好东西,谢谢。

[em02]
作者: slg    时间: 2008-1-4 11:26     标题: edk初学知识汇总

大家把edk学习的注意啊,心得啊,资料之类发一发吧。支持中文!!


作者: cheng066    时间: 2008-1-5 13:10

怎么下载






欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0