文档章节

pcDuino 硬件LED驱动实战

simpower
 simpower
发布于 2014/11/17 15:05
字数 1353
阅读 242
收藏 2

最近调驱动时,调试led时遇到了点问题,于是回过头来再写个led裸板程序。在我写的pcDuino第一个裸板程序uart的基础上,再写个led裸板程序还是很轻松的。很多人觉得没有必要写什么pcDuino裸板程序,觉得没啥意义。我觉得可以用来熟悉硬件,特别是想做底层驱动开发,以及系统移植,熟悉底层硬件还是有用的。其实做底层驱动开发,也是跟硬件打交道,硬件相关的操作和裸板程序是一样的。下面介绍怎样在pcDuino上跑一个最简单的led裸板程序。

开发环境:

宿主机:ubuntu 12.04 64位

目标机:pcDuino V2

编译器:arm-linux-gnueabihf-gcc   (4.6)

目标:实现pcDuino上的TX_LED闪烁

文档说明:

命令提示符 $ 表示在pcDuino上面运行的指令;

命令提示符 # 表示在x86_64的linux主机上运行的指令

命令提示符 > 表示在u-boot状态下运行的指令

仔细看pcDuino上的原理图和pcDuino的手册,发现二者不是完全对应的,还是以原理图为准。根据原理图知道TX_LED是接到PH15上,可以当做普通IO口用,不需要连跳线

主要是看手册30.Port Controller,根据手册写led初始化程序主要包括设为输出、是能上拉及Multi-Driving寄存器设置。包括start.S、main.c、clock.c、clock.h、Makefile,下面贴出全部代码

 

 

 

 

 

 

1.编译

change@change :~$ cd Si/A10/2_led/
change@change :~/Si/A10/2_led$ ls
clock.c  clock.h  main.c  Makefile  mksunxiboot  start.S
change@change :~/Si/A10/2_led$ make
arm-none-linux-gnueabi-gcc -nostdlib -c start.S -o start.o
arm-none-linux-gnueabi-gcc -nostdlib -c main.c -o main.o
arm-none-linux-gnueabi-gcc -nostdlib -c clock.c -o clock.o
arm-none-linux-gnueabi-ld -Ttext 0xD0020010 start.o main.o clock.o  -o led_elf
arm-none-linux-gnueabi-objcopy -O binary -S led_elf led.bin
change@change :~/Si/A10/2_led$ ./mksunxiboot led.bin leds.bin
File size: 0x154
Load size: 0x154
Read 0x154 bytes
Write 0x200 bytes
change@change :~/Si/A10/2_led$
其中有个./mksunxiboot led.bin leds.bin要注意,不经过mksunxiboot工具 的.bin文件,pcDuino是运行不了的。这个工具在官网上都有下。现在的处理启动都很复杂,内有固化有bl0代码,在跳转到bl1时需要校验程序的合法性,这个工具mksunxiboot简单点少就是给我们程序加了点头部,让处理器能够识别我们写的代码。你可以分析led.bin和leds.bin的反汇编代码,就一目了然了。这部分感兴趣的可以一起讨论。

2.测试

上面生成的leds.bin就可以放到板子上运行了。为了不破会NAND中的系统,直接放到tf卡运行。不用担心那个先启动,看全志手册就知道pcDuino默认先从tf卡启动,只有tf卡没有启动的引导程序才会跳到NAND启动。插上tf卡到PC机

change@change:~/Si/A10/2_led$ sudo dd if=/dev/zero of=/dev/sdb bs=1M count=1
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.425886 s, 2.5 MB/s
change@change:~/Si/A10/2_led$ sudo dd if=leds.bin of=/dev/sdb bs=1024 seek=8
0+1 records in
0+1 records out
512 bytes (512 B) copied, 0.00600667 s, 85.2 kB/s
change@change:~/Si/A10/2_led$

然后取下tf卡,插到pcDino上,RX LED就开始闪烁了。如果你手上有led,接到GPIO4、GPIO5也会闪烁。

本文转载自:http://www.pcduino.org/pcDuino/150.html

simpower
粉丝 28
博文 669
码字总数 50544
作品 0
海淀
程序员
私信 提问
pcDuino的linux移植五GPIO驱动开发

为首的亮,灭。同时如果你GPIO4,GPIO5接个LED,也会跟着亮,灭。 开发环境: 系统:Ubuntu的 一,硬件介绍 仔细看pcDuino上的原理图和pcDuino的手册,发现二者不是完全对应的,还是以原理图...

pc朵拉
2013/07/03
337
0
pcDuino带动LED灯带

在节日里面,人们总喜欢张灯结彩来庆祝一番。 这时候,自然少不了彩灯带了。 感谢LED技术的发展, 现在有了LED灯条。 高电流的LED灯条一般的单片机是不能直接驱动的,所以需要一个 LED stri...

pc朵拉
2013/11/30
635
1
pcDuino 书籍_第四章:pcDuino上用Python编程简介

对于没有学过任何编程语言的初学者来说,Python是非常好的入门语言。 同时Python也是一门能够快速上手,高效的计算机语言。 在这里,我们简单地介绍如何使用Python语言来对pcDuino的硬件进行...

pc朵拉
2013/08/05
1K
0
linker butten

linker butten即按钮,该模块有两个版本,一个是单一按钮,个头大一些的,还一个是双按钮,个头小一些的。 本例子一单一按钮大个头的为例子。 linker butten 在电路上,是最简单的输入设备,...

酸酸苹果汁
2014/01/22
93
0
LED strip driver在pcDuino上完美运行

想在室内营造一点小氛围不,话说工程师工作繁忙也得自己造些情调不是。这我是在pcDuino上做的,接一个灯带驱动模块LED strip driver,链接文章里用的Arduino,附有程序代码,在pcDuino上点亮...

pc朵拉
2013/07/02
120
0

没有更多内容

加载失败,请刷新页面

加载更多

Nginx 快速安装详解

一、Nginx Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамбле...

网络小虾米
3分钟前
2
0
技术分享 | slave_relay_log_info 表认知的一些展开

作者:胡呈清 slave_relay_log_info 表是这样的: mysql> select * from mysql.slave_relay_log_info\G *************************** 1. row *************************** Number_of_lin......

爱可生
6分钟前
1
0
nginx配置http访问自动跳转到https

server {listen 80;server_name www.域名.com;rewrite ^(.*) https://$server_name$1 permanent;}server {listen 443;server_name www.域名.com;root /home/www;ssl on;......

很好亦平凡ms
6分钟前
1
0
SpreadJS:一款中国研发的类Excel开发工具,功能涵盖Excel的 95% 以上

Excel 作为一款深受用户喜爱的电子表格工具,借助其直观的界面、出色的计算性能、数据分析和图表,已经成为数据统计领域不可或缺的软件之一。 基于Excel对数据处理与分析的卓越表现,把Excel...

葡萄城技术团队
6分钟前
1
0
用javafx框架tornadofx做了个天气预报的程序

class WeatherApp : App(WeatherView::class)class WeatherView : View("十五天天气预报") { val weatherVM: WeatherViewModel by inject() val controller: WeatherController by......

oschina4cyy
10分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部