<?xml version="1.0" encoding="gbk"?> <rss version="2.0"><channel> <title>定阅帖子更新</title> <link>http://www.broadkey.com.cn/XML.ASP</link><description>TEAM Board - 科伟奇电子</description> <copyright>TEAM 2.0.5 Release</copyright><generator>TEAM Board by TEAM5.Cn Studio</generator> <ttl>30</ttl><item><link>http://www.broadkey.com.cn/Thread.asp?tid=110 </link><title>献给ARM初学者</title><author>julia</author><pubDate>2009/11/28 11:58:41</pubDate><description><![CDATA[ARM简介与编程&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
1.ARM简介(摘录)&nbsp;<br />
<br />
　　ARM（Advanced&nbsp;RISC&nbsp;Machines）是微处理器行业的一家知名企业，设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软件。技术具有性能高、成本低和能耗省的特点。适用于多种领域，比如嵌入控制、消费/教育类多媒体、DSP和移动式应用等。<br />
　　ARM将其技术授权给世界上许多著名的半导体、软件和OEM厂商，每个厂商得到的都是一套独一无二的ARM相关技术及服务。利用这种合伙关系，ARM很快成为许多全球性RISC标准的缔造者。<br />
　　目前，总共有30家半导体公司与ARM签订了硬件技术使用许可协议，其中包括Intel、IBM、LG半导体、NEC、SONY、菲利浦和国民半导体这样的大公司。至于软件系统的合伙人，则包括微软、升阳和MRI等一系列知名公司。<br />
　　ARM架构是面向低预算市场设计的第一款RISC微处理器。<br />
　　2.产品介绍<br />
　　ARM提供一系列内核、体系扩展、微处理器和系统芯片方案。由于所有产品均采用一个通用的软件体系，所以相同的软件可在所有产品中运行（理论上如此）。典型的产品如下。<br />
　　&nbsp;①CPU内核<br />
　　&nbsp;--ARM7：小型、快速、低能耗、集成式RISC内核，用于移动通信。<br />
　　--&nbsp;ARM7TDMI(Thumb):这是公司授权用户最多的一项产品，将ARM7指令集同Thumb扩展组合在一起，以减少内存容量和系统成本。同时，它还利用嵌入式ICE调试技术来简化系统设计，并用一个DSP增强扩展来改进性能。该产品的典型用途是数字蜂窝电话和硬盘驱动器。<br />
　　--ARM9TDMI:采用5阶段管道化ARM9内核，同时配备Thumb扩展、调试和Harvard总线。在生产工艺相同的情况下，性能可达ARM7TDMI的两倍之多。常用于连网和顶置盒。<br />
　　②体系扩展<br />
　　--&nbsp;Thumb:以16位系统的成本，提供32位RISC性能，特别注意的是它所需的内存容量非常小。<br />
　　③嵌入式ICE调试<br />
　　由于集成了类似于ICE的CPU内核调试技术，所以原型设计和系统芯片的调试得到了极大的简化。<br />
　　④微处理器<br />
　　--ARM710系列，包括ARM710、ARM710T、ARM720T和ARM740T:低价、低能耗、封装式常规系统微型处理器，配有高速缓存（Cache）、内存管理、写缓冲和JTAG。广泛应用于手持式计算、数据通信和消费类多媒体。<br />
　　&nbsp;--ARM940T、920T系列:低价、低能耗、高性能系统微处理器，配有Cache、内存管理和写缓冲。应用于高级引擎管理、保安系统、顶置盒、便携计算机和高档打印机。<br />
　　--StrongARM:性能很高、同时满足常规应用需要的一种微处理器技术，与DEC联合研制，后来授权给Intel。SA110处理器、SA1100&nbsp;PDA系统芯片和SA1500多媒体处理器芯片均采用了这一技术。<br />
　　--ARM7500和ARM7500FE:高度集成的单芯片RISC计算机，基于一个缓存式ARM7&nbsp;32位内核，拥有内存和I/O控制器、3个DMA通道、片上视频控制器和调色板以及立体声端口;ARM7500FE则增加了一个浮点运算单元以及对EDO&nbsp;DRAM的支持。特别适合电视顶置盒和网络计算机（NC）。<br />
<br />
Windows&nbsp;CE的Pocket&nbsp;PC只支持ARMWindows&nbsp;CE可支持多种嵌入式处理器，但基于Windows&nbsp;CE的Pocket&nbsp;PC则只支持ARM一种。微软在对SH3、MIPS、ARM等嵌入式处理器做了评估后认为，ARM是一种性价比较好的选择。由于目前ARM在手持设备市场占有90%以上的份额，只支持ARM，可以有效地缩短应用程序开发与测试的时间，也降低了研发费用。由于ARM开放其处理器授权，因此，用户在市场上可以在多家整机厂商中进行选择，从而保证了这一市场的竞争性。<br />
<br />
2.&nbsp;ARM芯片CL-PS7111主要特点<br />
　<br />
电平2.7v/3.3v.相对应CPU工作频率13MHz/18MHz.&nbsp;13MHz位节电模式,&nbsp;性能相当于33MHz&nbsp;Inter&nbsp;486&nbsp;PC<br />
ARM710A内核<br />
ARM7&nbsp;CPU&nbsp;<br />
8K&nbsp;4向缓存(cache)&nbsp;<br />
MMU&nbsp;带有64入口TLB(Transition&nbsp;Look-aside&nbsp;Buffer)&nbsp;<br />
DRAM控制器<br />
支持16位和32位DRAM&nbsp;<br />
ROM/SRAM/Flash&nbsp;Memory&nbsp;控制<br />
可译码4,5或6个独立的256M存储空间段&nbsp;<br />
每个存储段支持8位,16位和32位操作,并支持分页模式&nbsp;<br />
可编程ROM/SRAM/Flash&nbsp;Memory&nbsp;<br />
支持两个低功耗CL-PS6700&nbsp;PC卡(PCMCIA)控制器<br />
2K&nbsp;片内&nbsp;SRAM用于程序快速执行<br />
片内Boot&nbsp;ROM&nbsp;(128Byte)<br />
两个同步串行接口<br />
支持SPI,或Microwire2兼容&nbsp;<br />
音频解码器(Audio&nbsp;Codec)&nbsp;<br />
27位通用接口GPIO(general-purpose&nbsp;I/O&nbsp;port)<br />
3个8位和1个3位GPIO&nbsp;port&nbsp;<br />
支持键盘阵列扫描(Scanning&nbsp;keyboard&nbsp;matrix)&nbsp;<br />
两个异步串口&nbsp;UARTs<br />
支持高达115.2K&nbsp;波特率&nbsp;<br />
内有两个接收发送(TX,RX)&nbsp;16Bytes&nbsp;FIFOs缓冲&nbsp;<br />
支持MODEM控制信号&nbsp;<br />
DC-to-DC转换器接口<br />
提供两个96KHz时钟输出,通过编程duty&nbsp;ratio(1/16---15/16)操作&nbsp;<br />
LCD控制器<br />
直接信号扫描板接口,单色LCD&nbsp;<br />
面板的大小可编程从16到1024个像素,16个像素为一个单位&nbsp;<br />
视频帧大小可编程到128K&nbsp;byte&nbsp;<br />
每个像素点的位数可编程1,2,4位&nbsp;<br />
计时器和实时时钟<br />
两个16位计时器(Timer&nbsp;counter)和一个32位实时时钟(RTC)&nbsp;<br />
　<br />
3.&nbsp;调试工具及调试方法<br />
ARM&nbsp;Project&nbsp;Manager&nbsp;(APM)&nbsp;include&nbsp;ARM&nbsp;Debuger:&nbsp;这个工具由ARM提供主要是开发程序,&nbsp;编程调试ARM芯片,&nbsp;有相当不错的开发环境和远端调试功能,&nbsp;支持汇编和C.&nbsp;它带有一个ARM自己的嵌入式操作系统ARM&nbsp;Angel,&nbsp;用户可以在它的上面开发自己的嵌入式软件,&nbsp;不过这个操作系统不是实时多任务的.&nbsp;<br />
通过计算机串口与处理器UART相连,设置计算机的超级终端&nbsp;(&nbsp;Hyper&nbsp;Terminal&nbsp;),&nbsp;通过超级终端察看硬件情况(寄存器设置,数据等)和程序运行情况,当然程序重要加入向UART送出数据的指令,&nbsp;用Beep报警也是经常用的.&nbsp;这种调试方法是用于底层调试硬件,找出硬件存在的问题.&nbsp;<br />
VxWorks&nbsp;在Shell&nbsp;不能正常运行前,也是采取这种方法来调试程序,不过一般不是硬件问题,而是BSP中存在的问题,需要根据硬件,修改BSP.&nbsp;<br />
需要说明的是：上述方法是在没有硬件仿真器的情况下采用的，仿真器是底层调试硬件程序最好，最简便直观的办法。<br />
　<br />
4.&nbsp;ARM7&nbsp;编程要点及示例&nbsp;<br />
ARM编程可参考程序示例&nbsp;ARM_Boot&nbsp;Flash&nbsp;ROM驱动&nbsp;<br />
VxWorks&nbsp;image&nbsp;装入ARM的过程:&nbsp;<br />
ARM7&nbsp;有两种运行模式,&nbsp;Boot&nbsp;模式和&nbsp;Normal&nbsp;模式,&nbsp;Boot模式主要是把程序装入(down&nbsp;load&nbsp;或load&nbsp;)Flash&nbsp;ROM中用的,&nbsp;Normal模式是一般运行程序用的.<br />
ARM7&nbsp;Boot&nbsp;模式时,&nbsp;Flash&nbsp;的地址是0x70000000片选型号是CS0&nbsp;(Normal模式下,Flash地址为0x00000000)<br />
ARM7内部有128byte的BootROM和2K的SRAM，当需要Download&nbsp;VxWorks&nbsp;image时,ARM启动采用Boot方式启动运行存在128byte&nbsp;BootROM中的程序初始化ARM内部的COM口，从COM口接受数据到2K的SRAM，这2K程序是用来真正Load&nbsp;VxWorks的，2K程序Load完毕后系统自动跳转到这2K程序执行,它的作用是再次初始化内部的COM口,通过COM口接受VxWorks到DRAM，然后由DRAM写入FLASH。在主板2K&nbsp;SRAM运行的Boot&nbsp;Load程序执行过程,可参看程序示例中ARM&nbsp;Boot&nbsp;Load程序<br />
<br />
写入完毕后，切换到Normal模式重新启动系统，系统自动跳到FLASH&nbsp;0X00000000开始运行VXWORKS。&nbsp;<br />
用PC机上的COM1与ARM内部的UART1（COM）通信来Download&nbsp;VxWorks。<br />
<br />
主要管脚定义&nbsp;<br />
32条数据线:&nbsp;D0-------D31<br />
28条地址线:&nbsp;A0-------A27&nbsp;little&nbsp;endian&nbsp;定义,&nbsp;相对应数据排列&nbsp;0&nbsp;1&nbsp;2&nbsp;3&nbsp;4&nbsp;5&nbsp;6--------27<br />
6条片选信号脚:&nbsp;CS0-------CS5,&nbsp;其实作用相当于地址线&nbsp;A28------A31<br />
4个8位的PORT口:&nbsp;PORT&nbsp;A,&nbsp;PORT&nbsp;B&nbsp;,&nbsp;PORT&nbsp;D主要用于外围芯片信号的控制.&nbsp;PORT&nbsp;E有双作用.<br />
例如&nbsp;PORT&nbsp;A&nbsp;控制键盘的行信号,&nbsp;PORT&nbsp;B&nbsp;用于RS232,&nbsp;PORT&nbsp;D&nbsp;用于控制MODEM,&nbsp;FPGA..<br />
外部中断信号EINT,&nbsp;EXTFIQ.&nbsp;<br />
编程时要根据主板原理图和硬件手册进行.&nbsp;<br />
看硬件图纸,&nbsp;该芯片和CPU的那些管脚连结.&nbsp;特别是&nbsp;PORT&nbsp;口和片选线.&nbsp;<br />
查CPU手册,&nbsp;得到PORT&nbsp;口和该片选的硬件地址.&nbsp;<br />
编程:&nbsp;用PORT口直接对芯片操作,如开,关,RESET等,&nbsp;用片选地址和芯片内地址结合对该外围芯片操作.&nbsp;<br />
　&nbsp;<br />
Exception&nbsp;vectors,&nbsp;中断向量表及中断分配&nbsp;<br />
<br />
Vector&nbsp;地址&nbsp;Exception<br />
Exception&nbsp;Mode&nbsp;Priority(1=High)&nbsp;<br />
0x0&nbsp;Reset<br />
Svc&nbsp;1&nbsp;<br />
0x4&nbsp;Undefined&nbsp;Instruction<br />
Undef&nbsp;6&nbsp;<br />
0x8&nbsp;Software&nbsp;Interrupt<br />
Svc&nbsp;6&nbsp;<br />
0xC&nbsp;Prefetch&nbsp;Abort<br />
Abort&nbsp;5&nbsp;<br />
0x10&nbsp;Data&nbsp;Abort<br />
Abort&nbsp;2&nbsp;<br />
0x14&nbsp;Reserved<br />
Not&nbsp;applicable&nbsp;Not&nbsp;applicable&nbsp;<br />
0x18&nbsp;Interrupt&nbsp;(IRQ)<br />
irq&nbsp;4&nbsp;<br />
0x1C&nbsp;Fast&nbsp;Interrupt&nbsp;(FIQ)<br />
Fiq&nbsp;3&nbsp;<br />
　<br />
这个向量表必须要放置在系统地址0x00000000&nbsp;(一般是逻辑地址,&nbsp;即经过MMU映射后的地址)处.<br />
一般是在这些地址上放跳转指令&nbsp;BL,&nbsp;跳到相应的地址空间执行相应的程序.<br />
如系统执行从0x00000000&nbsp;Reset开始,&nbsp;Reset&nbsp;跳转到某一地址开始运行操作系统.<br />
　<br />
程序示例,中断向量表&nbsp;(ARM&nbsp;asm):<br />
　<br />
__VectorStart&nbsp;&nbsp;Start&nbsp;of&nbsp;ARM&nbsp;processor&nbsp;vectors<br />
LDR&nbsp;pc,ResetV&nbsp;&nbsp;00&nbsp;-&nbsp;Reset<br />
LDR&nbsp;pc,UndefV&nbsp;&nbsp;04&nbsp;-&nbsp;Undefined&nbsp;instructions<br />
LDR&nbsp;pc,SWIV&nbsp;&nbsp;08&nbsp;-&nbsp;SWI&nbsp;instructions<br />
LDR&nbsp;pc,PAbortV&nbsp;&nbsp;0C&nbsp;-&nbsp;Instruction&nbsp;fetch&nbsp;aborts<br />
LDR&nbsp;pc,DAbortV&nbsp;&nbsp;10&nbsp;-&nbsp;Data&nbsp;access&nbsp;aborts<br />
LDR&nbsp;pc,UnusedV&nbsp;&nbsp;14&nbsp;-&nbsp;Reserved&nbsp;(was&nbsp;address&nbsp;exception)<br />
LDR&nbsp;pc,IRQV&nbsp;&nbsp;18&nbsp;-&nbsp;IRQ&nbsp;interrupts<br />
LDR&nbsp;pc,FIQV&nbsp;&nbsp;1C&nbsp;-&nbsp;FIQ&nbsp;interrupts<br />
　<br />
　<br />
中断号分配&nbsp;(FIQ,&nbsp;IRQ)<br />
中断类型&nbsp;中断号&nbsp;Name<br />
说明<br />
FIQ&nbsp;0&nbsp;外部中断&nbsp;EXTFIQ&nbsp;管脚&nbsp;NEXT&nbsp;FIQ&nbsp;<br />
&hellip;&nbsp;&hellip;&nbsp;&hellip;&nbsp;&hellip;&nbsp;<br />
IRQ&nbsp;5&nbsp;外部中断&nbsp;EINT1&nbsp;管脚&nbsp;NEINT1&nbsp;<br />
IRQ&nbsp;6&nbsp;外部中断&nbsp;EINT2&nbsp;管脚&nbsp;NEINT2&nbsp;<br />
IRQ&nbsp;7&nbsp;外部中断&nbsp;EINT3&nbsp;管脚&nbsp;NEINT3&nbsp;<br />
&hellip;&nbsp;&hellip;&nbsp;&hellip;&nbsp;&hellip;&nbsp;<br />
IRQ&nbsp;12&nbsp;内部中断&nbsp;UTXINT1&nbsp;UART1&nbsp;TX&nbsp;FIFO&nbsp;为空&nbsp;<br />
&hellip;&nbsp;&hellip;&nbsp;&hellip;&nbsp;&hellip;&nbsp;<br />
　<br />
中断号也是寄存器INTMR和INTSR的位,所以在ARM中中断的编程要点是<br />
看硬件图纸,&nbsp;该外设和CPU的那一个管脚连结.&nbsp;<br />
查CPU手册,&nbsp;得到中断号及INTMR,INTSR的地址.&nbsp;<br />
编程&nbsp;<br />
注:&nbsp;如果不是写底层driver,&nbsp;只是在系统上层编程(如VxWorks,&nbsp;Linux)&nbsp;知道中断号即可.<br />
程序示例(VxWorks):&nbsp;<br />
//登记中断号&nbsp;5,&nbsp;和相应的中断例程&nbsp;ComISR.<br />
intConnect&nbsp;(&nbsp;(&nbsp;VOIDFUNCPTR&nbsp;*&nbsp;)&nbsp;5,&nbsp;ComISR,&nbsp;0&nbsp;)&nbsp;&nbsp;<br />
//使能这中断<br />
intEnable&nbsp;(&nbsp;(&nbsp;VOIDFUNCPTR&nbsp;*&nbsp;)&nbsp;5&nbsp;);<br />
&hellip;&hellip;<br />
ARM&nbsp;Interrupts:&nbsp;ARM&nbsp;processors&nbsp;implement&nbsp;fast&nbsp;and&nbsp;normal&nbsp;level&nbsp;of&nbsp;interrupt,signalled&nbsp;externally,&nbsp;synchronise&nbsp;interrupts&nbsp;before&nbsp;an&nbsp;exception&nbsp;is&nbsp;raised.&nbsp;A&nbsp;fast&nbsp;interrupt&nbsp;requst&nbsp;(FIQ)&nbsp;will&nbsp;desable&nbsp;subsequent&nbsp;normal&nbsp;and&nbsp;fast&nbsp;interrupt&nbsp;by&nbsp;setting&nbsp;the&nbsp;I&nbsp;and&nbsp;F&nbsp;bit&nbsp;in&nbsp;CPSR,and&nbsp;a&nbsp;normal&nbsp;interrup&nbsp;request(IRQ)&nbsp;will&nbsp;disable&nbsp;subsequent&nbsp;normal&nbsp;interrupt&nbsp;by&nbsp;setting&nbsp;I&nbsp;bit&nbsp;in&nbsp;CPSR.<br />
　<br />
计时器中断编程过程<br />
ARM7一般内部有两个16位计时器(Timer&nbsp;counter)和一个32位实时时钟(RTC),计时器中断属于IRQ中断,这里以计时器1为例叙述一下中断的编程过程<br />
设置interrup&nbsp;mask&nbsp;INTMR1寄存器&nbsp;0x80000240&nbsp;第8位TC1OI计时器1为使能.&nbsp;在0x800000300&nbsp;计时器&nbsp;1&nbsp;的数据寄存器TC1D写入指定数据,这样数据开始从这个给定的数开始递减计数,计数递减至&nbsp;0&nbsp;后,会产生一个溢出underflow&nbsp;IRQ中断请求,中断状态寄存器INTSR1&nbsp;0x80000240&nbsp;第8位TC1OI置位.系统会跳到中断向量表地址&nbsp;0x00000018&nbsp;处,执行相应的中断程序,中断程序通过判断中断的类型(判断中断状态寄存器的位),来执行相应的中断服务程序ISR.&nbsp;中断状态寄存器标志位复位,计时器开始重新开始计时.<br />
<br />
　<br />
存储空间管理单元(MMU)&nbsp;<br />
物理地址映射&nbsp;<br />
重点在于片选地址CS的选取,另外MMU映射需要参考这个物理地址<br />
　<br />
ARM7&nbsp;物理地址映射表<br />
地址&nbsp;内容<br />
大小<br />
备注<br />
0xF000.0000&nbsp;Unused&nbsp;256Mbytes&nbsp;<br />
0xE000.0000&nbsp;Unused&nbsp;256Mbytes&nbsp;<br />
0xD000.0000&nbsp;DRAM&nbsp;Bank&nbsp;1&nbsp;256Mbytes&nbsp;<br />
0xC000.0000&nbsp;DRAM&nbsp;Bank&nbsp;0&nbsp;256Mbytes&nbsp;外接DRAM&nbsp;<br />
0x8000.2000&nbsp;Unused&nbsp;--1Gbytes&nbsp;<br />
0x8000.0000&nbsp;内部寄存器地址&nbsp;8Kbytes&nbsp;主要的I/O和控制&nbsp;<br />
0x7000.0000&nbsp;Boot&nbsp;ROM&nbsp;128&nbsp;bytes&nbsp;片内,封有Boot程序&nbsp;<br />
0x6000.0000&nbsp;On-chip&nbsp;SRAM&nbsp;2&nbsp;Kbytes&nbsp;片内,存放Load程序&nbsp;<br />
0x5000.0000&nbsp;PCMCIA-1(NCS[5])&nbsp;4*64&nbsp;Mbytes&nbsp;<br />
0x4000.0000&nbsp;PCMCIA-0(NCS[4])&nbsp;4*64&nbsp;Mbytes&nbsp;<br />
0x3000.0000&nbsp;外部扩展(NCS[3])&nbsp;256Mbytes&nbsp;<br />
0x2000.0000&nbsp;外部扩展(NCS[2])&nbsp;256Mbytes&nbsp;<br />
0x1000.0000&nbsp;ROM&nbsp;Bank&nbsp;1(NCS[1])&nbsp;256Mbytes&nbsp;<br />
0x0000.0000&nbsp;ROM&nbsp;Bank&nbsp;0(NCS[0])&nbsp;256Mbytes&nbsp;外接Flash&nbsp;ROM&nbsp;<br />
　<br />
MMU&nbsp;虚拟(逻辑)地址和物理地址的映射实例<br />
Vxworks支持的ARM架构的处理器,一般是RAM的起始位置为0x0,而实际上ARM的物理地址0x0是ROM的起始地址,RAM在高位地址.这就需要系统在Boot过程中,执行MMU程序,重新映射RAM和ROM的地址.即RAM起始地址为0x0.<br />
MMU主要有ARM7中协处理器coprocessor&nbsp;15控制,coporocessor主要控制:<br />
片内的MMU&nbsp;<br />
指令和数据缓存(IDC)&nbsp;<br />
Write&nbsp;Buffer(WB)&nbsp;<br />
MMU有两层页表(two-level&nbsp;page&nbsp;table)用来进行虚拟地址向物理地址转换,CP15定义16个寄存器,只有MRC和MCR指令才能对它们操作.<br />
在VxWorks系统中,MMU表分成两部分:boot&nbsp;up&nbsp;table和final&nbsp;table.在文件ramAtHigh.h中定义.该表在文件romInit.s中初始化,语句为:&nbsp;<br />
BL&nbsp;_ramAtHigh_1(2)<br />
MMU映射实例<br />
虚拟(逻辑)地址(VxWorks系统)&nbsp;硬件物理地址<br />
RAM&nbsp;首地址&nbsp;0x0000.0000&nbsp;<br />
Low&nbsp;Address&nbsp;0x0000.1000&nbsp;<br />
High&nbsp;Address&nbsp;0x0060.0000&nbsp;<br />
ROM&nbsp;　&nbsp;0x0100.0000&nbsp;<br />
　<br />
　<br />
　<br />
其他的地址逻辑地址和物理地址映射地址不变&nbsp;<br />
0x8000.0000&nbsp;内部寄存器&nbsp;<br />
..................&nbsp;<br />
.................&nbsp;<br />
相同的颜色映射对应的地址<br />
　<br />
　<br />
　<br />
　<br />
　<br />
　<br />
ROM&nbsp;0x0000.0000&nbsp;VxWorks&nbsp;image和文件系统&nbsp;<br />
RAM&nbsp;首地址&nbsp;0xC000.0000&nbsp;存放LCD,MMU表等&nbsp;<br />
0xC004.0000&nbsp;中断向量表等&nbsp;<br />
0xC004.1000&nbsp;VxWorks运行位置&nbsp;<br />
0xC064.0000&nbsp;VxWorks从ROM解压后Copy的位置&nbsp;<br />
其他的地址映射地址不变&nbsp;<br />
0x8000.0000&nbsp;内部寄存器&nbsp;<br />
..............&nbsp;<br />
..............<br />
<br />
Linux初学之学习方向和方法浅谈<br />
由于本人是做Linux培训的，所以对于初学Linux系统的朋友接触的比较多，对于初学Linux时遇到的问题了解的也够深刻，以下言论有不周到的地方望朋友们指出:<br />
首先说明希望学Linux的朋友能够忘记Windows2000，最起码忘记Windows下的盘符、应用程序等基础的东西，其次要深刻明白Linux和Windows是2个不同的系统平台，可以去对比着学习，但不要直接拿Windows那套东西直接套用到Linux学习中。<br />
一、桌面系统<br />
就是系统安装好后的视窗系统，在Windows下叫Windows，在Linux下叫&nbsp;X&nbsp;Windows，其实只是名字不一样而已(看看红旗做的桌面，真是跟Windows要做象有多象，真&nbsp;晕，这样虽然有助于Linux桌面的使用，但对于Linux系统的推广真是没什么好处)<br />
很多初学Linux人的安装好Linux后，进入其&nbsp;X&nbsp;Windows桌面，兴奋不已，以为大功告成，Linux自己会了，这种想法是很可怕的;如果我告诉你Linux的X&nbsp;Windows环境不是Linux&nbsp;系统，它只是在Linux下面运行的应用程序(类似于在Windows下运行office2000)，你是怎么想的?<br />
Windows下的应用程序几乎是不能直接在Linux系统下安装和使用，学编程的应该明白，所以不要去找Windows工具盘安装你的RAR，QQ，realone等常用工具，你是装不上的。<br />
你可以尝试去安装你硬件的最新驱动程序，安装Linux下的常用工具，做一些Linux简单的汉化，你就会理解经常在论坛里问这方面问题的朋友的困难了。<br />
总之，学桌面，不是学Linux系统。<br />
二、内核源代码学习<br />
跟unix操作系统一样都是用C语言编写。<br />
去买正版的Linux系统(不是很贵)，会附带一张或者2张Linux源代码盘，Linux程序员从这里开始，是起点也是终点。<br />
三、系统管理<br />
也就是管理Linux系统环境:SHELL、图形、系统服务、硬件驱动等等。<br />
系统管理Linux跟UNIX类似(是看了些Unix系统管理才这样说的)，基本上都是通过命令-----&gt;配置文件-----&gt;脚本文件。<br />
初学这建议从这里开始，不要一味去安装XWindows，这个X&nbsp;Windows环境只要你尽量保持经常使用，相信学会是自然而然的事情.(感觉那真实没什么好学的，只要计算机应用在1年以上的朋友，应该都能在下面操作吧)<br />
四、应用开发<br />
在Linux应用上，Linux确实跟它的竞争对手Windows相比还有一定的差距。不过在高端的应用上，Linux的市场是越来越大，如:<br />
Linux内核开发：<br />
----PDA个人掌上电脑;<br />
----专用的网络设备;防火墙设备，VPN设备等是用Linux编写的，国产的，现在销售的十分不错;<br />
----硬件驱动程序;<br />
Linux网络编程：<br />
----php编程，建立动态站点;<br />
----jsp编程;<br />
----perl，cgi编程;<br />
Linux系统下数据库的开发：<br />
----my&nbsp;sql中小型数据库系统;<br />
----oracle数据库;<br />
----DB2数据库，IBM数据库系统;<br />
五、服务器领域<br />
一说Linux，很多自然就想到了做服务器，但现在网络服务器方面，Linux的市场占有率确实是第一的;<br />
Linux服务器领域：<br />
----代理服务器，使用的是Linux的iptables功能;<br />
----电影服务器，使用的是Linux的samba服务的功能，文件和打印共享服务器;<br />
----游戏服务器，cs服务器，在Linux系统下使用cs的Linux版本建立的服务器;<br />
----客户存档服务器，采用的Linux的ftp服务器，常用的有:wu-ftp，pro-ftp软件建立的<br />
----www服务器，使用的是Linux下的apache服务器软件;<br />
----ftp服务器，下载服务器，使用的是Linux下的wu-ftp，pro-ftp，vs-ftp软件;<br />
----mail服务器，采用的是Linux下的sendmail，qmail软件;<br />
----dns服务器，使用的是Linux下的bind软件;<br />
----数据库服务器，使用的是mysql或者oracle软件;<br />
----防火墙，软件防火墙服务器，使用的是Linux的iptables功能建立的;<br />
----路由器，软路由器，使用的是Linux下的routed软件建立的;<br />
----拨号服务器，vpn服务器等等;<br />
六、系统集成<br />
范围太广，内容太多。相信IBM等建立的Linux研发中心主要就是做这个的。<br />
<table class="tf" border="0" width="98%">
    <tbody>
        <tr>
            <td height="30"><font class="red_3"><strong>ARM的开发步骤</strong></font></td>
        </tr>
        <tr>
            <td class="bw"><font class="htd">1．&nbsp;做个最小系统板：如果你从没有做过ARM的开发，建议你一开始不要贪大求全，把所有的应用都做好，因为ARM的启动方式和dsp或单片机有所不同，往往会遇到各种问题，所以建议先布一个仅有Flash,SRAM或SDRAM、CPU、JTAG、和复位信号的小系统板，留出扩展接口。使最小系统能够正常运行，你的任务就完成了一半，好在ARM的外围接口基本都是标准接口，如果你已有这些硬件的布线经验，这对你来讲是一件很容易的事情。<br />
            <br />
            2．&nbsp;写启动代码，根据硬件地址先写一个能够启动的小代码，包括以下部分：<br />
            初始化端口，屏蔽中断，把程序拷贝到SRAM中;完成代码的重映射；配置中断句柄，连接到C语言入口。也许你看到给你的一些示例程序当中，bootloader会有很多东西，但是不要被这些复杂的程序所困扰，因为你不是做开发板的，你的任务就是做段小程序，让你的应用程序能够运行下去<br />
            <br />
            3．&nbsp;仔细研究你所用的芯片的资料，尽管ARM在内核上兼容，但每家芯片都有自己的特色，编写程序时必须考虑这些问题。尤其是女孩子，在这儿千万别有依赖心理，总想拿别人的示例程序修改，却越改越乱。<br />
            <br />
            4．&nbsp;多看一些操作系统程序，在ARM的应用开放源代码的程序很多，要想提高自己，就要多看别人的程序，linux,uc/os-II等等这些都是很好的原<br />
            码。<br />
            <br />
            6.如果你是作硬件，每个厂家基本上都有针对该芯片的DEMO板原理图。先将原理图消化。这样你以后做设计时，对资源的分配心中有数。器件的DATSHEET一定要好好消化。<br />
            <br />
            7.如果做软件最好对操作系统的机理要有所了解。当然这对软件工程师来说是小菜一碟。但如果是硬件出身的就有点费劲。&nbsp;<br />
            <br />
            问：做最小系统板是2层还是4层好？<br />
            答：只有AT91可以用两层板，其他的最少4层；44b0的地和电源处理好也可用两层板；<br />
            <br />
            谈四层板和33欧电阻：<br />
            选用四层板不仅是电源和地的问题，高速数字电路对走线的阻抗有要求，二层板不好控制阻抗。33欧电阻一般加在驱动器端，也是起阻抗匹配作用的；布线时要先布数据地址线，和需要保证的高速线；<br />
            在高频的时候，PCB板上的走线都要看成传输线。传输线有其特征阻抗，学过传输线理论的都知道，当传输线上某处出现阻抗突变(不匹配)时，信号通过就会发生反射，反射对原信号造成干扰，严重时就会影响电路的正常工作。采用四层板时，通常外层走信号线，中间两层分别为电源和地平面，这样一方面隔离了两个信号层，更重要的是外层的走线与它们所靠近的平面形成称为&ldquo;微带&rdquo;(microstrip)&nbsp;的传输线，它的阻抗比较固定，而且可以计算。对于两层板就比较难以做到这样。这种传输线阻抗主要于走线的宽度、到参考平面的距离、敷铜的厚度以及介电材料的特性有关，有许多现成的公式和程序可供计算。<br />
            33欧电阻通常串连放在驱动的一端(其实不一定33欧，从几欧到五、六十欧都有，视电路具体情况)&nbsp;，其作用是与发送器的输出阻抗串连后与走线的阻抗匹配，使反射回来(假设解收端阻抗没有匹配)&nbsp;的信号不会再次反射回去(吸收掉)，这样接收端的信号就不会受到影响。接收端也可以作匹配，例如采用电阻并联，但在数字系统比较少用，因为比较麻烦，而且很多时候是一发多收，如地址总线，不如源端匹配易做。<br />
            这里梭说的高频，不一定是时钟频率很高的电路，是不是高频不止看频率，更重要是看信号的上升下降时间。通常可以用上升(或下降)&nbsp;时间估计电路的频率，一般取上升时间倒数的一半，比如如果上升时间是1ns，那么它的倒数是1000MHz，也就是说在设计电路是要按500MHz的频带来考虑。有时候要故意减慢边缘时间，许多高速IC其驱动器的输出斜率是可调的<br />
            </font></td>
        </tr>
    </tbody>
</table>
<table class="tf" border="0" width="98%">
    <tbody>
        <tr>
            <td height="30"><font class="red_3"><strong>ARM开发详解全集[下载]</strong></font></td>
        </tr>
        <tr>
            <td class="bw"><font class="htd">本书比较适合于开发者和初学者，非常有学习价值，如对ARM感兴趣的可以留下邮箱或给我发邮件，大家共同讨论学习，我的邮箱henry518@163.com.下面是《ARM开发详解》全文和本书介绍，本书共八章：&nbsp;<br />
            <br />
            <br />
            <br />
            第一章：简要介绍目前ARM微处理器的种类及主要结构特征。通过对本章的阅读，可使读者对ARM技术、ARM微处理器及应用有一个总体的认识。<br />
            <br />
            第二章：介绍ARM编程模型的基本知识，包括寄存器的组织和ARM微处理器的工作模式，ARM体系结构中异常及处理等基本概念。通过本章的阅读，可使读者了解ARM编程模型的基本知识，为进一步的开发做准备。<br />
            <br />
            第三章：详细介绍ARM体系的指令系统和寻址方式，着重介绍32位的ARM指令集。16&nbsp;位的Thumb指令集为32位ARM指令集的一个子集，在了解了ARM指令集的基础上，就很容易理解Thumb指令。本章所介绍的内容适用于所有具有ARM7TDMI内核的ARM微处理器。<br />
            <br />
            第四章：介绍ARM汇编语言程序设计的基本知识。通过阅读本章，读者可以掌握ARM汇编语言的设计方法。<br />
            <br />
            第五章：本章是全书的重点，详细介绍基于S3C4510B的系统的设计全过程，包括存储器及外围芯片的选型，各单元电路的设计、调试等。通过对本章的阅读，具有一定系统设计知识的读者应该可以掌握基于S3C4510B的系统设计，同时由于ARM体系结构的一致性和系统外围电路的通用性，本章所描述的设计方法也同样适合于其他ARM芯片。<br />
            <br />
            第六章：详细介绍基于S3C4510B的系统的各功能模块工作原理与应用编程示例，包括:通用I/O口、串行接口、定时器、中断控制器、GDMA控制器、MAC控制器等的工作原理与编程示例，Flash存储器的编程与擦除等。通过本章的阅读，可使读者了解S3C4510B各功能模块的编程方法，并在自己设计的系统中加以充分利用。<br />
            <br />
            第七章：详细介绍嵌入式操作系统的基本概念、操作系统在S3C4510B上的编译、运行过程，以及在uClinux操作系统上的简单应用程序的设计。通过本章的阅读，可使读者了解uClinux操作系统及在S3C4510B的运行，并能进行进一步的应用程序的开发。<br />
            <br />
            第八章：详细介绍ADS集成开发环境的使用方法，这也是进行应用程序开发的基本工具。<br />
            <br />
            <img border="0" align="absMiddle" src="http://www.embedworld.com/skin/skin_3/small/download.gif" alt="" /> <a href="http://www.embedworld.com/upload/forum/2006011015402482.rar" target="_blank">[ 点击下载 ]</a><br />
            <img border="0" align="absMiddle" src="http://www.embedworld.com/skin/skin_3/small/download.gif" alt="" /> <a href="http://www.embedworld.com/upload/forum/2006011015405119.rar" target="_blank">[ 点击下载 ]</a><br />
            <img border="0" align="absMiddle" src="http://www.embedworld.com/skin/skin_3/small/download.gif" alt="" /> <a href="http://www.embedworld.com/upload/forum/2006011015411678.rar" target="_blank">[ 点击下载 ]</a><br />
            <img border="0" align="absMiddle" src="http://www.embedworld.com/skin/skin_3/small/download.gif" alt="" /> <a href="http://www.embedworld.com/upload/forum/2006011015414625.rar" target="_blank">[ 点击下载 ]</a><br />
            <img border="0" align="absMiddle" src="http://www.embedworld.com/skin/skin_3/small/download.gif" alt="" /> <a href="http://www.embedworld.com/upload/forum/2006011015420371.rar" target="_blank">[ 点击下载 ]</a><br />
            <img border="0" align="absMiddle" src="http://www.embedworld.com/skin/skin_3/small/download.gif" alt="" /> <a href="http://www.embedworld.com/upload/forum/2006011015452323.rar" target="_blank">[ 点击下载 ]</a><br />
            <img border="0" align="absMiddle" src="http://www.embedworld.com/skin/skin_3/small/download.gif" alt="" /> <a href="http://www.embedworld.com/upload/forum/2006011015501069.rar" target="_blank">[ 点击下载 ]</a><br />
            <img border="0" align="absMiddle" src="http://www.embedworld.com/skin/skin_3/small/download.gif" alt="" /> <a href="http://www.embedworld.com/upload/forum/2006011015505876.rar" target="_blank">[ 点击下载 ]</a><br />
            </font></td>
        </tr>
    </tbody>
</table>]]></description></item></channel></rss>