嵌入式学习笔记002-点亮led

  1. 正如编写第一个程序所打印“hello world”那样,对TQ2440开发板的初次使用也是从最简单的部分入手,点亮led灯无疑是最简单的,起码只要设置几个寄存器就好,比起打印容易得多了,后续会讲到串口部分再来实现我们这句金典的对白~~~~
  2. 板子共有4个led灯,如果能够成功点亮其中一个,那么其他几个将不是问题,故而我们的目标是先点亮第一个先,在此我们必须理清几个问题:

    a. led的引脚连接的相关寄存器

    b. 编写的语言

    c. 用什么来编译链接成可执行文件

    d. 怎么download到板子去,烧入到哪里 nor flash 还是 nand flash

    现在我们慢慢来处理:

    a. 查看tq2440原理图发现这4个led分别连接GPB5~8,由于一端连接VCC, 所以引脚设置为输出且为0(低电平)是灯亮,1(高电平)为灭,相关的寄存器有GPBCON(0x56000010) , GPBDAT(0x56000014), 其余可以不用考虑。

    b. 本次实验同时实现汇编和C,其中汇编主要实现一个led灯亮,在于了解汇编基本flow,实现叫简单,C可以稍微“复杂”点,比如多个led,跑流水灯等,更灵活。

    c. 由于我们的开发环境是在PC机上的,想最终到板子上的话必须借助交叉编译工具,所谓的交叉编译工具其实就是将源码编译成适合特定架构的处理器识别的机器语言,像PC机就是X86架构的,而板子是ARM架构的,这里采用arm-linux-3.4.5 ,至于如何安装交叉编译工具链可以自行上网查阅,记得安装后要添加到PATH这个环境变量,这样你用到相关编译命令才能搜索得到,以我为例,我是添加到我的home 目录下有个.profile文件的

    vim .profile

    export PATH=$PATH:/opt/EmbedSky/crosstools_3.4.5_softfloat/gcc-3.4.5-glibc-2.3.6/arm-linux/bin

    可以看一下这个路径bin下有没有arm-linux-gcc arm-linux-ld 命令之类的,如果是gcc ld 那就是路径搞错了哦,之前就是添加这个路径 /opt/EmbedSky/crosstools_3.4.5_softfloat/gcc-3.4.5-glibc-2.3.6/arm-linux/arm-linux/bin出了乌龙……………..

    保存退出后记得

    source .profile

    使其生效,为确保是否生效可以敲入相关的命令看能否执行,比如:

    arm-linux-gcc -v

    这个是查看交叉编译工具链的version命令,如果没有添加到PATH的话就会报错说找不到该命令,否则会打印一堆信息,在最后会看到这行信息:

    gcc version 3.4.5

    d. 由于天嵌的bootloader具有烧入功能,所以将天嵌的bootloader烧入到nor flash,然后利用该bootloader将我们的code烧入到nand flash,后续的示例都会采用该方法将code烧入到nand flash,这是最省事的做法,如果要“任性”通过外部工具将code烧入到nand flash读者可以自己查阅。刚买的板子nor flash已经烧入好天嵌的bootloader,将拨码开关拨到nor 选项再启动电源就会在串口看到download界面(前提是串口配置正确),如果没有可以通过工具将bootloader烧入到nor flash。至于如何烧入bootloader到nor flash 请查阅添加附带关光盘文档。

    PS:由于我们的code是在ubuntu下编写的,而烧入是通过win7环境,我是采用samba实现win7访问ubuntu的,具体的做法就是在home目录建一个目录“samba”,然后所有的相关code在这个目录实现,同时开启samba server(请自行上网查看如何搭建samba),然后通过win7访问并且映射到本地一个盘符,就如同访问自己硬盘一样简单。同时操作ubuntu也并不是直接在Ubuntu界面操作,而是通过SecureCRT访问。

  3. 现在讲解具体代码编写,先从汇编入手

    由于太晚 明晚继续~

时间: 2024-10-16 18:42:25

嵌入式学习笔记002-点亮led的相关文章

嵌入式学习笔记008-裸奔篇之串口

串口是个好东西,前几篇裸奔程序由于没有串口,自己调试都是有led等来表示的,比较"苦逼",终于可以用串口了~~~,这里主要采用上一篇博文(嵌入式学习笔记007-裸奔篇之定时器),也就是串口也是用中断实现的,而且也只是在前一篇博文增加串口的初始化uart0_init(),以及在中断处理函数增加对串口的处理.只要稍微改造前一篇博文就是一个通用的中断处理程序! 这里主要实现在串口输入一个字符,接受后+2再发送到串口,所以在串口输入a 会返回c---. 由于code都有相应的注释,读者自行查看

嵌入式学习笔记103-uboot_1.1.6移植(3)

经过之前对uboot的整体flow分析,现在开始针对2440移植,需要注意的是移植的code可能包含支持部分的2410code 不过并没有在s3c2410板子实测过. 主要概括:第一阶段的汇编code尽量短小,能用C实现的就用C,由于2440的board和头文件是从2410 copy过来的 里面会有很多信息或者宏关于2410,并且很多.c文件的头文件由于include的是2410,所以新增的一些关于2440的结构体也会一并放在2410.h,移植的思想与前文类似, 根据code的执行流程来移植.

嵌入式学习笔记101-uboot_1.1.6移植(1)

根据前篇博文(嵌入式学习笔记100-uboot1.1.6初体验)最后的结论,现在开始将其实现: a. 修改makefile的CROSS_COMPILE指定编译器 arm-linux-gcc -v –> gcc version 3.4.5 CROSS_COMPILE = /opt/EmbedSky/crosstools_3.4.5_softfloat/gcc-3.4.5-glibc-2.3.6/arm-linux/bin/arm-linux- chmod -R 777 u-boot-1.1.6/

嵌入式学习笔记201-Linux kernel动起来

在前篇博文<嵌入式学习笔记200-Linux kernel初体验>在已经确保环境编译是ok的,接下来让kernel能够最基本的动起来,起码可以看到基本的启动打印! 修改外部输入时钟频率, 修改 linux-2.6.30.4\arch\arm\mach-s3c2440\mach-smdk2440.c 在大概163行将16934400改成12000000. static void __init smdk2440_map_io(void) { s3c24xx_init_io(smdk2440_iod

嵌入式学习笔记104-uboot_1.1.6移植(4)

前面的4篇uboot博文基本概括了uboot的整体flow,现在使能支持启动linux,至此之前请先阅读<嵌入式学习笔记200-Linux kernel初体验>和<嵌入式学习笔记201-Linux kernel动起来>.准备kernel的镜像文件才可以立马检测uboot是否能够启动kernel.在u-boot-1.1.6\include\configs\tq2440.h 最后添加如下几行code: /****************** boot kernel setup ****

嵌入式学习笔记202-Linux kernel跑起来

在<嵌入式学习笔记104-uboot_1.1.6移植(4)>.<嵌入式学习笔记300-linux根文件系统搭建>uboot和根文件系统都准备好的前提下,此时的kernel已基本可以跑起来,不过还差正确的挂起文件系统,其中uboot传给kernel的挂载处是root=/dev/mtdblock2 ,而在<嵌入式学习笔记201-Linux kernel动起来>的打印分区信息是: mtd: partition "Boot Agent" doesn't en

CC2540开发板学习笔记(一)&mdash;&mdash;LED点亮

一.实验内容: 点亮LDE1.2 二.实验原理: 1.电路原理图: 就一个发光二极管串联一个电阻.电阻是为了防止电流过大.利用发光二极管的单向导电性,在P1为高电平是点亮LED,在低电平是熄灭LED. 2.CC2540的IO配置所需寄存器:P1SEL .P1DIR .P1INP P1SEL 0:普通IO口,  1:第三功能, 默认设置为0 P1DIR 0:输入           1:输出 P1INP 0:上拉/下拉    1:三态 3.代码如下: #include<ioCC2540.h> #

STM32学习之路-点亮LED

STM32学习笔记—点亮led灯 STM32的I/O口有很多的功能,所以称为GPIO(GENERAL PURPOSE) 其中GPIO又分为A,B,C,D,E,F,G不同的组,每个组端口又分为0~15,共16个不同的引脚,不同的芯片引脚数量也不同,所用的学习板为STM32F103RBT6; I/O口的八种模式: 输入浮空:                  模拟输入: 输入上拉:                  输入下拉: 开漏输出:                  推挽输出: 推挽式复用功能

ARM学习篇一 点亮LED

要点亮LED,先决条件是什么,当然得有相应的硬件设施.板子的整个电路图比较大,我就直接取相关部分. 给发光二级管加上3.3v电压后,通过1k电阻,直接与S3C2440连接.至于为什么要加电阻,大家应该都知道,发光二极管的正向电阻很小,管子很容易因电流过大而烧坏.至于具体多少,可以看你买的管子的说明. 具体的烧写驱动安装,ARM集成开发环境安装我就不说了.一般都有手册,手册里面说得很清楚. 下面是代码实现: AREA LED,CODE,READONLY ENTRY CODE32GPFCON EQU