//***************************************************************** //作者:昊天 // //功能:在ok6410板子上跑裸板程序,用四个按键控制四个led灯的两灭及蜂鸣器的叫声, //      当按键1按下时(此时为低电平)点亮led1同时蜂鸣器响,当松手时,led1灭及蜂鸣器不响     //      以此类推剩下三个键 //时间:2012/12/13   22:01 //************************…
初学ARM感觉写个裸板程序还真的不容易,可能是没有用到ADS,keil之类的开发平台的缘故吧.编译,链接过程在linux平台上完成,这样学起来更有实感,还能顺便熟悉linux环境,以及命令,何乐而不为呢? 为此得准备一些必要的基础知识,前几篇博客总结一些汇编的指令,以及makefile的总结.有兴趣的同学可以去看看. 汇编引导程序: 这段汇编代码做了3件事情: 1.关看门狗. 2.设置栈. 3.调用main函数. 这里想说明的就是,设置站.写C函数必须先设置栈,因为需要用栈来存放函数的参数值,局…
1.原理图 2.芯片手册 3.几条汇编代码 1.ldr:读内存 ldr R0, [R1] 假设R1的值是x,读取地址x上的数据(4字节),保存到R0中 ldr R0, =0x12345678 (4字节) R0 = 0x12345678 此语句是伪指令,它会被分为几条真正的ARM指令 2.str:写内存命令 str R0, [R1] 假设R1的值是x,把R0的值写到地址x(4字节) 3.b:跳转 4.mov: mov R0, R1 把R1的值赋给R0,R0 = R1 mov R0, #0x100…
分别用汇编,汇编+C两种方式 ***************************************汇编编程led_on.s****************************************.text.global _start_start:  ldr ro,=0x***  //要操作的寄存器地址GPFCON  mov r1,#0x***   //要修改的寄存器值  str r1,[r0] ldr ro,=0x***  //要操作的寄存器地址GPFDATE  mov r1,…
作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42239705  参考博客 : [嵌入式开发]嵌入式 开发环境 (远程登录 | 文件共享 | NFS TFTP 服务器 | 串口连接 | Win8.1 + RedHat Enterprise 6.3 + Vmware11) 开发环境 : -- 操作系统 : Vmware11 + RedHat6.3 企业版 + Win8.1; -- 硬件 : OK-6410-A 开发…
ARM裸板开发过程,程序的链接地址设置为为0x30000000,而前期的启动代码以及相关硬件的初始化代码需要在内部iRAM(steppingstone,起始地址0x0)的4K中运行.链接地址与运行地址(程序启动后PC从0x0位置执行)不一致时,不能出现位置相关代码.文中主要针对 SDRAM 初始化程序地址无关码问题进行了简单的分析. (本文的由来是我在学习韦东山系列 ARM 裸板开发过程遇到的一个问题所引发的.在虚拟内存(MMU)操作部分,他提到了 SDRAM 初始化过程应该用位置无关的代码实现…
以往2440和6410的启动方式,只要我们把裸板代码烧写到NAND FLASH的开始位置,当开发板上点启动时,处理器会自动从NAND FLASH上拷贝前面一段的代码到内部的RAM中执行.按照以前的方法,我写了一段汇编代码,如下: 1_ARM/1_start/start.S #define WTCON 0xE2700000 .text .align .global _start _start: //close the watchdog ldr r1, =WTCON str r0, [r1] loo…
在裸板2440中,当我们使用nand启动时,2440会自动将前4k字节复制到内部sram中,如下图所示: 然而此时的SDRAM.nandflash的控制时序等都还没初始化,所以我们就只能使用前0~4095地址,在前4k地址里来初始化SDRAM,nandflash,初始化完成后,才能将nandflash的4096至后面的地址内容存放到SDRAM里去. 而裸板驱动的步骤如下所示: 1.写makefile 2.写lds链接脚本 (供makefile调用) 3.写真正要执行的文件代码,比如初始化nand…
在裸板2440中,当我们使用nand启动时,2440会自动将前4k字节复制到内部sram中,如下图所示: 然而此时的SDRAM.nandflash的控制时序等都还没初始化,所以我们就只能使用前0~4095地址,在前4k地址里来初始化SDRAM,nandflash,初始化完成后,才能将nandflash的4096至后面的地址内容存放到SDRAM里去. 而裸板驱动的步骤如下所示: 1.写makefile 2.写lds链接脚本 (供makefile调用) 3.写真正要执行的文件代码,比如初始化nand…
今天在工作上搞了一天高通的芯片uboot程序,目的是希望将一个裸板的程序移植到uboot中,并且开机让它运行.这个芯片是NXP4330,目前是高通的一个芯片,基于ARM-contexA9架构,那么就跟4412是一样的架构了,今天将uboot加载流程基本上算是搞明白了,也明白了uboot最后是通过一些手段,最终能够去加载kernel.img,最终启动内核,后面就是加载文件系统了. 心血来潮,所以,今天借这个机会在说明一下4412的uboot最后是怎么去获取kernel.img进而启动,其实都大同小…