网上下的--ARM入门笔记

发布者:CrystalSparkle最新更新时间:2024-11-15 来源: cnblogs关键字:ARM  入门笔记 手机看文章 扫描二维码
随时随地手机看文章

#i nclude
#i nclude
#i nclude
#i nclude
#i nclude
#i nclude

void delay(int delay)//延时用函数
{
int i;
for(;delay>0;delay--)
{
for(i=0 ; i < 5000 ; i ++);

}
}

int main()
{
int fd1;
int j;

fd1= open('/dev/led' , O_RDWR);/*打开设备,就象打开文件一样简单*/

if(fd1 == -1)/*异常处理*/
{
printf ( 'file can not be open' );
return -1;
}

for (j =0 ; j< 10 ; j ++)/*重复10次*/
{
ioctl(fd1 , 1 , 0);/*GPC0上LED亮*/
delay(1000);
ioctl(fd1 , 0 , 0);/*GPC0上LED灭*/
ioctl(fd1 , 1 , 1);/*GPC1上LED亮*/
delay(1000);
ioctl(fd1 , 0 , 1);/*GPC1上LED灭*/
ioctl(fd1 , 1 , 2);/*GPC2上LED亮*/
delay(1000);
ioctl(fd1 , 0 , 2);/*GPC2上LED灭*/
delay(1000);
}

close (fd1);/*关闭设备(文件)*/
return 0;

}


===============END===============

最简单的驱动---让LED闪一闪-5
三 驱动编译进内核
编译的中对于菜鸟来说需要需要注意几点
1 被打错字,包括上面的函数中也是!
就算各位扔砖头我也得说,因为编译进内核是很费时间的~~而且最重要的是对于菜鸟来说make的错误提示都是一道关,绝对不要自己给自己设置障碍!我们团队里就常有兄弟姐妹出现这样的错误,怎么看怎么对,尤其是从书上抄下来的命令和字符,l和1还有I你怎么分?最后一个是大写的i :)
2 不要用中文文件名 包括ABC(复件)
要不然MAKE出错
3 在各个现成的文件里修改的时候按照原有的格式修改 要不然菜鸟很难保证不犯低级错误
让我想起来了IBM的规律总结测试题:6 13 7 14 8 下一个数字是什么?

好了 开始修改!
===============START==============
uClinux-dist/linux-2.4.x/drivers/char/Makefile
----------------------------------------------
obj-$(CONFIG_C5471_WDT) += wdt_c5471.o之后加
obj-$(CONFIG_TEST) += led.o
================END============

=================START===========
uClinux-dist/linux-2.4.x/drivers/char/Config.in
-----------------------------------------
if [ '$CONFIG_CPU_S3C44B0X' = 'y' ]; then
bool 'Samsung S3C44B0X serial ports support' CONFIG_SERIAL_S3C44B0X之后加
bool 'Test LED Driver' CONFIG_TEST
================END=================
=================START=============
uClinux-dist/linux-2.4.x/drivers/char/mem.c
-----------------------------------------
开头的地方扎堆加
#ifdef CONFIG_LEDTEST
extern void led_init(void);
#endif

int __init chr_dev_init(void)之后加
#ifdef CONFIG_TEST
led_init();
#endif
================END==============
=================START============
uClinux-dist/vendors/Samsung/44B0/Makefile
-----------------------------------------
ttypc,c,3,12 ttypd,c,3,13 ttype,c,3,14 ttypf,c,3,15之后加

led,c,231,0
================END==============


四 把程序编译进内核
没什么说的了,和过去写的简单的程序一样加 但这里再重复一次

================START============
uClinux-dist/user/Makefile
-----------------------------------------
扎堆加个下面
dir_$(CONFIG_USER_LEDTEST) += LEDtest
=================END===============
================START============
uClinux-dist/config/Configure.help
-----------------------------------------
扎堆加个下面
CONFIG_USER_LEDTEST
Test the LED driver
=================END=============
================START================
uClinux-dist/config/Configure.in
-----------------------------------------
##############################
mainmenu_option next_comment
comment 'LED driver test PG'

bool 'LEDtest' CONFIG_USER_LEDTEST
endmenu

###############################
=================END=============

五 编译 烧写……省略200字 想看的看我写的helloworld编译笔记吧
六 下面的操作在板子上执行
1 cd /dev
2 ls
看见里面有个LED了吧?
3 cd /proc
4 cat devices
看见驱动列表吧?
led 231也应该在里面
5 LEDtest
在任何地方执行这个语句 就可以
之后看GPIO的C口电平吧:)

总结
好了 到今天为止简单的东西都已经整理过了 也感谢大家最近的关注

剩余的部分LCD图形操作 GPRS驱动 有机会再发吧 估计对于菜鸟不是很重要。

有人向我要GPS的驱动 我没给:)其实很简单的UART 但是涉及到本实验室别人的劳动 就不发了。

至于minigui移植本人还一直没时间做 因为准备把SD卡 SPI触摸屏驱动搞定再做 但过了这段时间一定会做的 也是到时候再说吧。

再次声明一下,这个BLOG是因为感谢那些帮助过我的朋友们而建立的,偶然发现有几篇笔记已经被很多网站转载了,大家当然可以随意利用这里的资源,但只有一个要求,希望大家会了以后也把自己的东西共享一下。

其实写了这么多 技术上的很少有创新 多是总结 在这里也感谢那些我提到与没提到的人 因为这里所有的文章都来自于他们的原始积累。

写这些简单的出奇的东西 也无非就是想告诉那些比我还菜的鸟们:这个世界上有高手,但不多。可能你这辈子都见不到几个。那么与其一直敬仰他们不如自己踏踏实实从小做起。在自己的小范围内作到一个点的专家。然后点连成线,线变成知识面……


[1] [2] [3] [4] [5] [6]
关键字:ARM  入门笔记 引用地址:网上下的--ARM入门笔记

上一篇:学习ARM开发(23)
下一篇:ARM裸机篇--按键中断

小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved