我的开发板 是这样的
一个nand flash 一个 norflash
先用jlink下载Uboot到norflash
然后启动 用uboot更新uboot到 nandflash的方式 下载裸机程序
然后从nandflash启动
2ADS用法 可以去网上查查 好多
3(不使用ADS)建立裸机程序:必须自己实现几个东西
31初始化硬件(汇编):比如关闭看门狗啊 初始化栈指针(如果你要跑C的话) 之类
32MAKEFILE 中要制定连接地址 去_elf头
33实现你的C程序
比如简单的控制LED的裸机程序
crt0S:
text
global _start
_start:
ldr r0, =0x53000000 @ WATCHDOG寄存器地址
mov r1, #0x0
str r1, [r0] @ 写入0,禁止WATCHDOG,否则CPU会不断重启
ldr sp, =10244 @ 设置堆栈,注意:不能大于4k, 因为现在可用的内存只有4K
@ nand flash中的代码在复位后会移到内部ram中,此ram只有4K
bl main @ 调用C程序中的main函数
halt_loop:
b halt_loop
MAKEFILE :
key_ledbin : crt0S key_ledc
arm-linux-gcc -g -c -o crt0o crt0S
arm-linux-gcc -g -c -o key_ledo key_ledc
arm-linux-ld -Ttext 0x0000000 -g crt0o key_ledo -o key_led_elf
arm-linux-objcopy -O binary -S key_led_elf key_ledbin
arm-linux-objdump -D -m arm key_led_elf > key_leddis
clean:
rm -f key_leddis key_ledbin key_led_elf o
C代码:
#define GPBCON ((volatile unsigned long )0x56000010)#define GPBDAT ((volatile unsigned long )0x56000014)
int main()
{
GPBCON = 0x00000400; // 设置GPB5为输出口, 位[11:10]=0b01
GPBDAT = 0x00000000; // GPB5输出0,LED1点亮
return 0;}
执行make 生成bin文件
然后下载到nandflash
从nand启动
ARM的学习和开发都需要学习哪些软件 总结起来最主要的有以下几个吧 1 ADS调试用 确切的说是ADS+AXD。ADS里包含AXD。原来都用SDT后来ARM公司停止对SDT支持了,改支持ADS了,还是用ADS吧。 有的人的程序发布的仍然是SDT版本的,但基本都可以找到相应ADS的,新人在这里不要发蒙。ADS是编译器,AXD是调试器。编译成AXF以后再在ARM的RAM里调试。 2 FLASHPGM FLASH烧写的软件。AXD在RAM里调试,掉电就没有了,方便程序修改。调试好的程序再下到FLASH里,上电直接运行。 同类的软件还有很多,什么FLUTED了、FLSHP了都是,但FLASHPGM最好,要是有人还问FLASH不支持BIN格式文件的问题就要看我写的FLASHPGM使用了。 3 BANYANT调试代理(不知道名对不,起这么个难记的,我一般都叫它“半羊”因为知道它那几天刚吃了烤羊) 调试代理就是用它帮你使用更简单的JTAG(便宜啊)来实现原本1K才卖的JTAG仿真器的大部分功能。JTAG调试原理看我另一篇笔记。简单的就可以把他理解为你自己做的JTAG的驱动就行了。 调试代理还有很多种,什么H-JTAG了、ARM7了(不知道具体叫什么,就记得可执行文件叫ARM7EXE)都是,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的不用这个,用什么我不知道:) 最新版本是114 具体使用方法看我另一篇笔记吧。 6 UCLINUX包 UCLINUX的源码包,不用多说了吧?建议大家用现成的先体会一下,然后再自己编译,裁剪。因为单独UCLINUX的编辑技术上比较简单,但涉及的方面还是比较广的。 7 VMWARE 老牌的虚拟机软件,在一个机器上虚拟出一个机器装LINUX(PC上用的),省得你来回开关机了。记得装VMWARE-TOOLS,安装方法在我另一篇笔记里。 8 source insight 代码编辑工具 linux下使用kscope
应该不是C没进去 是那个GPMCON赋值没有先把那四个口变成0000 你可以看看ARM11的中文手册 GPMCON每个口的默认值是0x0010 只有GPMCON |=0x1111不对 前面加一条GPMCON &=~0xffff
一、对于学习ARM,可以分成很多种:
a 从ARM的芯片类型就有:ARM7、ARM9、ARM11、A8之类。
b 从用途上可以分:用于学习,用于工作,消费电子,工程控制。
1、从芯片类型上分析:
ARM7,可以当作高级的单片机来使用, 但也是可以跑 *** 作系统,比如:ucos‖
而ARM9,就可能用来跑大的嵌入式 *** 作系统,比如Linux,wince,android,ubuntu,chromeos等。
2、作为学习:
用于学习的话可以选择ARM9 三星S3C2440就是一个很好的选择,其他也可以选择友善和飞凌开发板,而且这些学习板的价格现在也可以接受。
如果是用于学习Android *** 作系统的话,最好选择好一点板子,比如A8的三星S5PV20,这个友善和华天都是有开发的。 当然也可以选择S3C6410,但是这颗芯片用于运行android 的未免有点资源不足,而且在内存方面(DDR),也能使用DDR,不能够装载DDR2, 而且它的封装(BGA)的间距是05mm,对于S5PV210,则是08mm。
3、这边说说选择S5PV210来学习android的原因:
a 在相同的内存大小的情况下,DDR2的价格会比DDR便宜的多;
b BGA球的间距为05mm,打印PCB板需要使用激光孔,而间距为08mm,则只需要普通的机械孔工艺就可以了。简单讲,制作间距为08mm的PCB,费用较低。
c运行android *** 作系统,最好CPU的频率要达到600MHz以上,800MHz。
d 主流的Android 22平板大都采用了ARM Coretex-A8/A9架构的CPU。
4、用于工程控制的话, 可以选择TI或者友善和飞凌开发板,这里就不详细说明了。
ARM开发具体是:工程师使用ARM嵌入式Linux *** 作系统进行内核编译及文件系统制作,使用相关开发工具进行ARM软、硬件开发设计的专业技术人员。
英国ARM公司是全球领先的半导体知识产权 (IP) 提供商。全世界超过95%的智能手机和平板电脑都采用ARM架构 。ARM设计了大量高性价比、耗能低的RISC处理器、相关技术及软件。2014年基于ARM技术的全年全球出货量是120亿颗,从诞生到现在为止基于ARM技术的芯片有600亿颗。
技术具有性能高、成本低和能耗省的特点。在智能机、平板电脑、嵌入控制、多媒体数字等处理器领域拥有主导地位。
扩展资料
1、ARM开发的职业要求
教育培训:自动化、通信、电子专业大专以上学历。
工作经验:熟悉通信原理,掌握RS485以太网协议;熟悉VHDL的设计,熟悉arm9软硬件设计;熟悉数字及模拟电路设计;有C/C++开发经验;熟悉C语言,熟悉ARM嵌入式系统开发,能熟练使用Protel、PADS和Cadence工具;
有良好的电子线路设计、分析能力,良好的硬件系统调试能力,流程快速理解英文技术文档。
2、ARM的特点
ARM 的商业模式主要涉及 IP 的设计和许可,而非生产和销售实际的半导体芯片。ARM向合作伙伴网络(包括世界领先的半导体公司和系统公司)授予 IP 许可证。
这些合作伙伴可利用 ARM 的 IP 设计创造和生产片上系统设计,但需要向 ARM 支付原始 IP 的许可费用并为每块生产的芯片或晶片交纳版税。除了处理器 IP 外,ARM还提供了一系列工具、物理和系统 IP 来优化片上系统设计。
参考资料:
参考资料:
以上就是关于怎么给ARM11烧写裸机程序,需要先下载U-BOOT吗还是什么都不需要,直接用J-Linker就可以下载全部的内容,包括:怎么给ARM11烧写裸机程序,需要先下载U-BOOT吗还是什么都不需要,直接用J-Linker就可以下载、学习ARM嵌入式如何起步、现在学习arm11裸机编程遇到问题能帮忙解决下吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)