X-026-KERNEL-Linux gpio driver的移植之gpio range

作者:wowo 发布于:2017-9-27 22:27 分类:X Project

我们在[1][2]中提到过,鉴于gpio的特殊性,pinctrl subsystem特意留了一个后门(gpio range),gpio driver可以通过这个后门直接向pinctrl subsystem申请将某个pin用作gpio功能。本文将根据一个简单的示例,介绍这个后门的使用方法,以加深对相关机制的理解。

注1:本文的测试方法和[3]中的一致,即:通过gpiolib sysfs api控制LED0(GPIOA19)的亮灭,因而不再罗列详细步骤。

阅读全文>>

标签: driver GPIO porting pinctrl range

评论(0) 浏览(402)

X-025-KERNEL-Linux gpio driver的移植之基本功能

作者:wowo 发布于:2017-9-13 22:18 分类:X Project

本文将基于本站GPIO subsystem[1]相关的文章,结合”X Project”的开发过程,实现一个简单的gpio driver,并利用gpiolib提供的sysfs api进行简单的测试,进而加深对gpio相关概念的理解。

注1:本文后续的描述,kernel基于本站“X Project”所使用的kernel版本,硬件基于 ”X Project”所使用的“Bubbugum-96”平台[2]

阅读全文>>

标签: sysfs driver GPIO porting gpiolib

评论(2) 浏览(618)

X-024-OHTHERS-在windows平台下使用libusb

作者:wowo 发布于:2017-7-23 22:21 分类:X Project

话说我们“X Project”的第一个任务就是通过USB将主机上的Image文件下载到开发板的Ram中执行(参考[1]中有关的内容),为此我们在host中porting了一个简单的应用程序(称作DFU[2]),负责和开发板ROM中的代码交流,下载并执行Image文件。为了方便,该应用程序使用libusb[3]进行USB有关的操作。

libusb不止使用起来简单,还有一个极大的优点,就是“跨平台”的特性。我们之前的例子[4]都是在Linux平台下操作的,最近由于win10内置了Ubuntu,Linux平台有关的开发工作,基本上都可以在这里完成了,因此就不需要费时、费神地切换到纯Linux环境下工作了。

不过呢,Win10的Ubuntu好是好,但没法像纯Linux系统那样支持USB设备,DFU有关的工作就无法在这里正常工作,因此就发挥libusb的特性,把“X Project” DFU[2]有关的代码在Windows下跑起来,也算感受一下“跨平台”的魅力。具体步骤如下。

阅读全文>>

标签: MinGW libusb windows zadig dfu

评论(1) 浏览(717)

X-023-KERNEL-Linux pinctrl driver的移植

作者:wowo 发布于:2017-7-14 21:58 分类:X Project

本文是“linux内核中的GPIO系统之(4):pinctrl驱动的理解和总结”的一个实例,结合”X Project”的开发过程,介绍pinctrl driver的移植步骤,进而加深对pinctrl framework的理解。

注1:本文后续的描述,kernel基于本站“X Project”所使用的kernel版本[4],硬件基于 ”X Project”所使用的“Bubbugum-96”平台。

阅读全文>>

标签: Linux Kernel driver porting pinctrl

评论(0) 浏览(685)

X-022-OTHERS-git操作记录之合并远端分支的更新

作者:wowo 发布于:2017-1-2 22:26 分类:X Project

本文将以“X Project”的开发过程为例,介绍“合并远端分支的更新”的方法。事情的起因如下:

X Project”是一个学习嵌入式Linux开发全过程的小项目,项目开始的时候,u-boot、linux kernel等代码,都是直接从官方仓库的当前状态获取的(具体可参考[2])。以u-boot为例,“X Project”的u-boot[3]是2016年4月23日从u-boot的官方仓库[1]拷贝而来的。

随着时间的推移,官方仓库可能有很多更新,例如修复bug、添加新功能等,在合适的时间点,需要将这些更新合并。下面就以“X Project”的u-boot为例,介绍合并的步骤。

阅读全文>>

标签: git remote u-boot merge denx add

评论(0) 浏览(1196)

基于Hikey的"Boot from USB"调试

作者:wowo 发布于:2016-12-20 22:36 分类:X Project

话说在半年前,乐美客送给蜗窝几块Hikey(乐美客版)开发板[1],不过由于太忙,就一直把它们放在角落里思考人生,因此甚是愧疚。这几天,闲来无事,翻了下Hikey的资料,觉得挺有意思,就想花点时间让“X Project”在这个板子上跑起来。当然,按照“规矩”,先从“【任务1】启动过程-Boot from USB”做起,记录如下。

阅读全文>>

标签: USB boot u-boot spl hikey Hi6220V100

评论(0) 浏览(1854)

X-021-ROOTFS-基于busybox的最简rootfs的制作

作者:wowo 发布于:2016-12-5 22:50 分类:X Project

在前一篇文章[1]中,我们编写并成功运行了一个简单的init程序。于是,“【任务4】启动Linux kernel到命令行”就成了一个水到渠成的事情。当然,只有一个简单的程序还不够,我们要来点实在的,一个真正的根文件系统。

Linux系统中制作根文件系统的方法有很多种,基于一个个package一点点编译、利用buildroot、利用busybox、等等,本文将以嵌入式系统中普遍使用的busybox为例,介绍制作一个简单的rootfs的方法。

阅读全文>>

标签: rootfs busybox inittab rcS

评论(0) 浏览(1711)

X-020-ROOTFS-initramfs的制作和测试

作者:wowo 发布于:2016-12-3 11:08 分类:X Project

我们在“X-015-KERNEL-ARM generic timer driver的移植”中移植完ARM generic timer之后,Linux的启动已经走完了内核空间的旅程,即将冲破kernel走向用户空间,有“诗”为证:

[    0.142156] ---[ end Kernel panic - not syncing: No working init found.  Try passing init= option to kernel. See Linux Documentation/init.txt for guidance.

意思很明显,kernel找不到可执行的init文件,无法继续下去了。还好,基本的串口驱动[1]开发完毕之后,我们可以把魔抓伸向用户空间了。牵涉到用户空间,麻烦就大了,块设备、文件系统、rootfs等等,不是三言两语就能搞定的。不过没关系,我们可以从最简单的ramdisk入手。

因此,本文将以initramfs为例,介绍kernel把CPU的控制权交给用户空间程序的过程。与此同时,本文也是串口驱动[1]和GIC驱动[2]的测试用例(这两个驱动移植完成后,一直没有测试,机会终于来了)。

阅读全文>>

标签: GIC initramfs randisk elf rootfs

评论(0) 浏览(1203)

X-019-KERNEL-串口驱动开发之数据收发

作者:wowo 发布于:2016-11-29 21:55 分类:X Project

本文是“X Project”串口驱动开发的第四篇,在第二篇“uart driver框架[1]”的基础上,实现基本的、可收发数据的uart驱动,并借助这个过程,学习如下知识:

中断的申请和使用;

利用中断发送和接收数据;

uart_ops中常用函数(.startup, .start_tx, etc.)的使用。

阅读全文>>

标签: Linux driver irq serial tx rx transmit

评论(6) 浏览(1329)

X-018-KERNEL-串口驱动开发之serial console

作者:wowo 发布于:2016-11-18 22:25 分类:X Project

本文是“X Project”串口驱动开发的第三篇,在第二篇“uart driver框架[1]”的基础上,实现console驱动,并借助这个过程,理解如下知识:

1)从DTS regs字段中获取设备的I/O基址,并map出来供driver访问。这是device tree最基本的使用场景。

2)从DTS aliases中获取串口的索引号。这是device tree aliases功能的一个应用场景。

3)uart port—>line和console—>index之间的关系。

阅读全文>>

标签: Linux driver serial console aliases

评论(0) 浏览(1182)

Copyright @ 2013-2015 蜗窝科技 All rights reserved. Powered by emlog