【arm学习】我的第一个裸板程序】的更多相关文章

初学ARM感觉写个裸板程序还真的不容易,可能是没有用到ADS,keil之类的开发平台的缘故吧.编译,链接过程在linux平台上完成,这样学起来更有实感,还能顺便熟悉linux环境,以及命令,何乐而不为呢? 为此得准备一些必要的基础知识,前几篇博客总结一些汇编的指令,以及makefile的总结.有兴趣的同学可以去看看. 汇编引导程序: 这段汇编代码做了3件事情: 1.关看门狗. 2.设置栈. 3.调用main函数. 这里想说明的就是,设置站.写C函数必须先设置栈,因为需要用栈来存放函数的参数值,局…
//***************************************************************** //作者:昊天 // //功能:在ok6410板子上跑裸板程序,用四个按键控制四个led灯的两灭及蜂鸣器的叫声, //      当按键1按下时(此时为低电平)点亮led1同时蜂鸣器响,当松手时,led1灭及蜂鸣器不响     //      以此类推剩下三个键 //时间:2012/12/13   22:01 //************************…
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,…
首先:我们要用springmvc来写一个helloworld的例子: 首先我们需要导入所需要的架包: /demo1/WebRoot/WEB-INF/lib/commons-logging-1.1.1.jar/demo1/WebRoot/WEB-INF/lib/jstl-1.2.jar/demo1/WebRoot/WEB-INF/lib/spring-aop-3.1.4.RELEASE.jar/demo1/WebRoot/WEB-INF/lib/spring-asm-3.1.4.RELEASE.j…
作者 : 韩曙亮 博客地址 : 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 开发…
在裸板2440中,当我们使用nand启动时,2440会自动将前4k字节复制到内部sram中,如下图所示: 然而此时的SDRAM.nandflash的控制时序等都还没初始化,所以我们就只能使用前0~4095地址,在前4k地址里来初始化SDRAM,nandflash,初始化完成后,才能将nandflash的4096至后面的地址内容存放到SDRAM里去. 而裸板驱动的步骤如下所示: 1.写makefile 2.写lds链接脚本 (供makefile调用) 3.写真正要执行的文件代码,比如初始化nand…
ARM裸板开发过程,程序的链接地址设置为为0x30000000,而前期的启动代码以及相关硬件的初始化代码需要在内部iRAM(steppingstone,起始地址0x0)的4K中运行.链接地址与运行地址(程序启动后PC从0x0位置执行)不一致时,不能出现位置相关代码.文中主要针对 SDRAM 初始化程序地址无关码问题进行了简单的分析. (本文的由来是我在学习韦东山系列 ARM 裸板开发过程遇到的一个问题所引发的.在虚拟内存(MMU)操作部分,他提到了 SDRAM 初始化过程应该用位置无关的代码实现…
在ARM裸板驱动编程中,是不允许程序直接调用C库程序的.为什么呢?因为此时kernel还没有被加载,所以在封装在kernel层的C库的API是用不了的,那怎么办? 在开发过程中,printf的功能我不用再详细多说,就是用来debug调试程序的,有了printf,写代码出错的时候能够快速定位错误. 那么如何在裸板中调用呢? 1.首先,我们在u-boot源代码中找到System.map这个文件,打开后我们能看到以下信息:(太多了,我只列举一部分) 40c29e94 T memscan 40c29eb…
问题一:程序直接在iRAM内部可正常执行,而程序搬移(Nand ->SDRAM)之后,就不能正常运行了 #define NAND_SECTOR_SIZE 2048 /* 读函数 */ void nand_read(unsigned char *buf, unsigned long start_addr, int size) { int i, j; //if ((start_addr & NAND_BLOCK_MASK) || (size & NAND_BLOCK_MASK)) if…
以往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…
今天在工作上搞了一天高通的芯片uboot程序,目的是希望将一个裸板的程序移植到uboot中,并且开机让它运行.这个芯片是NXP4330,目前是高通的一个芯片,基于ARM-contexA9架构,那么就跟4412是一样的架构了,今天将uboot加载流程基本上算是搞明白了,也明白了uboot最后是通过一些手段,最终能够去加载kernel.img,最终启动内核,后面就是加载文件系统了. 心血来潮,所以,今天借这个机会在说明一下4412的uboot最后是怎么去获取kernel.img进而启动,其实都大同小…
2012-05-15 1.ARM开发板环境的搭建,nor启动,通过suppervivi,下载vivi---下载Kernel----下载文件系统,然后Nandflash启动即可. 2.在/etc/init.d/rcS 中注释开机启动qtopid, #/bin/qtopid;需要启动的就是用命令 #/bin/qtopid & 如果此命令不行,就进入bin目录中执行 #./qtopid & //&符号是表示后台运行 2012-05-16 1.git clone /e/git/.git …
要调试裸板,有两种初始化方法,一个是用烧好的uboot初始化,再有就是直接用JLink+GDBServer初始化.代码参考了网上的资料,根据手头的OK6410开发板做了修改.整体代码如下: # Connect to the J-Link GDBServer target remote localhost:2331 # Set JTAG speed to 30 kHz monitor endian little monitor speed 30 # Reset the target monitor…
Hi3518E的裸板烧写fastboot是不能像HI3531那样,可以通过FB直接烧写.遵循ARM9的烧写流程.其中一般u-boot的烧写流程可分为几类:第一:通过编程器芯片直接烧写:第二通过RVDS来烧写(海思官方原版的方式):第三通过j-link烧写.这三种方式中,前两种都是很麻烦的事情,需要编程支持比较贵.第二种价格就更加不菲.第三种方式是一般嵌入式工程师能想到也很容易能得到的方式.下面介绍j-link烧写流程,以下演示芯片为海思的HI3518E芯片. 第一.连接j-link打印对应的j-…
1.基础阶段     话说06年第一份工作从事的是PLC开发,用protel画原理图和PCB,写AVR单片机程序,焊焊板子,还去过华强北买器件,比较杂,但是接触面比较广,为进一步学ARM打下了基础. 期间不甘心只停留在AVR单片机层次,买了邵贝贝的<uCOS-II嵌入式操作系统>,看了4-5遍,弄懂它的原理,还看了陈明计的<SmallRTOS嵌入式操作系统>,之后自己写了一个AVR的时间片调度器. 2.接触ARM     08年4月份换了工作,搞B超,接触三星的S3C2410,看2…
1.linux系统中的中断处理  1.0裸板中中断异常是如何处理的?     以s5p6818+按键为例          1)按键中断的触发        中断源级配置            管脚功能            中断使能            中断触发方式        (如果中断源是uart/i2c 只需要配置中断使能)        中断级级设置            中断优先级设置            中断使能        ARMcore级设置            cp…
Stealth视频教程学习笔记(第一章) 本文是对Unity官方视频教程Stealth的学习笔记.在此之前,本人整理了Stealth视频的英文字幕,并放到了优酷上.本文将分别对各个视频进行学习总结,提炼出其中的知识点和思路思想. 视频地址在(http://www.youku.com/playlist_show/id_23389553.html),是一个Stealth的专辑,这里只放上第一个视频,其它的大家在上面的链接中慢慢看吧. 第二章有一个视频是FLV格式的,我没法把字幕嵌入其中,所以优酷上就…
20145330<Java学习笔记>第一章课后练习8知识总结以及IDEA初次尝试 题目: 如果C:\workspace\Hello\src中有Main.java如下: package cc.openhome; public class Main { public static void main(String[] args) { System.out.println("Hello World"); } } “命令行提示符”模式下你的工作路径是C:\workspace\Hel…
深度|神经网络和深度学习简史(第一部分):从感知机到BP算法 2016-01-23 机器之心 来自Andrey Kurenkov 作者:Andrey Kurenkov 机器之心编译出品 参与:chenxiaoqing.范娜Fiona.杨超.微胖.汪汪.赵巍 导读:这是<神经网络和深度学习简史>第一部分.这一部分,我们会介绍1958年感知机神经网络的诞生,70年代人工智能寒冬以及1986年BP算法让神经网络再度流行起来. 深度学习掀起海啸 如今,深度学习浪潮拍打计算机语言的海岸已有好几年,但是,…
部分视频观看地址: [视频教程]iTOP-4412开发板之学习方法--致初学者 http://v.youku.com/v_show/id_XNzQ5MDA4NzM2.html [视频教程]三星Exynos 4412处理器开发要点 http://v.youku.com/v_show/id_XNjIwODA0MTY4.html [视频教程]iTOP-4412开发板之如何扩展不同型号LCD屏 http://v.youku.com/v_show/id_XNjM4NjY2NDQ4.html [视频教程]i…
话说在大学的时候帮老师做项目的时候就已经接触过企业库了但是当初一直没明白为什么要用这个,只觉得好麻烦啊,竟然有那么多的乱七八糟的配置(原来我不知道有配置工具可以进行配置,请原谅我的小白). 直到去年在做项目的时候在看代码生成工具的时候看到了许多生成工具都内置了企业库的数据库访问及一些相关模块,才突然顿悟了,可能企业库应该还是有点用的,于是就试着使用了企业库的一些模块(当时版本是4.1),果然觉得企业库还是很不错的,微软在企业库中为我们封装了许多日常经常使用的模块,如:数据库访问,缓存,日志,异常…
1.在uboot中我可以添加自己的命令,添加的方法是找到一个uboot的命令,然后模仿着去增加属于自己的命令代码以及实现函数就可以 2.记住在使用printf进行调试的时候,在遇到指针或者字符串的时候最好使用“%x”,以为我不知道指针或者字符串中是否包含不可见字符,如果有不可见字符会导致错误,而且错误不好查找 3.对于uboot中的环境变量,其实是放在uboot里面的,也就是环境变量占用的是uboot的空间,如果不需要去实时修改环境变量的值那么就可以不用env这个分区:但是如果需要修改环境变量,…
web前端学习python之第一章_基础语法(二) 前言:最近新做了一个管理系统,前端已经基本完成, 但是后端人手不足没人给我写接口,自力更生丰衣足食, 所以决定自学python自己给自己写接口哈哈哈哈- 上一章内容:web前端学习python之第一章_基础语法(一) 函数的定义和使用 内置函数 python有很多内置的有用的函数,可以直接调用,参考网址:https://docs.python.org/3/library/functions.html#abs 数据类型转换 其他数据类型转为整数i…
web前端学习python之第一章_基础语法(一) 前言:最近新做了一个管理系统,前端已经基本完成, 但是后端人手不足没人给我写接口,自力更生丰衣足食, 所以决定自学python自己给自己写接口哈哈哈哈- 先从hello world开始 输出语法:print() 新建一个文件 hello.py //填写内容 print("hello , world") 运行该文件 这一点与Node很相似,Node运行文件的时候是node xx.js python运行是python xx.py 如果没有…
在裸板下使用 SPI 的话,有两种方法可选: 使用 IO 口模拟 SPI 进行操作 使用 SPI 控制器进行操作 这里我们选用控制器的方式,简单方便. 初始化 SPI static void SPIControllerInit(void) { /* 设置频率 */ SPPRE0 = 2; SPPRE1 = 2; /* 配置 SPI */ SPCON0 = (1<<4) | (1<<3); SPCON1 = (1<<4) | (1<<3); } 如手册所示,频…
制作uImage,需要上网下载内核+patch补丁 1.将内核用ftp发送到 打补丁patch -p1 < ../补丁文件名 打补丁文件(目录) 2.配置 :复制cp  configuration_ok  .config 3.make uImage 下图是uImage的make流程: 1.裸板烧写的方法有2种: 烧写u-boot:在PC机上,cmd控制台,cd移动到内核所在的相应文件夹,利用oflash下载u-boot: 烧写内核:都需要启动开发板NOR启动,进入u-boot后 ①一种是利用串口…
最近看了几本关于Node.js的书,本来个人技术分享网站http://yuanbo88.com/是打算用Node.js作为服务器端语言来处理后台的,后来又改成了PHP(也是自己研究,毕竟网上DEMO多,文档全,而且公司有同事可以请教,其实最主要的是我租的虚拟主机并不支持Node.js).But,我对Node.js依然没有放弃,国内也有一些大公司都已经用到了Node.js,这也将成为一个趋势.这是关于Node.js学习笔记的第一篇,以后将会陆陆续续有更多出来.做这件事,一来是为了督促自己更好的学习…
前言 作为一个软件开发者,我们除了要学会复制,黏贴,还要学会调用API和优秀的开源类库. 也许,有人说C#做不了人工智能,如果你相信了,那只能说明你的思想还是狭隘的. 做不了人工智能的不是C#这种语言,而是你,我这种普通的程序员. 做人工智能需要一定的学历背景,一定的数学基础和公司专项的资源供给:而这种机缘小之又小,你我既然是普通的程序员,就必然与此无缘. 但在人工智能如日中天的当下,接触深度学习是必然会发生的事情,所以我们要做的就是,学会调用相关的类库. 现在,让我们迈出C#学习人工智能的第一…