📄 arm入门笔记 by mamajinco.txt
字号:
注意:有时(尤其是FLASH里已经有程序的时候)0XC000000会莫名奇妙的提示内存不可以写,有几个方法可以试试:把地址改成0x10000000(好象是缓存地址),之后点EREASE擦除芯片,擦除一般说来是不成功的,最后无论如何都下不去,没关系,这时候关闭擦除对话框,然后0x10000000地址不变,烧FLASH,我一般是烧写一个我自己写的LED测试小程序把内存占上:)。回来这时候再把0X1000000换成0XC000000再按照正常操作,一般可以正常。
这现象的原因就是过去下的程序(多数是不正确的程序)正在运行 占用了RAM与ROM,下个LED测试小程序就是把这几个部分清除掉。
如果以上方法还不正常,可以用另一个程序叫FLASHP就差2个字母:)很好!在这里对这个程序的作者致敬!!
用这个软件擦FLASH,然后再用FLASHPGM烧,原因是FLASHP擦厉害,但写好象有些问题~~
细小的问题--patch命令的使用
有的时候大家收到的别人移植好的UBOOT了UCLINUC了是以patch包发布的
这里转个写的比较好的patch命令的使用方法
文件:isp1161-2.6.12.patch(在/root下)
--- linux-2.6.12/drivers/usb/Makefile 2005-06-17 22:48:29.000000000 +0300
+++ linux-2.6.12-new/drivers/usb/Makefile 2005-07-27 08:11:47.908336540 +0300
......
......
由于patch文件的首行已经指明了路径,所以根据当前所在的目录,加不同的参数使用patch命令:
1:如果当前的目录是和linux-2.6.12的同级目录:
[root@kcn-110mw]#patch -p0 </root/isp1161-2.6.12.patch
2:如果当前的目录为 linux-2.6.12/:
[root@kcn-110mw]#patch -p1 </root/isp1161-2.6.12.patch
3:如果当前的目录为 linux-2.6.12/drivers/:
[root@kcn-110mw]#patch -p2 </root/isp1161-2.6.12.pathc
0,1,2,是指略去的patch文件中的前几级目录
细小的问题---VMWARE安装与使用
mamajinco 发表于 2006-9-6 9:49:00
首先 推荐大家在开发的过程中使用VMWARE虚拟机 安装LINUX
原因比较简单 开发过程中会频繁的在两个系统之间交换 对于没有两个计算机的朋友来说 过于麻烦
对的不说了 说说开发里遇到问题
==================================
一 安装VMWARE虚拟机与LINUX
1 分出个10G左右的地方
我是分个10G的FAT32格式分区来单独做LINUX的区域,推荐分出来的空间大于9G,因为对于新手来说LIXUN要尽量全部安装。
分区尽量是FAT32格式(WINDOWS用的)NTFS听有的朋友说过好象有问题。
推荐计算机内存大于256M,我用的是512M,开VMWARE再开ACROBAT时就会明显慢。
安装后的VMWARE虚拟机基本是3种文件,VMWARE程序文件我安在C盘下了,VMWARE的配置文件(安装后再添加的,比较小)和VMWARE虚拟出的硬盘文件(选10G,该文件就是10G),所以我单独分出个驱存他们。
虚拟机里安装后的操作系统(一般都是LINUX吧,顺便说一下,你也可以按WIN了苹果了操作系统)
2 安装VMWARE虚拟机
VMWARE虚拟机对于WINDOWS来说就是个软件,用这个软件虚拟出个计算机来。对于VMWARE虚拟机里面安装的系统来说自己就独占了一台计算机。
安装没有什么特殊的,我用的是VER5.5,选标准安装,基本一律下一步就搞定。
值得注意的是中间有问你分出来多大硬盘空间,默认是8G ,改成10G吧。
之后是建立VMWARE虚拟机配置文件,根据自己的要求建立,基本不用改什么,就是整错了也可以在后来的SETTING里改。
不多说了。
3 安装LINUX
把LINUX安装盘放光驱里吧,启动虚拟机,自己就检测启动了。
多说一句,到这大家都明白了吧?启动虚拟机就相当于启动一个计算机,光盘自动启动也跟物理上的计算机完全一样。
值得注意的是:如果电脑里安了虚拟光驱可能影响光盘自动启动,如果有问题就把虚拟光驱卸了吧。
安装的时候同样没什么问题,手动分驱,按照内存大小的2倍分出来个SWAP分驱,其余的我分成一个驱,强制为主分驱,挂载点选“/”根目录,分驱格式选EXT3……
多说一句,在分驱里就能看出来了吧?LINUX完全独占了这10G的地方,看不到WINDOWS
二 安装VMWARE-tools
VMWARE-tools还是安装比较好,最起码WIN和LINUX交换文件就方便了
引用别人的文章 加上自己的注释吧
1、以ROOT身份进入LINUX
2、按下 CTRL+ALT组合键,进入主操作系统,点击VMWARE状态栏安装提示,或者点击 SETTING菜单下的ENABLE VMWARE TOOLS子菜单。
3、确认安装VMWARE TOOLS。
这时我们并没有真正的安装上了VMWARE TOOLS软件包,如果您点击菜单:DEVICES,您就会发现光驱的菜单文字变为:ide1:0-> Crogram FilesVMwareVMware WorkstationProgramslinux.iso,这表示VMWARE将LINUX的ISO映象文件作为了虚拟机的光盘
注释:有的时候不能自动挂载,自己要在菜单里光驱项目里选挂载VMWARE安装目录(不是配置文件存储目录,我的在C盘里)里某个目录的linux.iso
4、鼠标点击LINUX界面,进入LINUX。
5、运行如下命令,注意大小写。
mount -t iso9660 /dev/cdrom /mnt
加载CDROM设备,这时如果进入 /mnt 目录下,你将会发现多了一个文件:vmware-linux-tools.tar.gz。这就是WMWARE TOOLS的LINUX软件包,也就是我们刚才使用WINISO打开LINUX.ISO文件所看到的。
注释:在新版本里可以不用命令挂载和卸载了,打开 LINUX.ISO后LINUX桌面会自动弹出光驱标志,双击打开。
cp /mnt/vmware-linux-tools.tar.gz /tmp
将该软件包拷贝到LINUX的 TMP目录下。
umount /dev/cdrom
卸载CDROM。
cd /tmp
进入TMP目录
tar zxf vmware-linux-tools.tar.gz
解压缩该软件包,默认解压到vmware-linux-tools目录下(与文件名同名)。
cd vmware-linux-tools
进入解压后的目录
./install.pl
运行安装命令。
这时install提示你是否需要备份以前的配置文件,建议选择"y"。
等待INSTALL运行完成后,这时键入 START 命令,是不是可以看到漂亮的LINUX图形界面了?
三 使用VMWARE TOOLS
必须注意的是VMWARE TOOLS在每次重起LINUX之后还必须也重起一下,TMD,谁搞定不用重起告诉我一声
重起的方法:/etc/init.d/vmware-tools restart
就有消息出来了
四 文件共享
我用的VMWARE虚拟机装的LINUX,要在LINUX和WIN中间传递文件用VM-》SETTING里的SHARE FOLDER
该功能是把WIN 下的一个文件夹共享给LINUX。
这个功能必须装VMWARE TOOLS才能用。
共享以后在LINUX的MNT目录下就出一个F什么打头的文件夹,进去就是你共享的文件夹名了
细小的问题---arm-linux-gcc与arm-elf-gcc的区别
总看见有人问
arm-linux-gcc为有MMU的LINUX准备的比如2410上的LINUX
arm-elf-gcc为没有MMU的UCLINUX准备的比如44B0上的UCLINUX
就这么简单
闲聊ARM的入门(1)
我的笔记刚公布就有很多朋友来找我,把我当高手,问我“ARM怎么入门”。我不是高手,仍然是菜鸟。
但是回想起自己当时的迷茫,特意写了这篇东西,当作给和我一样的兄弟姐妹的帮助吧。问这个问题的人多半不是已经工作的工程师,而是和我一样是学生,所以这篇笔记就把看家当成我一样的菜鸟,高手勿怪。
首先声明:本人还没有找工作,事实上处于研究生刚毕业,还没开始找工作的空闲时间,44B0只是兴趣所在,打发时间。
所有看法完全是自己的感受,不代表任何他人。错了的观点各位帮我纠正。
再次补充:很多朋友看了上面的话就问我为什么研究生毕业了还不找工作:)说是打发时间,其实是因为研究生的时候带了一个项目,申请提前毕业以后项目还有块尾巴,答应导师把项目做完再走:)就这么简单。男人总点负点责,呵呵
以下问题常被问到,我就想到哪说到哪吧。
一 首先说说ARM的发展
可以用一片大好来形容,翻开各个公司的网站,招聘里面嵌入式占据了大半工程师职位。
广义的嵌入式无非几种:传统的什么51、AVR、PIC称做嵌入式微控制器;ARM是嵌入式微处理器;DSP;FPGA。
客观的讲,工作需求量上DSP的需求比ARM要多,而ARM和FPGA差不多。
DSP因为数字处理与通信领域的空前发展而火暴,小到MP3 射象头,大到我们军品里的控制器,应用面很广。
FPGA的兄弟一般做ANSIC(特殊芯片设计,好象是这么翻译的)。
而ARM单纯说来并不比一个单片机强多少,但是它的独特就在于不断下降的价格和提升的性能。这完全依靠于ARM公司的战略,厉害!!很佩服他们的战略眼光!!
值得注意的是:在找工作中,企业(著名的,小的不算)对单纯的ARM硬件开发工程师并不比单片机重视,很少有大企业的职位里写“从事过ARM开发优先”。
写的多的是什么?“嵌入式LINUX”
到这相信大家看出来了吧,需要的是硬件中的软件。
二 ARM是硬件还是软件
很难说,ARM是硬件,LINUX是软件。
ARM的硬件多半已经模块化了,像我这样把板子改成这样的就算动的多的了,这同样是ARM公司的战略,再次佩服。
实际中的LINUX的开发工作更多,更耗时。从这方面说ARM应该算是软件了。
在找工作中更是这样,举个例子,联想里和ARM最接近的是“BIOS工程师”是软件,MOTO里接近的是嵌入式LINUX工程师是软件。而其他很多公司把嵌入式产品开发归为硬件。
所以,不要讨论这个,好好玩转自己的板子才是关键。实在不爽你就把自己叫“嵌入式开发工程师”
三 要不要买开发板 买哪家
我的答案是“在你个人的学习方法”,但是如果看家是需要看这骗笔记的水平,个人推荐还是买现成的。
1 买
买板子可以把注意力集中在软件开发上,软件开发(尤其是驱动)可以不必担心自己硬件上的问题,我就是以便调试一边写驱动和程序,每次写驱动前就要先确认硬件没问题。
另外,买板子更省钱和时间,我自己做的板子,原理图PCB花了2周以上!制版又15天,回来以后焊接44B0 160个脚!那叫一个麻烦~~花了多少钱呢?2层板,制版费就300块!当然 我把接口都外引了,还做了个20X18的LCD背板,板子比较大。
总体下来 元件+LCD屏+PCB=11XX块!够2410的了。
再有就是买的资料相对来说比较全,但是不要指望有技术支持!都是骗人的,卖你之后就不会理你。
2 做
自己做可以更了解底层硬件,可以按照自己的要求加东西,比如我就加了GPS模块、 GPRS模块 、SD卡模块,扩了个IIC的35个键子的键盘、把LCD接口按照买的LCD改装了,可以用FPC线直接连接。做的很爽的。玩一把吗。
当然,你可以有策略的做,比如像我一样,把RAM和ROM,网络都保持和某现成的板子一样,这样他们的资料你就可以拿过来直接用,给自己留个退路。其他的如SD了 什么的自己做。都达到了~~就是费钱,费时间。
再有就是给做的朋友几点建议:尽量拿到现成的板子,尽量多搜集其他板子的全套资料,一定要拿到一张没问题的原理图。
网上流传的原理图多数是龚俊03年画的,再这里对龚俊表达一下我的敬意!!牛人!
但是那个图有个小BUG,我指的是03版的,后来的没这问题了。8019那地址线和地址有问题。还有人仿照他的PDF图画的SCH,更是漏洞百出!谴责!顺便谴责把龚俊板子偷卖的人。
3 买哪家
个人感觉分3类吧
1)首先是ZLG的,资料非常的全,感觉他是真正想教你怎么开发ARM,而不是像有的公司自己技术都没做好就做个板子出来卖钱。但是最大的不利就是价格太贵!而且主要是PHILIP的,货源比较麻烦~~可能有人说21XX系列的不贵啊,那是总线不外扩的,只能跑UCOS,不能跑UCLINUX。但是说是话,21XX系列才是ARM7的价格性能结合点。ARM7最适合做工业控制,ARM普及,销量都是怎么来的?都是ARM7来的,而44B0是典型的商业片子。但是,这里如果你看中的是为工作做准备,还是选能跑UCLINUX的吧。
但是仍然作为第一个推荐,因为菜鸟时期,合适的资料太重要了!!在这里被ZLG的务实精神感动!你看人家那代码写的。
2)感觉立宇泰的44B0不错
硬件没别的,就是资料比较全的说,不像有些家,原理图直接拿人家的,还错的~~
3)找个最便宜的
好象最便宜的有卖350的吧?也是没别的,就是即省了钱 还省时间搜集资料,至于资料全不全,别计较了~~硬件肯定好使就行吧。
四 要不要有51 AVR等单片机基础
有更好,但没有也无所谓。
两个月以前,我只是看别人做,耳濡目染~~,本科学过单片机,从来没做过。我们这的技术主干做AVR和51,我就跟他们调过C语言程序。你看出来了?我是个不折不扣的菜鸟吧?
但是做这个之前我特意找了ZLG的两本书,看了里面的例子和原理图,这很重要。例程里有汇编有C,都看懂了就OK,不用自己现写
五 开发都需要学习哪些软件
总结起来最主要的有以下几个吧
1 ADS调试用
确切的说是ADS+AXD。ADS里包含AXD。原来都用SDT后来ARM公司停止对SDT支持了,改支持ADS了,还是用ADS吧。
有的人的程序发布的仍然是SDT版本的,但基本都可以找到相应ADS的,新人在这里不要发蒙。ADS是编译器,AXD是调试器。便宜成AXF以后再在ARM的RAM里调试。
2 PLASHPGM
FLASH烧写的软件。AXD在RAM里调试,掉电就没有了,方便程序修改。调试好的程序再下到FLASH里,上电直接运行。
同类的软件还有很多,什么FLUTED了、FLSHP了都是,但FLASHPGM最好,要是有人还问FLASH不支持BIN格式文件的问题就要看我写的PLASHPGM使用了。
3 BANYANT调试代理(不知道名对不,起这么个难记的,我一般都叫它“半羊”因为知道它那几天刚吃了烤羊)
调试代理就是用它帮你使用更简单的JTAG(便宜啊)来实现原本1K才卖的JTAG仿真器的大部分功能。JTAG调试原理看我另一篇笔记。简单的就可以把他理解为你自己做的JTAG的驱动就行了。
调试代理还有很多种,什么H-JTAG了、ARM7了(不知道具体叫什么,就记得可执行文件叫ARM7.EXE)都是,BANYANT比较好。
需要注意的是,没种调试代理安装方法虽然都简单 但都不一样,需要看说明。而且AXD调试之前都要运行。省钱了,就别怕麻烦了。
4 ARM-ELF-TOOLS工具链
里面是UCLINUX开发用的工具比如ARM-ELF-GCC只类的。工具链就是把很多工具打包在一起发布的方便你开发的东西。具体安装方法看我另一篇笔记。
另外如果你开发LINUX就要用ARM-LINUX-TOOLS,不一样,不通用。
5 U-BOOT
大名鼎鼎的BOOTLOADER生成工具,同类的好象还有VIVI(名字很暧昧~~)
生成的BOOTLOADER烧到FLASH里,然后就可以用BOOTLOADER下载 烧写其他了
有了BOOTLOADER才能下UCLINUX。BOOTLOADER就像电脑上的BIOS。当然UCOS的不用这个,用什么我不知道:)
最新版本是1.1.4 具体使用方法看我另一篇笔记吧。
6 UCLINUX包
UCLINUX的源码包,不用多说了吧?建议大家用现成的先体会一下,然后再自己编译,裁剪。因为单独UCLINUX的编辑技术上比较简单,但涉及的方面还是比较广的。
7 VMWARE
老牌的虚拟机软件,在一个机器上虚拟出一个机器装LINUX(PC上用的),省得你来回开关机了。记得装VMWARE-TOOLS,安装方法在我另一篇笔记里。
六 有哪些书推荐
主要推荐ZLG的三本书,有这3本再加网络就不用别的书了,其中主要推荐前2本,3是介绍体系结构的,也不错
1 ARM嵌入式LINUX系统构建与驱动开发,北航版
驱动写的很详细,前期开发介绍也很好
2 ARM 嵌入式系统实验教程(二),北航版
有ZLG2200的原理图,实验程序和注释,了解人家是怎么开发的。
3 ARM嵌入式系统基础教程
最重要的是体系结构,汇编部分介绍,看看吧,增加理论素质。
4 44B0数据手册
写在这里是强调它的重要。
不推荐ZLG早期出的红色皮的ARM什么体系结构~只类的
写的太多,看烦了。
其他的书没了几本,没看见好的,大家有看过的推荐吧。
闲聊ARM的入门(2)
mamajinco 发表于 2006-9-7 9:34:00
七 选UCOS?UCLINUX?LINUX?VXWORKS?还是当单片机用
1 搞开发,工程设计,用UCOS,小巧,多进程,简单,体现了ARM7的精髓。
2 LINUX 正根的嵌入式系统,LINUX消费与通信领域用的比较多,但缺点是必须ARM9才能跑,ARM9的板子自己做就不行了,6层板太贵。买开发板1K达底吧。但是还是推荐选ARM9+LINUX
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -