
linux内核移植/驱动
文章平均质量分 70
#Page#
这个作者很懒,什么都没留下…
展开
-
/etc/init.d/rcS文件内容
#! /bin/sh#从arm9拷贝echo "Processing /etc/rcS..."PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:#runlevel=S#prevlevel=N#umask 022#export runlevel prevlevelexport PATH #从arm9拷贝# Tr原创 2009-07-17 17:20:00 · 2822 阅读 · 0 评论 -
开始阅读YAFFS源码 2.6.18以上需要打补丁 yaffs2 内核 kernel的ecc布局
开始阅读YAFFS2源码,有不少收获。初步明白为什么在新内核上原来的yaffs会有问题,让我突然觉得那些拿了别人可以烧写yaffs的uboot 又问linux 2.6.22怎么出问题的那些人挺可笑的,其实我自己一开始也这样,算是自嘲了。感觉纯粹的就是拿来,不去自己分析其中的问题,这样学不到东西。这两天我对原来uboot烧写yaffs的功能作了深入分析,因为补丁其实很短小,反复看看就明白转载 2009-07-17 08:58:00 · 4805 阅读 · 1 评论 -
makefile下$(wildcard $^),$^,$@,$?,$<,$(@D),$(@F)含义
本文来自:http://blog.chinaunix.net/uid-20564848-id-217918.htmlmakefile下$(wildcard $^),$^,$@,$?,$$(filter-out $(PHONY) $(wildcard $^),$^)常用用法为$(wildcard *.c)表示列举当前目录下的所有.c文件这里$^因为会包含依赖的文件名,如果包含转载 2012-06-24 22:13:10 · 4415 阅读 · 0 评论 -
error: storage size of 'rq' isn't known 正解
看了几个ubifs的帖子:http://hi.baidu.com/3444542/blog/item/95bea529777da3f298250a52.htmlhttp://blog.csdn.net/pottichu/archive/2010/04/28/5539923.aspxhttp://blog.csdn.net/ShowMan/archive/2010/03/17/53908原创 2010-05-26 16:40:00 · 11471 阅读 · 0 评论 -
kbhit()在linux下的模拟,getch,getchar,不等待的键盘检测函数
<br />标准c语言的键盘检测只有按了回车才返回,如果要用一个while循环检测就不好使了,kbhit好像是windows的,linux下好像只有模拟,这里从一个老外网站拷贝的,貌似国人也有,与大家分享下了:<br /><br />#include <stdio.h>#include <termios.h>#include <unistd.h>#include <fcntl.h>int kbhit(void){ struct termios oldt, newt; int原创 2010-08-19 12:43:00 · 14091 阅读 · 5 评论 -
mtd-utils 的下载地址 ,mtd工具,linux,文件系统
无意中发现,不敢独享: http://debian.mirror.inra.fr/debian/pool/main/m/mtd-utils/ 今天的:Index of /debian/pool/main/m/mtd-utils Parent Directory mtd-tools_20080508-1_all.deb mtd-tools_20原创 2010-04-08 16:23:00 · 7845 阅读 · 5 评论 -
【原】修改mkyaffsimage和uboot的关系
在内核2.6.18以上版本中,yaffs采用了不同的writechunk方式.具体参考http://www.armchina.cn/article.asp?id=63 我在前一篇文章中说了uboot烧写yaffs的补丁.实际上补丁和修改mkyaffsimage是一回事.上述参考文章给出了mkyaffsimage的修改方式.所以,如果mkyaffsimage不修改的话,直接用uboo原创 2009-07-17 11:47:00 · 3182 阅读 · 0 评论 -
uboot 用 ramdisk 引导linux命令行,u-boot,bootargs,arm
ramdisk的制作:#! /bin/shrm -rf ramdiskdd if=/dev/zero of=ramdisk bs=1024 count=6144mkfs.ext2 -F ramdiskgzip ramdisk #! /bin/sh#1fs=ramdisk4Mgunzip -v ${fs}.gzmount -o loop ${fs}原创 2010-03-30 11:08:00 · 6738 阅读 · 0 评论 -
【原】解决PS1的显示问题,busybox的/u /h特殊字符解析问题
在制作文件系统的时候,会用到 /etc/profile,里面有PS1变量,一般为:PS1="[/u@/h /W]# " /u等特殊字符分别表示的是当前用户、主机名和当前目录。但是我制作完以后进入到系统,发现还是原样显示上述字符。 网上找了半天没找到。后来一个同事帮我搞定了,原来是busybox的配置问题,分享一下:make menuconfigbusybox原创 2009-07-18 22:19:00 · 5629 阅读 · 2 评论 -
uboot 用 yaffs、nfs 引导linux命令行,u-boot,bootargs,arm
yaffs:setenv bootargs mem=64M console=ttyS0,115200n8 noinitrd root=/dev/mtdblock3 rootfstype=yaffs rwnfs:setenv bootargs nfsroot=$serverip:$rootpath " / "ip=$ipaddr:$serverip:$gat原创 2010-03-30 11:55:00 · 3843 阅读 · 0 评论 -
-bin/sh ./hello not found,程序运行不了,库文件不对应
我现在挂上文件系统了。编了个helloworld小程序想测试一下:hello.c,很简单一句话:printf("hello world/n");但是当我用armgcc编译好,放到文件系统上时,执行 ./hello,提示:-bin/sh ./hello not found这是什么原因?我在内核配置里面已经选上 ELF格式支持,但是a.out 和MISC binarie原创 2009-07-21 14:10:00 · 3767 阅读 · 1 评论 -
/etc/profile文件内容
该文件在进入shell的时候调用,也就是说这是用户相关的. # /etc/profile: system-wide .profile file for the Bourne shellsecho "Processing /etc/profile..."# 从arm9.net拷贝# Ash profile # vim: syntax=sh# No core f原创 2009-07-17 17:23:00 · 4716 阅读 · 0 评论 -
查看 linux flash 分区大小,mtd,nor,nand,partition
很多系统只用了一个nand就够了。有的用2个,像我的,2个nor,创建了好几个mtd,不知道mtdblock对应哪个。其实只要到proc看看就行了:1、cat /proc/mtd显示分区名称、大小2、cat /proc/partition显示block。。。。。。原创 2010-03-18 16:15:00 · 30017 阅读 · 0 评论 -
【参考】+【原创】uboot 烧写 yaffs的补丁+补充
我用的uboot1.1.6,烧写yaffs的镜像和yaffs制作的工具紧密相关.如果采用nand write.yaffs xxx xx xx,则需要修改mkyaffsimage,如果不修改mkyaffsimage,这使用nand write.yaffs1 xxx xx xx修改mkyaffsimage我会在下一篇文章介绍.1、cmd_nand.c/*添加yaffs支持? */原创 2009-07-17 11:34:00 · 2601 阅读 · 0 评论 -
关于热插拔usb hotplug /proc/sys/kernel mdev udev busybox
这篇文章说的很好http://blog.chinaunix.net/u1/38994/showart_2022040.html:如何使用busybox精简版本udev程序--mdev动态创建插入的u盘和鼠标等设备busybox的mdev是一个精简了的udev管理程序,它可以间接的以hotplug方式被内核调用,进而在arm平台上/dev目录下动态创建设备节点,因为h转载 2009-09-16 14:34:00 · 17266 阅读 · 2 评论 -
【转】搞定了YAFFS IMAGE烧写在新内核linux2.6.23.9上
来源:http://www.armchina.cn/article.asp?id=64 经过分析(参见我上一篇日志),一切都变得很明晰了!终于搞定了YAFFS IMAGE烧写在新内核linux2.6.23.9上。新的yaffs2代码是通过nandmtd1_WriteChunkWithTagsToNAND写NAND的,写入nand的oob不再是调整的yaffs_spare结构,而是yaf转载 2009-07-17 11:33:00 · 1925 阅读 · 0 评论 -
关于spi的半双工读写和全双工读写 spi.c spidev.c spidev_message() struct spi_ioc_transfer
一点理解,不知道是否正确,请指正. 在spidev.c有read write 以及spidev_message函数.分别实现半双工和全双工的功能.不过最后调用的都是spi控制器驱动的transfer函数.例如, atmel_spi_transfer() 【drivers/spi/atmel_spi.c 】 那么驱动如何判断应用程序要读还是写呢?简单,判断tx_buf或者原创 2009-08-24 17:06:00 · 20238 阅读 · 5 评论 -
Linux驱动修炼之道-SPI驱动框架源码分析(上)
SPI驱动架构,以前用过,不过没这个详细,跟各位一起分享:来自:http://blog.csdn.net/woshixingaaa/article/details/6574215SPI协议是一种同步的串行数据连接标准,由摩托罗拉公司命名,可工作于全双工模式。相关通讯设备可工作于m/s模式。主设备发起数据帧,允许多个从设备的存在。每个从设备有独立的片选信号,SPI一般转载 2011-10-21 22:09:05 · 8531 阅读 · 2 评论 -
内核使用硬件ip的dma,dma_alloc_coherent 与 dma_alloc_writecombine
内核的dma一般在平台初始化的时候已经分配好了。但是对于一些有内部dma的硬件ip,比如usb ip、video加速ip,他们可能由ip厂商封装好的,没办法绑定到cpu端,这时候在内核使用dma就要注意了,因为dma只认识物理地址哦。当然,办法还是有的,look:以下来自:http://blog.csdn.net/zjujoe/archive/2009/05/15/41896转载 2009-11-05 19:11:00 · 22131 阅读 · 3 评论 -
wait_for_completion_timeout 的返回值
引用一段话:来自:http://blog.csdn.net/fudan_abc/article/details/1822034我们需要知道的是怎么去判断等待的结果,也就是wait_for_completion_timeout的返回值代表什么意思?一般来说,一个函数返回原创 2011-08-13 12:40:14 · 21466 阅读 · 1 评论 -
dm365 GPIO的使用
【转帖请注明出处:blog.csdn.net/lanmanck】最新的dvsdk4.0已经有比较大的变化,内核方面也使用了新的2.6.32版本。刚接触代码会发现比较难用,用多了也就熟了。GPIO要使用也比较简单, 代码如下:davinci_cfg_re原创 2011-08-12 15:32:52 · 3291 阅读 · 0 评论 -
uboot1.1.6 移植到arm11,arm1176,u-boot
由于arm是向下兼容,所以1.1.6虽然老,理论上还是可行的。我最近做了一个移植,跟各位交流下心得。新的uboot已经很好的支持arm1176了,cortex-a8也很好支持。不过人比较懒,1.1.6精简,代码量小,加之我们之前就用这个,所以成了最好用的版本。移植最主要在启动阶段的start.s文件,这里直接修改cpu/arm926ejs就可以了,做make的时候把arm926当成arm1原创 2010-05-10 10:50:00 · 3632 阅读 · 3 评论 -
Linux LCD 10分钟黑屏,十分钟黑屏,LCD自动关闭,LCD黑屏 问题
来自:http://blog.csdn.net/dongliqiang2006/archive/2009/06/12/4262950.aspx【节选】:Linux启动之后,只要一段时间不动键盘(开发板上用IO扩展出来的键盘),LCD就会自动关闭(黑屏、显示慢慢消失之类),只要按下键盘就能恢复。 这个问题让我花了一天多的时间。其实如果是手持设备,这样也没有什么。但是我们公司的产品是要转载 2010-01-07 11:20:00 · 8015 阅读 · 6 评论 -
request_firmware 的用法,struct firmware,内核,固件,usb
【转帖请注明出处:blog.csdn.net/lanmanck】 网上有许多说明,ldd3也有:http://www.deansys.com/doc/ldd3/ch14s08.html。对于刚使用的人来说,上面都说的笼统,说了等于没说,我总结一下:1、request_firmware在内核使用,需要文件系统支持,就是说,启动的时候如果在驱动里面的probe函数调用request_f原创 2010-01-04 09:16:00 · 7537 阅读 · 0 评论 -
sd 卡驱动在2.6内核的编写.sd/mmc/sdio kernel,sd/mmc/sdio 内核
【转帖请注明出处:blog.csdn.net/lanmanck】sd卡驱动主要参照已有的文件即可,2410,9260都挺好。其实写驱动主要是搞清楚工作流程即可。我这里写一些心得与大家分享下,基于2.6.24:1、主要的结构体:static const struct mmc_host_ops my_mci_ops = { .request原创 2009-12-28 09:20:00 · 4256 阅读 · 1 评论 -
全面解析PowerPC架构下的扁平设备树FDT 、设备树节点DTB
Sailor_forever sailing_9806#163.com(本原创文章发表于Sailor_forever 的个人blog,未经本人许可,不得用于商业用途。任何个人、媒体、其他网站不得私自抄袭;网络媒体转载请注明出处,增加原文链接,否则属于侵权行为。如有任何问题,请留言或者发邮件给sailing_9806@163.com)http://blog.csdn.net/sailor_8318转载 2010-03-03 11:10:00 · 6885 阅读 · 0 评论 -
集散序列,散集序列?的使用。 struct scatterlist,scatter/gather散布表
先来点概念:http://blog.csdn.net/fudan_abc/archive/2007/07/28/1713976.aspx 无聊的it玩家们创建了有一个词,叫做scatter/gather,她是一种用于高性能IO的标准技术.她通常意味着一种DMA传输方式,对于一个给定的数据块,她老人家可能在内存中存在于一些离散的缓冲区,换言之,就是说一些不连续的内存缓冲区一起保存一个数据原创 2009-12-14 15:31:00 · 11737 阅读 · 1 评论 -
s3c24xx-pcm.c的打印信息,参考下。这是open->write->close的完整过程
[root@xx /www]# ./oss_test -c 2 -b 16 -f 48 -p cyc.wavs3c24xx-pcm:Entered s3c24xx_pcm_opens3c24xx-uda:uda134x_write reg: 02, value:16APP:open files3c24xx-i2s:Entered s3c24xx_i2s_set_fmts3c24xx-i2s:En原创 2010-02-01 21:46:00 · 1374 阅读 · 0 评论 -
Linux驱动修炼之道-SPI驱动框架源码分析(中)
来自:http://blog.csdn.net/woshixingaaa/article/details/6574220这篇来分析spi子系统的建立过程。嵌入式微处理器访问SPI设备有两种方式:使用GPIO模拟SPI接口的工作时序或者使用SPI控制器。使用GPIO模拟SPI接口的工作时序是非常容易实现的,但是会导致大量的时间耗费在模拟SPI接口的时序上,访问效率比较低,容易成为系统转载 2011-10-21 22:10:15 · 10457 阅读 · 2 评论 -
Linux驱动修炼之道-SPI驱动框架源码分析(下)
来自:http://blog.csdn.net/woshixingaaa/article/details/6574224这篇文档主要介绍spi数据传输过程。当应用层要向设备传输数据的时候,会通过ioctl向设备驱动发送传输数据的命令。如图,向SPI从设备发送读写命令,实际的读写操作还是调用了主机控制器驱动的数据传输函数。transfer函数用于spi的IO传输。但是,tra转载 2011-10-21 22:10:53 · 5664 阅读 · 2 评论 -
reboot porting,重启指令的kernel移植,linux shell command
[By lanmanck]搜索了一下,好像没怎么介绍移植时这个指令是如何执行的。一般在shell窗口下输入reboot会重启电脑,嵌入式亦然。那么在移植Kernel到arm时要怎么实现reboot,或者重启指令呢?一般重启就是复位,有外部看门狗或者内置看门狗都可,不同的SOC/不同的电路有不同方法,今儿个以TI Davinci平台为例说一下。当输入reboot,内核调用如下:原创 2013-12-22 21:10:41 · 2827 阅读 · 0 评论 -
ubuntu 64bit arm gcc: No such file or directory 没有那个文件或目录
安装了ubuntu12 LTS 64bit 。编译调用arm-linux-gcc/arm-unknown-linux-gnu-gcc时显示: No such file or directory 没有那个文件或目录。解决方法:安装 sudo apt-get install lsb-core原因:待解。。。原创 2013-05-30 15:25:21 · 2582 阅读 · 0 评论 -
uboot 参数对应着内核模块的参数 module_param
本文来自:http://3y.uu456.com/bp-b399108ed0d233d4b14e6911-1.html很多时候我们内核驱动的模块需要模块参数来运行,这;如下面例子setenvbootargsmem=8;Uboot启动参数中的红色部分表示模块,蓝色部分;我们举例dm365_imp.oper_mode=;驱动文件dm365_ipipe.c被编译到dm3;staticu32ope转载 2013-05-22 20:38:37 · 2174 阅读 · 0 评论 -
davinci 达芬奇 时钟驱动分析 dm365/dm368 struct clk
【blog.csdn.net/lanmanck】本文纯属啰嗦帖子,没有很高的技术含量,仅供参考。以dm365的spi为例说明之:1、先在dm365.c里定义几个宏:定义PLL1/2的属性:static struct pll_data pll1_data{定义寄存器基址灯}定义参考时钟:static struct clk ref_clk={定义晶振时钟}定义PLL1的时钟:s原创 2012-11-07 17:59:14 · 3514 阅读 · 0 评论 -
内核函数 do_div() 与 undefined reference to __udivdi3
本文来自:http://hi.baidu.com/serial_story/blog/item/8ff17654ecae9e58574e0018.html【问题】编译Linux下面的代码,经常会遇到这种错误:undefined reference to `__udivdi3'【解决过程】之前遇到过几次了,都是类似的原因导致此问题的。后来才了解,其根本原因:嵌入式中,32转载 2012-06-01 11:38:53 · 8935 阅读 · 0 评论 -
Framebuffer编程How-to
http://xotianhu.bokee.com/2386074.html7.1. framebuffer设备介绍 这是一个关于如何编程的文档,因此,请在你编译或执行例子之前,正确配置你的framebuffer设备。用framebuffer设备,你可以把你的计算机屏幕当成一个真正的图形设备。你可以修改分辨率,刷新率,色彩深度等。最好的一点是,你可以把像素点绘在任何你想转载 2009-08-07 17:35:00 · 5472 阅读 · 0 评论 -
linux framebuffer 例子
http://blog.csdn.net/fyzhao/archive/2008/12/11/3499805.aspx 昨天做的一个极简单的framebuffer的例子,用来学习怎样操作fb设备。 这段代码是在picogl的vesafb backend部分的基础上简出来的,所以变量名还保留着。流程如下:1 打开framebuffer设备;2 通过ioctl取得fixed转载 2009-08-07 17:40:00 · 4566 阅读 · 0 评论 -
I2C设备驱动编写,struct i2c_device_id,struct i2c_driver,i2c_add_driver,i2c_register_board_info
我的理念:简单实用即可,不要搞一堆源码出来,结果让人看了以后还不知道怎么用,看我的:1、在arch/arm/mach-xxx/ 自己的平台文件里添加i2c信息,美其名曰:i2c_board_info例如:static struct i2c_board_info __initdata xxxi2c_board_info[] = { { I2C_BOAR原创 2012-08-06 20:34:03 · 23396 阅读 · 18 评论 -
new style I2C设备驱动分析,probe,struct i2c_device_id
本文来自:http://hi.baidu.com/fcni_cn/item/561f6f3f0c391abc124b146a最近看了韦东山驱动视频的i2c部分,总结出相关知识,分享给大家 .在内核中有两种方式的i2c设备驱动的编写方法,一种legacy方式,一种是newstyle方式。韦东山视频和宋宝华书籍里讲解的都是legacy方式,但是在新版本内核中,legacy方式的i2c转载 2012-08-06 00:15:32 · 14870 阅读 · 0 评论 -
__setup 在内核中的作用
本文来自:http://blog.chinaunix.net/uid-13798723-id-2871394.html介绍的很详细,我也正好用了一次__setup(),蛮好用的:),今天回头看main.c,又搜索了一下,分享给大家: __setup(//做了一次完整的盗贼,我毫无修改的抄袭了一次,但有时间会做量身裁减的//from http://转载 2012-05-29 16:40:18 · 8958 阅读 · 0 评论