<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[armeasy的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/armeasy</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; armeasy]]></copyright><item><title><![CDATA[x4412开发板&ibox卡片电脑项目实战20－C库函数文件操作实验]]></title><link>https://blog.youkuaiyun.com/armeasy/article/details/40017127</link><guid>https://blog.youkuaiyun.com/armeasy/article/details/40017127</guid><author>armeasy</author><pubDate>Sun, 12 Oct 2014 13:00:40 +0800</pubDate><description><![CDATA[我们不仅可以使用linux的文件操作函数，还可以直接使用标准的C库函数文件。C库函数的文件操作实际上是独立于具体的操作系统平台的，不管是在 DOS、Windows、Linux 还是在 VxWorks 中都是这些函数。这极大地方便了用户层的调试。
1.1.1    创建和打开
FILE *fopen(const char *path, const char *mode);
fopen()实现打]]></description><category></category></item><item><title><![CDATA[x4412开发板&ibox卡片电脑项目实战19－linux文件操作实验]]></title><link>https://blog.youkuaiyun.com/armeasy/article/details/40017103</link><guid>https://blog.youkuaiyun.com/armeasy/article/details/40017103</guid><author>armeasy</author><pubDate>Sun, 12 Oct 2014 12:57:50 +0800</pubDate><description><![CDATA[linux的文件操作包括创建，打开，读写，定位，关闭等。在WINCE或是WINDOWS系统下，我们通常称这些接口为API函数。下面我们将分别介绍这些系统函数的使用方法。
1.1.1    创建
int creat(const char *filename, mode _ t mode);
参数mode指定新建文件的存取权限，它同umask一起决定文件的最终权限（mode&umask），其中u]]></description><category></category></item><item><title><![CDATA[x4412开发板&ibox卡片电脑项目实战17－模块传参实验]]></title><link>https://blog.youkuaiyun.com/armeasy/article/details/40017089</link><guid>https://blog.youkuaiyun.com/armeasy/article/details/40017089</guid><author>armeasy</author><pubDate>Sun, 12 Oct 2014 12:53:27 +0800</pubDate><description><![CDATA[在很多情况下，在加载驱动时我们需要接收外部的指令。我们可以通过加载模块传递参数的方式实现。在驱动中，通过“module_param(参数名,参数类型,参数读/写权限)”为模块定义一个参数，在加载模块时，向其传递参数。如果不传递，则参数为驱动中定义的默认值。
参数类型可以是 byte、short、ushort、int、uint、long、ulong、charp（字符指针）、bool 或 invbo]]></description><category></category></item><item><title><![CDATA[x4412开发板&ibox卡片电脑项目实战18－驱动中导出符号]]></title><link>https://blog.youkuaiyun.com/armeasy/article/details/40017093</link><guid>https://blog.youkuaiyun.com/armeasy/article/details/40017093</guid><author>armeasy</author><pubDate>Sun, 12 Oct 2014 12:53:14 +0800</pubDate><description><![CDATA[在驱动调试时，经常需要驱动互调，即在A驱动中调用B驱动中的相关函数。这时，驱动中的导出符号功能就可以大显身手了。/proc/kallsyms文件对应着内核符号表，它记录了符号以及符号所在的内存地址。
模块可以使用如下宏导出符号到内核符号表：
EXPORT _ SYMBOL(符号名);
EXPORT _ SYMBOL _ GPL(符号名);
       其他模块需要使用导出的符号时，只需声明]]></description><category></category></item><item><title><![CDATA[x4412开发板&ibox卡片电脑项目实战16－将hello x4412驱动编译成模块]]></title><link>https://blog.youkuaiyun.com/armeasy/article/details/40017041</link><guid>https://blog.youkuaiyun.com/armeasy/article/details/40017041</guid><author>armeasy</author><pubDate>Sun, 12 Oct 2014 12:44:44 +0800</pubDate><description><![CDATA[在内核根目录执行make menuconfig，进入Device Drivers-> Character devices菜单界面，找到hello X4412 driver配置选项，按空格键将它配置成模块[M]，保存退出。
执行如下指令，保存配置好的内核配置文件：
cp .config arch/arm/configs/x4412_android_defconfig
       再在整个源码]]></description><category></category></item><item><title><![CDATA[x4412开发板&ibox卡片电脑项目实战15－移植第一个hello x4412内核驱动]]></title><link>https://blog.youkuaiyun.com/armeasy/article/details/40017013</link><guid>https://blog.youkuaiyun.com/armeasy/article/details/40017013</guid><author>armeasy</author><pubDate>Sun, 12 Oct 2014 12:42:00 +0800</pubDate><description><![CDATA[前面我们学习了Linux驱动的调试方法，加载方法以及编写步骤，本章节我们将从零开始，编写第一个字符设备驱动。
在kernel/drivers/char/x4412目录下新建Makefile，Kconfig以及hello-x4412.c三个文件，Makefile文件内容如下：
obj-$(CONFIG_HELLO_X4412_DRIVER) += hello-x4412.o
Kconfig文件]]></description><category></category></item><item><title><![CDATA[x4412开发板&ibox卡片电脑项目实战14－linux驱动的编写步骤]]></title><link>https://blog.youkuaiyun.com/armeasy/article/details/40016889</link><guid>https://blog.youkuaiyun.com/armeasy/article/details/40016889</guid><author>armeasy</author><pubDate>Sun, 12 Oct 2014 12:20:55 +0800</pubDate><description><![CDATA[从零开始编写linux驱动时，无论采用linux的何种架构，基本上都可以归纳为以下驱动八要素。
1.1.1    建立Linux驱动框架
Linux内核在使用驱动时首先要装载驱动，在装载过程中进行一些初始化动作，如建立设备文件、分配内存等。在驱动程序中需提供相应函数来处理驱动初始化工作，该函数须使用module_init宏指定。Linux系统在退出时需卸载Linux驱动，在卸载过程中进行一些退]]></description><category></category></item><item><title><![CDATA[x4412开发板&ibox卡片电脑项目实战12－linux驱动的加载方法]]></title><link>https://blog.youkuaiyun.com/armeasy/article/details/39621265</link><guid>https://blog.youkuaiyun.com/armeasy/article/details/39621265</guid><author>armeasy</author><pubDate>Sat, 27 Sep 2014 23:40:08 +0800</pubDate><description><![CDATA[在类unix操作系统中，驱动加载方式一般分为：静态加载和动态加载。静态加载就是把驱动程序直接编译到内核里，系统启动后直接被调用。静态加载的缺点是调试起来比较麻烦，每次修改一个地方都要重新编译下载内核，效率较低。动态加载利用了LINUX的module特性，可以在系统启动后用insmod命令把驱动程序（.ko文件）添加上去，在不需要的时候用rmmod命令来卸载。下面我们通过蜂鸣器驱动实例分别对其进行详]]></description><category></category></item><item><title><![CDATA[x4412开发板&ibox卡片电脑项目实战11－linux驱动的调试方法]]></title><link>https://blog.youkuaiyun.com/armeasy/article/details/39621067</link><guid>https://blog.youkuaiyun.com/armeasy/article/details/39621067</guid><author>armeasy</author><pubDate>Sat, 27 Sep 2014 23:35:48 +0800</pubDate><description><![CDATA[驱动程序开发的重点就在于驱动、系统的调试了，因此，掌握linux驱动的调试方法，是linux系统工程师必须掌握的技能。这里介绍驱动开发中常用的几种调试手段：

l 利用printk

l 查看OOP消息

l 利用strace

l 利用内核内置的hacking选项

l 利用ioctl方法

l 利用/proc 文件系统

l 使用kgdb
1.1.1 
   利]]></description><category></category></item><item><title><![CDATA[x4412开发板&ibox卡片电脑项目实战10－使用buildroot搭建linux文件系统]]></title><link>https://blog.youkuaiyun.com/armeasy/article/details/39620915</link><guid>https://blog.youkuaiyun.com/armeasy/article/details/39620915</guid><author>armeasy</author><pubDate>Sat, 27 Sep 2014 23:30:49 +0800</pubDate><description><![CDATA[上一章节我们讲述了最简单的文件系统的搭建方式，在实际应用场景中，我们需要添加很多第三方文件，比如busybox，tslib，qt，vim，交叉编译工具等，如果我们手动移植里面的任何一个源码包，都会花费我们少则半个小时，多则半天，甚至一天，大大的浪费了我们宝贵的时间。buildroot可以很方便的解决这些问题。我们只需要通过menuconfig配置我们需要的功能，不需要的功能去掉，再执行make指令]]></description><category></category></item><item><title><![CDATA[x4412开发板&ibox卡片电脑项目实战9－搭建最简单的linux文件系统]]></title><link>https://blog.youkuaiyun.com/armeasy/article/details/39620755</link><guid>https://blog.youkuaiyun.com/armeasy/article/details/39620755</guid><author>armeasy</author><pubDate>Sat, 27 Sep 2014 23:20:12 +0800</pubDate><description><![CDATA[Linux文件系统不仅包含着文件中的数据而且还有文件系统的结构，所有Linux用户和程序看到的文件、目录、软连接及文件保护信息等都存储在其中。有了文件系统，用户就可以很方便的和Linux设备进行数据交互了。

随着实际需求的不断提高，Linux文件系统也变得越来越庞大。无论它如何千变万化，归根结底，都是基于最基本的linux文件系统不断丰富而来。因此，我们完全有必要了解最基本的文件系统的搭建过]]></description><category></category></item><item><title><![CDATA[x4412开发板&ibox卡片电脑项目实战8－Linux下的C语言编程风格]]></title><link>https://blog.youkuaiyun.com/armeasy/article/details/39619993</link><guid>https://blog.youkuaiyun.com/armeasy/article/details/39619993</guid><author>armeasy</author><pubDate>Sat, 27 Sep 2014 22:45:14 +0800</pubDate><description><![CDATA[谈起linux的编程，我们首先就会想到GNU。GNU计划，又称革奴计划，是由Richard Stallman在1983年9月27日公开发起的。它的目标是创建一套完全自由的操作系统。它在编写linux的时候自己制作了一个标准成为 GNUC标准。ANSI，全称为美国国家标准协会,它对C做的标准后来被国际标准协会接收成为标准C ，所以 ANSI C即标准C。

GNU C对标准C进行了一系列扩展，以]]></description><category></category></item><item><title><![CDATA[x4412开发板&ibox卡片电脑项目实战7－Linux内核的引导]]></title><link>https://blog.youkuaiyun.com/armeasy/article/details/39619849</link><guid>https://blog.youkuaiyun.com/armeasy/article/details/39619849</guid><author>armeasy</author><pubDate>Sat, 27 Sep 2014 22:29:34 +0800</pubDate><description><![CDATA[linux的启动框架如下：]]></description><category></category></item><item><title><![CDATA[x4412开发板&ibox卡片电脑项目实战6－配置内核]]></title><link>https://blog.youkuaiyun.com/armeasy/article/details/39619681</link><guid>https://blog.youkuaiyun.com/armeasy/article/details/39619681</guid><author>armeasy</author><pubDate>Sat, 27 Sep 2014 22:24:25 +0800</pubDate><description><![CDATA[我们可以使用如下四条命令的任意一条来配置内核：]]></description><category></category></item><item><title><![CDATA[x4412开发板&ibox卡片电脑项目实战5－修改内核LOGO]]></title><link>https://blog.youkuaiyun.com/armeasy/article/details/39499949</link><guid>https://blog.youkuaiyun.com/armeasy/article/details/39499949</guid><author>armeasy</author><pubDate>Tue, 23 Sep 2014 16:15:24 +0800</pubDate><description><![CDATA[由于我们linux,android都共用一套uboot和内核，因此默认linux系统启动时，显示的仍然是一个android机器人图标。我们可以从这个机器人图标入手，修改成我们自己想要的LOGO。具体步骤如下：
第一步:在kernel/drivers/video/logo/Kconfig 中添加配置文件: 
config LOGO_X4412_CLUT224
	bool "224-color X]]></description><category></category></item><item><title><![CDATA[x4412开发板&ibox卡片电脑项目实战4－在uboot中添加开机LOGO]]></title><link>https://blog.youkuaiyun.com/armeasy/article/details/39499765</link><guid>https://blog.youkuaiyun.com/armeasy/article/details/39499765</guid><author>armeasy</author><pubDate>Tue, 23 Sep 2014 16:07:59 +0800</pubDate><description><![CDATA[在uboot中添加开机LOGO，基本上可以归纳为以下四个步骤：
一：初始化LCD控制器相应的寄存器；
二：初始化LCD控制器对应的时钟源；
三：填充framebuffer；
四：打开背光。
在uboot\board\samsung\x4412\x4412.c中，我们在函数board_late_init中添加显示开机LOGO的函数x4412_framebuffer_init()，该函数内嵌]]></description><category></category></item><item><title><![CDATA[x4412开发板&ibox卡片电脑项目实战3－文件系统编译脚本解析]]></title><link>https://blog.youkuaiyun.com/armeasy/article/details/39499737</link><guid>https://blog.youkuaiyun.com/armeasy/article/details/39499737</guid><author>armeasy</author><pubDate>Tue, 23 Sep 2014 16:00:17 +0800</pubDate><description><![CDATA[mk脚本中包含了android文件系统和linux文件系统的编译，这里我们只讲解linux文件系统的编译脚本。]]></description><category></category></item><item><title><![CDATA[x4412开发板&ibox卡片电脑项目实战2－内核编译脚本解析]]></title><link>https://blog.youkuaiyun.com/armeasy/article/details/39499707</link><guid>https://blog.youkuaiyun.com/armeasy/article/details/39499707</guid><author>armeasy</author><pubDate>Tue, 23 Sep 2014 15:58:53 +0800</pubDate><description><![CDATA[内核的编译脚本如下：
build_kernel()
{
	# Compiler kernel
	cd ${BS_DIR_TOP}/kernel || return 1	//进入内核目录
	make ${BS_CONFIG_KERNEL}  || return 1		//配置内核
	make -j${threads} || return 1		//编译内核

	# Copy zImage to r]]></description><category></category></item><item><title><![CDATA[x4412开发板&ibox卡片电脑项目实战1－uboot编译脚本解析]]></title><link>https://blog.youkuaiyun.com/armeasy/article/details/39499667</link><guid>https://blog.youkuaiyun.com/armeasy/article/details/39499667</guid><author>armeasy</author><pubDate>Tue, 23 Sep 2014 15:56:54 +0800</pubDate><description><![CDATA[x4412&ibox平台所有源码包统统可以使用一个mk脚本编译。编译uboot的脚本如下：
build_uboot()
{	
	# Compiler uboot
	cd ${BS_DIR_TOP}/uboot || return 1	//进入uboot根目录
	make distclean || return 1	//清除缓存
	make ${BS_CONFIG_BOOTLOADER_UBOOT]]></description><category></category></item><item><title><![CDATA[android4.0平台通过IOCTL控制LED-基于x210v3开发板]]></title><link>https://blog.youkuaiyun.com/armeasy/article/details/11523401</link><guid>https://blog.youkuaiyun.com/armeasy/article/details/11523401</guid><author>armeasy</author><pubDate>Tue, 10 Sep 2013 13:44:11 +0800</pubDate><description><![CDATA[1.1     使用IOCTL测试LED
前面的实验中，我们通过sys文件系统，在sys/devices/platform/x210-led目录下建立了四个对应led的文件,通过改变这四个文件的状态控制LED灯。本章节我们重新编写驱动，另外再编写测试应用程序，通过IOCTL控制LED。
1.1.1    LED驱动
在kernel/drivers/char目录下建议led2目录，在led2目]]></description><category></category></item></channel></rss>