
Embedded Linux
zjujoe
学习,分享,开心
展开
-
Linux-USB Gadget : Part 2: USB Gadget API for Linux (From Linux kernel 2.6.25.10)
下午用最新内核试了一下 make pdfdocs 没有成功(google 一下也没有搞定),make htmldocs 成功了。于是为了方便,将原本分散的各章节合并成一个。 本想边看边理解、翻译,想想 API 其实是很直白的东西,翻译意义不大,于是直接放到这里。在看 gadget 驱动时,该 API 文档和 USB 协议 (CH9) 是最好的参考。USB Gadget API for Li转载 2008-07-13 23:34:00 · 11370 阅读 · 0 评论 -
优化开机过程中的内核空闲时间
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <object classid原创 2008-12-09 11:22:00 · 2354 阅读 · 0 评论 -
使用 trace32 调试 Linux 内核
1)要在 Make Menuconfig 里打开 -g 选项,这样输出的 vmlinux 会包含源代码信息。2) 内核缺省使用 -O2/Os 来编译, 改为O0时会编译出错。 我们只能退而求其次, 在需要调试的目录的Makefile 中, 添加 EXTRA_CFLAGS += -O0, 注意该设置不能应用到子目录。 或者,也原创 2009-03-25 21:36:00 · 8789 阅读 · 3 评论 -
关于linux nand 驱动调试的一些注意点
关于linux nand 驱动调试的一些注意点作者: zjujoe 转载请注明出处Email:zjujoe@yahoo.comBLOG:http://blog.youkuaiyun.com/zjujoe 最近在开发 nand驱动, 不可避免的, 用到了 nand tools. 这里将一些细节记录下来。网上google 的内容好像也不是很多。Nand tools(mtdut原创 2009-04-29 09:56:00 · 8535 阅读 · 0 评论 -
dma_alloc_coherent vs. dma_alloc_writecombine
这两天在做 DMA 相关开发, 遇到一对分配 dma buffer 的函数,dma_alloc_coherent 与 dma_alloc_writecombine。 不知其区别。 google 一下也没有得到信息。只好自己看代码。 原来 dma_alloc_coherent 在 arm 平台上会禁止页表项中的 C (Cacheable) 域以及 B (Bufferable)域。而 dm原创 2009-05-15 16:50:00 · 5223 阅读 · 2 评论 -
开机过程中的内核打印
开机过程中的内核打印作者: zjujoe 转载请注明出处Email:zjujoe@yahoo.comBLOG:http://blog.youkuaiyun.com/zjujoe 前言嵌入式开发中, 通常使用串口输出调试信息,了解运行状态。 内核启动过程中,在不同阶段会通过不同的方式将调试信息输出到串口。 (注:以下内容针对 arm-linux.)解压缩阶段解压缩阶段内核会输出:原创 2009-05-27 13:36:00 · 6890 阅读 · 0 评论 -
关于 switch class
早上查找一种代码示例(通过 sysfs 开关外设比如 modem),看到了 switch class, 位于drivers/switch由google编写。它主要用于管理一些开关型外设, 比如耳机插拔等。 目前实现了 gpio 型的开关, 当然,它也提供了接口用于实现非 gpio型开关。它提供了 sysfs 的接口用于查询当前开关的状态, 同时出现开关事件时,会通过 uevent原创 2009-08-13 09:05:00 · 2407 阅读 · 1 评论 -
使用 kerneldoc
http://www.mjmwired.net/kernel/Documentation/kernel-doc-nano-HOWTO.txt 比如: drivers/rtc/rtc-pxa.c 中写: /** * pxa_rtc_probe() - probe function for pxa micco driver * @pdev: device struct原创 2009-06-18 13:39:00 · 2141 阅读 · 0 评论 -
几种 XXX_initcall 宏研究.doc
引言今天阅读启动相关代码(bootinfo.c), 看到了一个函数:232 core_initcall(bootinfo_init); 不由想起前两天看到的: 607 subsys_initcall(gpiolib_debugfs_init) 结合平时我们使用的:4549 module_init(pxa3xx_nand_init);(built-in时对应:249 #d原创 2009-08-24 14:25:00 · 1202 阅读 · 0 评论 -
Nand 驱动调试记录
新项目使用了 Micro 4Gb 16bit Nand 作为 Storage, 这样,我们需要对下载工具、bootloader、Linux 内核做一些修改。 这里主要记录了 Linux 内核 Nand 驱动调试过程中遇到的问题。问题1: 擦除某个分区会导致系统不能启动执行命令擦除某分区:flash_eraseall /dev/mtd8重启, 发现系统不能启动!重新用 Jtag原创 2009-09-30 11:37:00 · 2390 阅读 · 0 评论 -
strace工具移植到ARM(davinci)平台
strace工具是一个非常强大的工具,是调试程序的好工具。要移植到arm平台,就需要使用交叉编译工具编译生成静态链接的可执行文件。具体步骤如下:1.下载 strace-4.5.16.tar.bz2,不要下载最新的strace-4.5.18.tar.bz2,因为后者编译会出错。下载网址是:http://sourceforge.net/project/showfiles.php?group_id=28转载 2009-10-10 15:19:00 · 2931 阅读 · 0 评论 -
Trace 调试之 noinline 修饰符
今天 试着设断点到:static int __init pxafb_map_video_memory(struct pxafb_info *fbi) 失败! System.map里也找不到它。 单步跟踪发现该函数被 inline 了!即使是使用 O0 编译也不行!可能是因为使用了 static 修饰符,本身又是没有循环等复杂结构。编译器认为不 inline 太可惜了原创 2009-11-24 09:40:00 · 1532 阅读 · 2 评论 -
一个DMA 分配失败问题研究
一个DMA 分配失败问题研究作者: 宋立新Email:zjujoe@yahoo.com现象:最近好几个模块的同事都反应驱动中调用:dma_alloc_writecombine 会失败!研究:首先重现该问题, 在 nand 驱动的 probe 函数: pxa3xx_nand_probe 中调用 dma_alloc_writecombine: 测试代码: #i原创 2009-11-27 13:20:00 · 9857 阅读 · 0 评论 -
Linux嵌入式开发的一些总结
Linux嵌入式开发的一些总结作者: 宋立新Email:zjujoe@yahoo.com前言做了几年 Linux 底层嵌入式开发, 有一些心得, 这里记录下来,作为进一步学习 Linux 之前的一个总结。 每日构建Daily Build 是指利用自动化脚本,每天从版本库里提取代码及相关工具,生成可以下载到板子的系统镜像。大的公司比如Nokia/Microsoft等原创 2009-11-27 15:14:00 · 2232 阅读 · 3 评论 -
让系统 idle 时更省电_采用平台相关 idle 函数以降低平均功耗的一个实践
让系统 idle 时更省电_采用平台相关 idle 函数以降低平均功耗的一个实践作者: 宋立新Email:zjujoe@yahoo.com 从 Linux 内核启动说起。 话说某用户按下开机键, bootloader 将内核放入内存,然后跳转到内核首地址。如果内核为压缩版本 ( zImage) 内核会进行自解压, 然后运行非解压内核(Image)。 Image原创 2010-04-21 16:20:00 · 3623 阅读 · 0 评论 -
__initdata 的奇怪影响
__initdata 的奇怪影响作者: 宋立新Email:zjujoe@yahoo.com 恍然大悟后,当然也就不奇怪了。 不过当时 __initdata 修饰符确实给我们带来很大的困惑。 事情的经过是这样的。 通常我们设置mfp寄存器是在系统的启动阶段统一设置的, 所以 lc6830.c 中会有一个数组:static mfp_cfg_t saar_mfp_c原创 2010-04-21 16:23:00 · 10597 阅读 · 1 评论 -
尝试initramfs+ucLibc+busybox
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <object classid原创 2008-10-31 12:44:00 · 4322 阅读 · 0 评论 -
内核编译出错:multiple target patterns
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <!-- /* Font原创 2008-10-30 15:23:00 · 14242 阅读 · 1 评论 -
嵌入式系统里是否使用非解压内核
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <object classid原创 2008-10-28 16:46:00 · 1549 阅读 · 1 评论 -
Linux-USB Gadget : Part 1: 简介
Linux-USB Gadget : Part 1: 简介作者: zjujoe 转载请注明出处Email:zjujoe@yahoo.comBLOG:http://blog.youkuaiyun.com/zjujoe Google 一下,发现网上对 USB Gadget 的介绍资料(中文)比较少,刚好最近也在做这一块,于是产生了学习一下的兴趣,同时作为 home work, 将看到的, 理解翻译 2008-07-13 11:35:00 · 26912 阅读 · 2 评论 -
Linux-USB Gadget : Part 3: PXA U2D controller 简介
特性:ü 物理接口使用 12pin ULPI, 支持 15 个端点,16KB 内存, 4*4 DMA 通道,支持 OTGü 遵循 usb 2.0 规范ü 支持 High Speed 以及 full-speed 模式ü 支持 Bulk, Isochronous 以及 Interrupt 端点翻译 2008-07-14 21:44:00 · 6221 阅读 · 0 评论 -
Linux-USB Gadget : Part 4: 最简单的 gadget驱动:g_zero
Linux-USB Gadget : Part 4: 最简单的 gadget驱动:g_zero作者: zjujoe 转载请注明出处Email:zjujoe@yahoo.comBLOG:http://blog.youkuaiyun.com/zjujoe前言前面讲过,gadgetapi 提供了usb devicecontroller 驱动和上层gadget驱动交互的原创 2008-07-18 23:41:00 · 21739 阅读 · 3 评论 -
Linux-USB Gadget : Part 5: 测试 PXA UDC 驱动
Linux-USB Gadget : Part 5: 测试 PXA UDC 驱动作者: zjujoe 转载请注明出处Email:zjujoe@yahoo.comBLOG:http://blog.youkuaiyun.com/zjujoe 前言 USB协议的特性之一就是把复杂性留给软件。USB 驱动纷繁复杂,不管主机端还是设备端,不管是底层控制器驱原创 2008-07-24 15:42:00 · 12908 阅读 · 1 评论 -
Linux-USB Gadget : Part 6: dummy hcd 驱动简介
Linux-USB Gadget : Part 6: dummy hcd 驱动简介作者: zjujoe 转载请注明出处Email:zjujoe@yahoo.comBLOG:http://blog.youkuaiyun.com/zjujoe前言一直没有弄明白 dummy hcd 到底有什么用,因为它位于 gadget 目录里,以为是一个软件模拟的 udc 驱动。但是想想原创 2008-07-25 19:44:00 · 13354 阅读 · 2 评论 -
一个 Makefile 实例,用于编译各多个子目录测试代码
是一个统一编译各子目录下测试代码的Makefile, 写的时候在语法上花了不少时间,放在这里,留作纪念:P Normal 0 7.8 磅 0 2 false false false Mic原创 2008-08-08 15:49:00 · 3731 阅读 · 1 评论 -
Initramfs 能否用作根文件系统
前言:Initramfs是2.6内核的一个新特性。用于替换 Initrd. 今天试验了一下,研究其是否可以用作我们的根文件系统。方法: 对比普通启动 (使用 cramfs根文件系统)与使用initramfs的区别。使用 cpu 的一个 3.25M free running的时钟进行计数(有了jiffes后使用jiffes)测试数据:1) 普通启动内核大小:原创 2008-06-19 11:31:00 · 1924 阅读 · 1 评论 -
PXA310 平台上的浮点数支持方案研究
理论研究这两天发现 PXA310 的浮点运算不如 OMAP2420, 研究发现 OMAP2420 支持硬件级 VFP, 而pxa310 不支持硬件级浮点数计算。按照以前的做法,使用内核的 nwfpe (或者 fastfpe)进行浮点运算模拟:系统运行时发现不支持的指令,于是进入中断陷入序列,然后跳到 nwfpe的软件模拟函数中执行浮点运算,然后返回。新的 gcc (EABI版本)则支持原创 2008-06-27 18:59:00 · 2440 阅读 · 0 评论 -
浮点优化选项 -ffast-math:极大地提高浮点运算速度
关于浮点优化选项:(摘自C in a nutshell)C99 浮点环境支持科学和数学级别的应用,这些应用必须有相当高的精度,但是某些应用却不是如此,注重速度高于精度。对于这些以速度为重的应用, -ffast-math 选项定义了预处理器宏 __FAST_MATH__, 指示编译不必遵循 IEEE 和 ISO 的浮点运算标准。-ffast-math标记是一个群组选项,可以分别启用下面六个优化选原创 2008-07-02 10:16:00 · 18068 阅读 · 0 评论 -
gcc mthumb + O2 + mfast-math 选项测试
虽然arm cpu是32的,但是 sdram为16为总线,所以猜测 16 位的 thumb指令可以带来一些优化。修改了原来的测试代码,避免 O2 把所有代码优化掉(这可是O2的特长)测试结果表明,对于我们的浮点运算,这两个选项作用远没有 –ffast-math明显。测试结果也表明, 对我们这个测试程序,–ffast-math 对精度没有影响。测试方法分别使用marvell(gc原创 2008-07-02 16:25:00 · 4302 阅读 · 0 评论 -
Udev 内核机制(kobject_uevent) 性能优化
Udev 内核机制(kobject_uevent) 性能优化作者: zjujoe 转载请注明出处Email:zjujoe@yahoo.com前言这两天遇到一些 udev 的问题, 顺便阅读了一下文档(见参考文档), 基本了解了 udev 的机制。 嵌入式系统性能很重要,于是对内核这一块进行了性能方面的研究。内核大概20多处会调用了 kobject_uevent 函数发送 K原创 2008-09-27 10:59:00 · 17016 阅读 · 2 评论 -
使用 gpio 模拟 ps/2 接口对 Linux 实时性的要求
v/:* {behavior:url(#default#VML);}o/:* {behavior:url(#default#VML);}w/:* {behavior:url(#default#VML);}.shape {behavior:url(#default#VML);} Normal 0 7.8 磅 0 2原创 2008-09-28 17:54:00 · 2903 阅读 · 1 评论 -
一个 SPI 转串口驱动的优化
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <object classid原创 2008-10-18 16:47:00 · 9875 阅读 · 6 评论 -
关于 Linux 下安装根设备
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <!-- /* Font原创 2008-10-09 16:59:00 · 3174 阅读 · 0 评论 -
Ctrl C 不能中止程序问题
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <!-- /* Font原创 2008-10-27 14:31:00 · 7731 阅读 · 2 评论 -
内核启动时间优化一例
内核启动时间优化一例作者: 宋立新Email:zjujoe@yahoo.com前言 为了提高开机时间,我们需要优化的部分有:1) bootloader 启动速度2) Linux 内核启动速度3) 文件系统启动速度4) Nand (假设你的 Storage 使用 nand)的读速度5) 应用框架启动速度等等。原创 2010-05-15 13:26:00 · 9803 阅读 · 2 评论