#i nclude void delay(int delay)//延时用函数 int main() fd1= open('/dev/led' , O_RDWR);/*打开设备,就象打开文件一样简单*/ if(fd1 == -1)/*异常处理*/ 最简单的驱动---让LED闪一闪-5 好了 开始修改! =================START=========== int __init chr_dev_init(void)之后加 ================START============ bool 'LEDtest' CONFIG_USER_LEDTEST ############################### 五 编译 烧写……省略200字 想看的看我写的helloworld编译笔记吧 总结 剩余的部分LCD图形操作 GPRS驱动 有机会再发吧 估计对于菜鸟不是很重要。 有人向我要GPS的驱动 我没给:)其实很简单的UART 但是涉及到本实验室别人的劳动 就不发了。 至于minigui移植本人还一直没时间做 因为准备把SD卡 SPI触摸屏驱动搞定再做 但过了这段时间一定会做的 也是到时候再说吧。 再次声明一下,这个BLOG是因为感谢那些帮助过我的朋友们而建立的,偶然发现有几篇笔记已经被很多网站转载了,大家当然可以随意利用这里的资源,但只有一个要求,希望大家会了以后也把自己的东西共享一下。 其实写了这么多 技术上的很少有创新 多是总结 在这里也感谢那些我提到与没提到的人 因为这里所有的文章都来自于他们的原始积累。 写这些简单的出奇的东西 也无非就是想告诉那些比我还菜的鸟们:这个世界上有高手,但不多。可能你这辈子都见不到几个。那么与其一直敬仰他们不如自己踏踏实实从小做起。在自己的小范围内作到一个点的专家。然后点连成线,线变成知识面……
#i nclude
#i nclude
#i nclude
#i nclude
#i nclude
{
int i;
for(;delay>0;delay--)
{
for(i=0 ; i < 5000 ; i ++);
}
}
{
int fd1;
int j;
{
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===============
三 驱动编译进内核
编译的中对于菜鸟来说需要需要注意几点
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============
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
#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==============
四 把程序编译进内核
没什么说的了,和过去写的简单的程序一样加 但这里再重复一次
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'
endmenu
=================END=============
六 下面的操作在板子上执行
1 cd /dev
2 ls
看见里面有个LED了吧?
3 cd /proc
4 cat devices
看见驱动列表吧?
led 231也应该在里面
5 LEDtest
在任何地方执行这个语句 就可以
之后看GPIO的C口电平吧:)
好了 到今天为止简单的东西都已经整理过了 也感谢大家最近的关注
上一篇:学习ARM开发(23)
下一篇:ARM裸机篇--按键中断
设计资源 培训 开发板 精华推荐
- 使用 STMicroelectronics 的 R7985A 的参考设计
- 使用 Analog Devices 的 LTC1775CS 的参考设计
- DER-120 - 22W三路输出反激式转换器
- 在 DDR 终端中使用 LTC3612EFE 降压稳压器的典型应用,具有 VDD 的比率跟踪,1MHz
- ADR440B 2.048 Vout 超低噪声、LDO XFET 电压基准的典型应用,具有电流吸收器和电流源
- TuyaVMXR2
- 使用 Microchip Technology 的 MIC2843AYMT 的参考设计
- STC12简单学习板
- 智能小车电磁循迹用信号处理模块
- SIM3U1XX-B-DK,Precision32 SiM3U1xx (USB) 开发套件,专为 SiM3U1xx MCU 设计
- Allegro MicroSystems 在 2024 年德国慕尼黑电子展上推出先进的磁性和电感式位置感测解决方案
- 左手车钥匙,右手活体检测雷达,UWB上车势在必行!
- 狂飙十年,国产CIS挤上牌桌
- 神盾短刀电池+雷神EM-i超级电混,吉利新能源甩出了两张“王炸”
- 浅谈功能安全之故障(fault),错误(error),失效(failure)
- 智能汽车2.0周期,这几大核心产业链迎来重大机会!
- 美日研发新型电池,宁德时代面临挑战?中国新能源电池产业如何应对?
- Rambus推出业界首款HBM 4控制器IP:背后有哪些技术细节?
- 村田推出高精度汽车用6轴惯性传感器
- 福特获得预充电报警专利 有助于节约成本和应对紧急情况