ARM裸机加强版
文章平均质量分 89
基于Jz2440从零编写裸机程序,包含GCC交叉编译工具链Makefile的使用,arm芯片时钟体系,UART串口,内存控制器与SDRAM,代码重定位,异常与中断,NOR Flash,NandFlash,LCD,ADC和触摸屏,I2C,SPI,红外,温湿度传感器的裸机编程
韦东山
深圳百问网科技有限公司技术总监,毕业于中国科学技术大学电子、软件专业双学位,10余年嵌入式一线开发经验, 畅销书<<嵌入式Linux应用开发完全手册>>作者, 擅长ARM/MIPS等架构的Linux底层系统开发, 曾为多家知名培训机构特邀讲师,2011年陆续录制的工程师必看教程------韦东山系列Linux/Android视频,有口皆碑。累计学员10万+,当之无愧成为嵌入式培训领域的佼佼者。
展开
-
U-boot常用命令汇总
我们经常使用uboot命令,虽然资料光盘->常见问题目录有U-boot常用命令汇总文档,但从大家的反馈来看,并没有很多人注意到这个文档,所以把它挪到这里。如此全的uboot命令汇总,建议收藏。注意:不同版本的uboot,它的命令有所不同,这里使用u-boot 1.1.6。一、nandflash分区信息OpenJTAG>mtdpartdevice nand0 , # pa...原创 2018-05-25 11:43:57 · 1328 阅读 · 0 评论 -
推荐使用集串口,SSH远程登录和FTP传输三合一工具MobaXterm
在以前的资料里,串口和SSH远程登使用SecureCRT,window与ubuntu数据传输使用filezilla,窗口切换来切换去,麻烦也眼花缭乱。有没有一个工具搞定串口、SSH和FTP?有!它就是MobaXterm。原创 2017-10-31 10:21:07 · 12041 阅读 · 1 评论 -
外设位宽为8、16、32时,CPU与外设之间地址线的连接方法
对于软件而言,它不知道底下发生了什么事,它只管结果原创 2017-09-27 16:00:06 · 1120 阅读 · 0 评论 -
可能是最通俗易懂的方式讲解ARM中断原理以及中断嵌套
几天前一个学生问我ARM中断嵌套的问题,我才发现原来在我心中理所当然的事对学生来说理解实属不易。 ARM有七种模式,我们这里只讨论SVC、IRQ和FIQ模式。 我们可以假设ARM核心有两根中断引脚(实际上是看不见的),一根叫 irq pin, 一根叫fiq pin。在ARM的cpsr中,有一个I位和一个F位,分别用来禁止IRQ和FIQ。 先不说中断控制器,只说ARM核心。正常情况下转载 2017-09-21 20:52:26 · 3004 阅读 · 0 评论 -
浅谈text段、data段和bss段
一般情况,一个程序本质上都是由 bss段、data段、text段三个段组成——这是计算机程序设计中重要的基本概念。而且在嵌入式系统的设计中也非常重要,牵涉到嵌入式系统运行时的内存大小分配,存储单元占用空间大小的问题。 在采用段式内存管理的架构中(比如intel的80x86系统),bss段(Block Started by Symbol segment)通常是指用来存放程序中未初始化的全局变原创 2017-08-21 15:40:31 · 5406 阅读 · 2 评论 -
第001课 不要再用老方法学习单片机和ARM
原文地址: http://wiki.100ask.org单片机程序员发展的必选之路: Linux我们的第一期是教大家如何将ARM开发板当作单片机来用,但在这期视频的第一节,我告诉你们,学习单片机是没有前途的。话说得非常狠,因为不这样说,没法警醒你们。我说这句话,是冒着生命危险的,因为很多人依靠单片机来生活,淘宝上有一大堆售卖单片机开发板的,像51、STM32等。工资方面我们...原创 2018-02-26 19:18:35 · 3501 阅读 · 4 评论 -
第002课 ubuntu环境搭建和ubuntu图形界面操作(免费)
原文地址: http://wiki.100ask.org第001节新建目录新建并编辑文件首先了解下Ubuntu的工具栏,安装好Ubuntu进入图形界面后,左边默认有10个工具图标,加上我们后面安装的音乐播放器和视频播放器,12个工具的介绍如下:Linux的图形界面操作和Windows基本相同。新建文件夹、新建文本文件、编辑、删除等操作几乎都一样的。两者常用操作对比如下:...原创 2018-02-27 10:08:55 · 950 阅读 · 0 评论 -
第003课 linux入门命令详解
原文地址: http://wiki.100ask.org001节_linux命令入门演示前面我们讲解了在Ubuntu图形界面下怎么新建目录、新建文件等等。来提个问题:除了这个图形界面,Ubuntu下面有没有其它的方式也可以创建目录、创建文件呢?我们回到比较熟悉的Windows界面,或许大家听说过dos命令行工具,没有听说过也没关系,同时按下“Windows键”和“R键”,输入cmd...原创 2018-02-27 10:23:33 · 1100 阅读 · 0 评论 -
第004课 vi编辑器的使用详解
原文地址: http://wiki.100ask.orgvi编辑器1:一个编辑器具备的功能一个编辑器(例如Windows中的记事本)具备的功能:打开文件、新建文件、保存文件光标移动文本编辑(多行间|多列间)复制、粘贴、删除查找和替换vi编辑器2:vi编辑器的环境设置为了更方便的使用vi编辑器,我们需要先对vi编辑器进行一些配置。打开虚拟机终端,输入以下命令:...原创 2018-02-27 10:38:57 · 1149 阅读 · 0 评论 -
第005课 linux进阶命令(文件查找,文件解压操作详解)
原文地址: http://wiki.100ask.org001节_Linux进阶命令__find命令我们在Windows中搜索文件,一般查找文件需要传入两个条件:1)在那些目录中查找;2)查找的内容;在Linux中,查找文件的也需要这两个条件,不同于Windows使用搜索框查找,Linux中使用 find 命令查找文件。find 命令: *目的:查找符合条件的文件 ...原创 2018-02-27 10:49:46 · 755 阅读 · 0 评论 -
第006课 开发板熟悉与体验
原文地址: http://wiki.100ask.org第001节_开发板接口介绍与串口连接在前面的视频里,我们涉及四个接口,两个开关。四个接口:电源接口、USB串口、USB下载口、JTAG下载口;两个开关:电源开关、启动选择开关;分别对应下图中的1、8、6、7、1、11;我们买开发板的目的就是把电脑上编写编译好的程序烧写到板子上验证学习。因此开发板上一定有个烧写口,例...原创 2018-02-27 10:58:50 · 1536 阅读 · 0 评论 -
第007课 裸机开发步骤和工具使用(SourceInght NotePad++使用)
原文地址: http://wiki.100ask.org001节_裸机开发步骤简介回忆大学在VC6.0上面学习C语言,操作大致流程如下:x86平台,Windows应用程序:建立工程/项目,编辑源码,编译代码(编译器:VC6.0),运行。在Ubuntu上学习C语言,操作大致流程如下:x86平台,Ubuntu应用程序:编辑源码,编译代码(编译器:gcc),运行。两者是几乎一致的...原创 2018-02-27 11:05:02 · 1498 阅读 · 0 评论 -
第008课 第1个ARM裸板程序及引申(点亮LED灯)
原文地址: http://wiki.100ask.org第001节辅线1硬件知识_LED原理图当我们学习C语言的时候,我们会写个Hello程序。那当我们写ARM程序,也该有一个简单的程序引领我们入门,这个程序就是点亮LED。我们怎样去点亮一个LED呢? 分为三步:看原理图,确定控制LED的引脚;看主芯片的芯片手册,确定如何设置控制这个引脚;写程序;先来讲讲怎么看原理图...原创 2018-02-27 11:13:55 · 5519 阅读 · 0 评论 -
第009课 gcc和arm-linux-gcc和Makefile
原文地址: http://wiki.100ask.org第001节_gcc编译器1_gcc常用选项__gcc编译过程详解gcc的使用方法gcc [选项] 文件名gcc常用选项 选项 功能 -v 查看gcc编译器的版本,显示gcc执行时的详细过程 -o 指定输出文件名为file,这个名称不能跟源文件名同名 -E 只...原创 2018-02-27 11:44:00 · 2433 阅读 · 3 评论 -
第010课 掌握Jz2440_ARM芯片时钟体系
原文地址: http://wiki.100ask.org第001节_S3C2440时钟体系结构S3C2440是System On Chip(SOC),在芯片上不仅仅有CPU还有一堆外设。至于有哪些外设,可以查看参考手册。在S3C2440参考手册的第一章PRODUCT OVERVIEW里面有个BLOCK DIAGRAM图:可以把该图分为上中下三块,上面的是与CPU密切相关的,...原创 2018-02-27 15:29:40 · 1284 阅读 · 0 评论 -
第011课 Jz2400串口(UART)的使用
原文地址: http://wiki.100ask.org第001节硬件知识_UART硬件介绍1.串口的硬件介绍 UART的全称是Universal Asynchronous Receiver and Transmitter,即异步发送和接收。 串口在嵌入式中用途非常的广泛,主要的用途有:打印调试信息;外接各种模块:GPS、蓝牙;串口因为结构简单、稳定可靠,广受欢迎。 ...原创 2018-02-27 15:38:25 · 1647 阅读 · 2 评论 -
第012课 内存控制器与SDRAM
原文地址: wiki.100ask.org第001节辅线1硬件知识_内存接口概念首先来分析下操作GPIO控制器和操作UART控制器两者的区别。如图是S3C2440是个片上系统,有GPIO控制器(接有GPIO管脚),有串口控制器 (接有TXD RXD引脚)。 配置GPIO控制器相应的寄存器,即可让引脚输出高低电平;配置UART控制器相应的寄存器,即可让引脚输出波形。前者相对简单,类似...原创 2018-02-27 15:54:49 · 4733 阅读 · 8 评论 -
第013课 S3c2440代码重定位详解
原文地址: http://wiki.100ask.org第001节段的概念重定位的引入S3C2440的CPU可以直接给SDRAM发送命令、给Nor Flash发送命令、给4K的片上SDRAM发送命令,但是不能直接给Nand Flsh发送命令假如把程序烧写到Nand Flsh上,即向Nand Flsh烧入* bin* 文件,CPU是无法从Nand Flsh中取代码执行的。为什还可以使...原创 2018-02-28 10:20:05 · 5571 阅读 · 12 评论 -
第014课 Jz2400_ARM异常与中断体系详解
第001节_概念引入与处理流程取个场景解释中断。假设有个大房间里面有小房间,婴儿正在睡觉,他的妈妈在外面看书。问:这个母亲怎么才能知道这个小孩醒?过一会打开一次房门,看婴儿是否睡醒,让后接着看书一直等到婴儿发出声音以后再过去查看,期间都在读书第一种 叫做查询方式: *优点:简单 *缺点: 累 写程序如何:while(1){ 1 read bo...原创 2018-02-28 10:36:52 · 3087 阅读 · 1 评论 -
第015课 NOR Flash操作原理及裸机程序分析
第001节_Nor Flash原理及硬件操作Nor Flash的连接线有地址线,数据线,片选信号读写信号等,Nor Flash的接口属于内存类接口,Nor Flash可以向内存一样读,但是不能像内存一样写,需要做一些特殊的操作才能进行写操作,读只需像内存一样读很简单。Nor Flash原理图如图:Flash介绍常用的Flash类型有Nor Flash和NAND Flash两...原创 2018-02-28 10:52:26 · 4228 阅读 · 6 评论 -
第016课 Nand Flash操作原理及裸机程序分析
第001节_NAND_FLASH操作原理NAND FLASH原理图 NAND FLASH是一个存储芯片 那么: 这样的操作很合理”读地址A的数据,把数据B写到地址A”问1. 原理图上NAND FLASH和S3C2440之间只有数据线,怎么传输地址? 答1.在DATA0~DATA7上既传输数据,又传输地址当ALE为高电平时传输的是地址,那么在数据线上是不是只传输数据和只传输地址...原创 2018-02-28 11:02:22 · 2965 阅读 · 1 评论 -
第017课 LCD原理详解及裸机程序分析
第001节_LCD硬件原理先简单介绍下LCD的操作原理。 如下图的LCD示意图,里面的每个点就是一个像素点。 想象有一个电子枪,一边移动,一边发出各种颜色的光。这里有很多细节问题,我们一个一个的梳理。电子枪是如何移动的? 答:有一条CLK时钟线与LCD相连,每发出一次CLK(高低电平),电子枪就移动一个像素。颜色如何确定? 答:由连接LCD的三组线:R(Red)、G(Gre...原创 2018-02-28 11:10:34 · 3864 阅读 · 1 评论 -
第018课 ADC和触摸屏硬件原理详解及裸机编程
第001节_ADC硬件原理模数转换器即A/D转换器,或简称ADC,通常是指一个将模拟信号转变为数字信号的电子元件。通常的模数转换器是把经过与标准量比较处理后的模拟量转换成以二进制数值表示的离散信号的转换器。 故任何一个模数转换器都需要一个参考模拟量作为转换的标准,比较常见的参考标准为最大的可转换信号大小。而输出的数字量则表示输入信号相对于参考信号的大小。如图,是把可变电阻上的电压值变换...原创 2018-02-28 11:38:56 · 6101 阅读 · 1 评论 -
第019课 I2C协议详解及裸机程序分析
第001节_I2C协议与EEPROMI2C协议I2C在硬件上的接法如下(图19-1)所示,主控芯片引出两条线SCL,SDA线,在一条I2C总线上可以接很多I2C设备,我们还会放一个上拉电阻(放一个上拉电阻的原因以后我们再说)。我们怎么传输数据,我们需要发数据从主设备发送到从设备上去,也需要把数据从从设备传送到主设备上去,数据涉及到双向传输。举个例子:体育老师:可以把...原创 2018-02-28 11:51:48 · 4224 阅读 · 1 评论 -
第20课 SPI协议详解及裸机程序开发分析
第001节_SPI协议介绍市面上的开发板很少接有SPI设备,但是SPI协议在工作中经常用到。我们开发了SPI模块,上面有SPI Flash和SPI OLED。OLED就是一块显示器。我们裸板程序会涉及两部分:用GPIO模拟SPI用S3C2440的SPI控制器我们先介绍下SPI协议,硬件框架如下:SCK:提供时钟DO:作为数据输出DI:作为数据输入CS0/CS1...原创 2018-02-28 11:58:38 · 3908 阅读 · 0 评论 -
C代码中如何使用链接脚本中定义的变量?
参考文章:https://sourceware.org/ml/binutils/2007-07/msg00154.html作者:韦东山,2017-1-3 写于百问网论坛原文出处:http://bbs.100ask.org/forum.php?mod=viewthread&tid=16231在链接脚本中,经常有这样的代码:SECTIONS{...... = ALIGN(4)...原创 2019-09-19 11:12:17 · 1716 阅读 · 0 评论