- 博客(283)
- 资源 (26)
- 收藏
- 关注
原创 x4412开发板&ibox卡片电脑项目实战20-C库函数文件操作实验
我们不仅可以使用linux的文件操作函数,还可以直接使用标准的C库函数文件。C库函数的文件操作实际上是独立于具体的操作系统平台的,不管是在 DOS、Windows、Linux 还是在 VxWorks 中都是这些函数。这极大地方便了用户层的调试。1.1.1 创建和打开FILE *fopen(const char *path, const char *mode);fopen()实现打
2014-10-12 13:00:40 1342
原创 x4412开发板&ibox卡片电脑项目实战19-linux文件操作实验
linux的文件操作包括创建,打开,读写,定位,关闭等。在WINCE或是WINDOWS系统下,我们通常称这些接口为API函数。下面我们将分别介绍这些系统函数的使用方法。1.1.1 创建int creat(const char *filename, mode _ t mode);参数mode指定新建文件的存取权限,它同umask一起决定文件的最终权限(mode&umask),其中u
2014-10-12 12:57:50 1673
原创 x4412开发板&ibox卡片电脑项目实战17-模块传参实验
在很多情况下,在加载驱动时我们需要接收外部的指令。我们可以通过加载模块传递参数的方式实现。在驱动中,通过“module_param(参数名,参数类型,参数读/写权限)”为模块定义一个参数,在加载模块时,向其传递参数。如果不传递,则参数为驱动中定义的默认值。参数类型可以是 byte、short、ushort、int、uint、long、ulong、charp(字符指针)、bool 或 invbo
2014-10-12 12:53:27 1384
原创 x4412开发板&ibox卡片电脑项目实战18-驱动中导出符号
在驱动调试时,经常需要驱动互调,即在A驱动中调用B驱动中的相关函数。这时,驱动中的导出符号功能就可以大显身手了。/proc/kallsyms文件对应着内核符号表,它记录了符号以及符号所在的内存地址。模块可以使用如下宏导出符号到内核符号表:EXPORT _ SYMBOL(符号名);EXPORT _ SYMBOL _ GPL(符号名); 其他模块需要使用导出的符号时,只需声明
2014-10-12 12:53:14 1119
原创 x4412开发板&ibox卡片电脑项目实战16-将hello x4412驱动编译成模块
在内核根目录执行make menuconfig,进入Device Drivers-> Character devices菜单界面,找到hello X4412 driver配置选项,按空格键将它配置成模块[M],保存退出。执行如下指令,保存配置好的内核配置文件:cp .config arch/arm/configs/x4412_android_defconfig 再在整个源码
2014-10-12 12:44:44 1355
原创 x4412开发板&ibox卡片电脑项目实战15-移植第一个hello x4412内核驱动
前面我们学习了Linux驱动的调试方法,加载方法以及编写步骤,本章节我们将从零开始,编写第一个字符设备驱动。在kernel/drivers/char/x4412目录下新建Makefile,Kconfig以及hello-x4412.c三个文件,Makefile文件内容如下:obj-$(CONFIG_HELLO_X4412_DRIVER) += hello-x4412.oKconfig文件
2014-10-12 12:42:00 1133
原创 x4412开发板&ibox卡片电脑项目实战14-linux驱动的编写步骤
从零开始编写linux驱动时,无论采用linux的何种架构,基本上都可以归纳为以下驱动八要素。1.1.1 建立Linux驱动框架Linux内核在使用驱动时首先要装载驱动,在装载过程中进行一些初始化动作,如建立设备文件、分配内存等。在驱动程序中需提供相应函数来处理驱动初始化工作,该函数须使用module_init宏指定。Linux系统在退出时需卸载Linux驱动,在卸载过程中进行一些退
2014-10-12 12:20:55 1434
原创 x4412开发板&ibox卡片电脑项目实战12-linux驱动的加载方法
在类unix操作系统中,驱动加载方式一般分为:静态加载和动态加载。静态加载就是把驱动程序直接编译到内核里,系统启动后直接被调用。静态加载的缺点是调试起来比较麻烦,每次修改一个地方都要重新编译下载内核,效率较低。动态加载利用了LINUX的module特性,可以在系统启动后用insmod命令把驱动程序(.ko文件)添加上去,在不需要的时候用rmmod命令来卸载。下面我们通过蜂鸣器驱动实例分别对其进行详
2014-09-27 23:40:08 4855
原创 x4412开发板&ibox卡片电脑项目实战11-linux驱动的调试方法
驱动程序开发的重点就在于驱动、系统的调试了,因此,掌握linux驱动的调试方法,是linux系统工程师必须掌握的技能。这里介绍驱动开发中常用的几种调试手段:l 利用printkl 查看OOP消息l 利用stracel 利用内核内置的hacking选项l 利用ioctl方法l 利用/proc 文件系统l 使用kgdb1.1.1 利
2014-09-27 23:35:48 3134
原创 x4412开发板&ibox卡片电脑项目实战10-使用buildroot搭建linux文件系统
上一章节我们讲述了最简单的文件系统的搭建方式,在实际应用场景中,我们需要添加很多第三方文件,比如busybox,tslib,qt,vim,交叉编译工具等,如果我们手动移植里面的任何一个源码包,都会花费我们少则半个小时,多则半天,甚至一天,大大的浪费了我们宝贵的时间。buildroot可以很方便的解决这些问题。我们只需要通过menuconfig配置我们需要的功能,不需要的功能去掉,再执行make指令
2014-09-27 23:30:49 3217
原创 x4412开发板&ibox卡片电脑项目实战9-搭建最简单的linux文件系统
Linux文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有Linux用户和程序看到的文件、目录、软连接及文件保护信息等都存储在其中。有了文件系统,用户就可以很方便的和Linux设备进行数据交互了。随着实际需求的不断提高,Linux文件系统也变得越来越庞大。无论它如何千变万化,归根结底,都是基于最基本的linux文件系统不断丰富而来。因此,我们完全有必要了解最基本的文件系统的搭建过
2014-09-27 23:20:12 2289
原创 x4412开发板&ibox卡片电脑项目实战8-Linux下的C语言编程风格
谈起linux的编程,我们首先就会想到GNU。GNU计划,又称革奴计划,是由Richard Stallman在1983年9月27日公开发起的。它的目标是创建一套完全自由的操作系统。它在编写linux的时候自己制作了一个标准成为 GNUC标准。ANSI,全称为美国国家标准协会,它对C做的标准后来被国际标准协会接收成为标准C ,所以 ANSI C即标准C。GNU C对标准C进行了一系列扩展,以
2014-09-27 22:45:14 2188
原创 x4412开发板&ibox卡片电脑项目实战5-修改内核LOGO
由于我们linux,android都共用一套uboot和内核,因此默认linux系统启动时,显示的仍然是一个android机器人图标。我们可以从这个机器人图标入手,修改成我们自己想要的LOGO。具体步骤如下:第一步:在kernel/drivers/video/logo/Kconfig 中添加配置文件: config LOGO_X4412_CLUT224 bool "224-color X
2014-09-23 16:15:24 1380
原创 x4412开发板&ibox卡片电脑项目实战4-在uboot中添加开机LOGO
在uboot中添加开机LOGO,基本上可以归纳为以下四个步骤:一:初始化LCD控制器相应的寄存器;二:初始化LCD控制器对应的时钟源;三:填充framebuffer;四:打开背光。在uboot\board\samsung\x4412\x4412.c中,我们在函数board_late_init中添加显示开机LOGO的函数x4412_framebuffer_init(),该函数内嵌
2014-09-23 16:07:59 1780
原创 x4412开发板&ibox卡片电脑项目实战3-文件系统编译脚本解析
mk脚本中包含了android文件系统和linux文件系统的编译,这里我们只讲解linux文件系统的编译脚本。
2014-09-23 16:00:17 1551
原创 x4412开发板&ibox卡片电脑项目实战2-内核编译脚本解析
内核的编译脚本如下: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
2014-09-23 15:58:53 1572
原创 x4412开发板&ibox卡片电脑项目实战1-uboot编译脚本解析
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
2014-09-23 15:56:54 2107
原创 android4.0平台通过IOCTL控制LED-基于x210v3开发板
1.1 使用IOCTL测试LED前面的实验中,我们通过sys文件系统,在sys/devices/platform/x210-led目录下建立了四个对应led的文件,通过改变这四个文件的状态控制LED灯。本章节我们重新编写驱动,另外再编写测试应用程序,通过IOCTL控制LED。1.1.1 LED驱动在kernel/drivers/char目录下建议led2目录,在led2目
2013-09-10 13:44:11 4802
原创 android4.0平台通过echo命令控制LED-基于x210v3开发板
第一步:编写LED驱动在kernel/drivers/char目录新建led目录,在led目录下建立如下四个文件:x210-led.cKconfigMakefile各自内容见开发板源码包。第二步:修改kernel/drivers/char/Kconfig文件,添加如下代码: source "drivers/char/led/Kconfig" 第三步:修改ke
2013-09-09 15:44:37 2835
原创 基于x210v3/s5pv210开发板的裸机教程发布,含26个精美实例
1.1 x210v3裸机开发1-LED流水灯实验1.1 x210v3裸机开发2-蜂鸣器实验1.1 x210v3裸机开发3-按键控制LED灯实验1.1 x210v3裸机开发4-按键控制蜂鸣器实验1.1 x210v3裸机开发5-串口输入输出实验1.1 x210v3裸机开发6-LED测试程序1.1 x210v3裸机开发7
2013-09-03 10:25:57 4999
原创 android4.0.4平台关闭自动休眠功能-基于x210ii开发板
frameworks\base\packages\SettingsProvider\res\values\defaults.xml这里记录了很多默认的设置值找到60000将60000改为-1即可。编译时删除x210_ics_rtm_v11/out/target/product/smdkv210/obj/APPS/Settings_intermediates目录,再./mk -s
2012-10-30 14:30:50 1616
原创 x210ii开发板支持几乎全视频格式视频解码[独家支持]
x210ii全视频播放测试方法准备工作:先从网上下载最新的映像文件,再使用fastboot更新system.img,重启开发板。下载地址: http://xboot.org/thread-6920-1-1.html测试步骤:第一步:将视频源文件如*.rmvb,*.rm等拷贝到SD卡,然后将SD卡插入开发板的右侧卡槽。可以通过串口终端查看视频源文件:
2012-08-29 12:01:25 2270
原创 x210ii开发板使用fastboot下载出现没有权限的问题
使用fastboot烧写映像时,出现如下错误信息:jjj@ubuntu-server:~/s5pv210/android_gingerbread_v10/android/out/release$ fastboot flash system system.img 或是jjj@ubuntu-server:/etc/udev/rules.d$ fastboot devicesno
2012-08-28 12:04:10 2389
原创 s5pv210平台WCDMA模块[华为E1750]调试成功-基于x210ii开发板
集成E1750源码包的映像,启动界面如下:可以看到,在左上脚,有CHN-UNICOM的标识,即联通WCDMA卡已经识别。进入WIFI设置界面,最下面有个移动网络,点击进去:启用数据访问功能,网络运营商选择自动,连接成功后,在任务栏会有一个G的标识。这时,就可以开启浏览器上网了:实物图如下:
2012-08-28 10:49:34 1947
原创 x210ii DM9000驱动调试成功-基于x210ii/s5pv210开发板
//----------------------------------------------------------------------------------------------------------------------------// 作者:armeasy// 版权:www.9tripod.com// 平台:九鼎创展x210ii/s5pv2
2012-04-20 17:05:52 4147 4
转载 百度、Google.yahoo排名机制和优化规则
由于搜索引擎数量太多,我在这里只能分析百度,GOOGLE,YAHOO之间区别。百度是中文用户市场份额最大的一个,不过由于竞价排名的原因,大多数SEO都不注重百度的SEO。GOOGLE是SEO们奋斗的焦点,而YAHOO,最近一段时间则默默无闻,由于YAHOO和GOOGLE的相似程度比较高,所以,GOOGLE SEOER们喜欢YAHOO,也比喜欢百度多一些。 这一课的题目写的是分析,可这
2012-02-11 23:04:48 5046
转载 Google左侧排名优化
首先,是全球使用量最大、技术最先进、排名公正性最好、影响力最大的优秀搜索引擎。2003年11月18日,著名网站访问统计调查机构OneStat的最新数据表明,Google的搜索市场占有率从55.2%上升到56.1%,同时Yahoo!以21.5%位居第二。Google左侧排名为自然排名,即根据你的网站重要性等参数来排列的,花多少钱也买不来。你的排名高,意味着你在行业的影响力远远超过同行。
2012-02-11 23:03:55 1171
转载 Android LOG机制流程图
以下只是Android LOG机制流程图,关于Android LOG机制的更多详细内容请参阅《Android LOG机制详解》
2012-02-09 11:35:25 1200
转载 在Android的c/c++代码中使用LOG
在Android中,Java代码通过android.util.Log输出Log信息,同样的本地c/c++代码也提供了相对应而且是更多的接口。Android直接在头文件(system/core/include/cutils/log.h)里定义了一些日志输出的宏,这些宏比android.util.Log提供了更多的日志输出接口。因此,使用这些宏,就可以进行和java代码中一样的日志输出。宏LOGD()
2012-02-09 11:34:09 5149
转载 Android.mk的用法和基础
一个Android.mk file用来向编译系统描述你的源代码。具体来说:该文件是GNU Makefile的一小部分,会被编译系统解析一次或多次。你可以在每一个Android.mk file中定义一个或多个模块,你也可以在几个模块中使用同一个源代码文件。编译系统为你处理许多细节问题。例如,你不需要在你的Android.mk中列出头文件和依赖文件。NDK编译系统将会为你自动处理这些问题。这也意味着,
2012-02-06 08:50:43 870
原创 android编译单独模块时异常提示
lqm@lqm:~/android_gingerbread$ make ledtestapp============================================PLATFORM_VERSION_CODENAME=RELPLATFORM_VERSION=2.3.1TARGET_PRODUCT=genericTARGET_BUILD_VARIANT=engTARGET_
2012-02-01 17:39:20 1306
转载 misc_register和register_chrdev的区别
注册杂项字符设备,该类设备使用同一个主设备号10杂项字符设备使用的数据结构struct miscdevice { int minor; const char *name; struct file_operations *fops; struct list_head list; struct device *dev; struct
2012-01-13 09:57:56 2463
转载 register_chrdev,class_create()
int register_chrdev(unsigned int major, const char *name, struct file_operations *fops); 其中,major是为设备驱动程序向系统申请的主设备号,如果为0则系统为此驱动程序动态地分配一个主设备号。name是设备名。fops就是前面所说的对各个调用的入口点的说明。此函数返回
2012-01-13 09:34:52 2796
原创 android平台按键驱动[基于x210开发板]
按键驱动源码在kernel/arch/arm/mach-s5pv210/button-smdkv210.c中,源码很简单,在s3c_button_probe函数中设置相关按键的寄存器,再开启定时器定时扫描。在定时器中断函数s3cbutton_timer_handler中判断相应IO口的电平,达到监控按键的作用。值得注意的是,当我们需要修改按键的功能时,需要和android层的按键匹配起
2011-12-28 14:39:20 2063
原创 降龙十八掌搞定rt3070 USB WIFI模块在android2.3平台上上网[基于x210开发板]
第一掌:编译KO文件,生成rt3070sta.ko编译时提示如下错误:错误:./include/generated/autoconf.h:708: fatal error: /home/lqm/share/V210/samsung/kernel/include/config/modversions.h: No such file or directory这是因为内核中没有开启模块版
2011-12-23 10:11:21 7481 2
原创 android平台矩阵键盘驱动[基于x210开发板]
矩阵键盘驱动源文件:kernel/drivers/input/touchscreen/keyboard/s3c-keypad.ckernel/drivers/input/touchscreen/keyboard/s3c-keypad.hkernel/arch/arm/mach-s5pv210/mach-smdkc110.ckernel/arch/arm/plat-s5p/devs.
2011-12-19 10:39:09 4658
原创 android平台init.rc脚本修改-[基于x210开发板]
很多时候,我们需要修改init.rc来满足不同的应用需求。这里提供两种修改方法:一:普通修改方法 在device/samsung/smdkv210目录下,有init.rc和init_sdmmc.rc两个文件。如果映像存放在SD卡中,需修改init_sdmmc.rc,如果映像存放在nand中,则需修改init.rc文件。修改完后,执行./mk -s,修改后的文件会打包到out/
2011-12-19 09:46:01 9348
原创 android平台busybox的终极解决方案---基于x210开发板
之前写过一篇博客,名为给android添加busybox,给出了四种移植方法,但是仍然不是很完美,需要后期处理,不能一次性解决所有问题,下面给出上文的补丁,即android平台busybox的终极解决方案,具体步骤如下:第一步:交叉编译busybox这里选择busybox-1.19.0,当然可以用更高的版本。修改makefile文件,修改的内容如下:ARCH ?= armC
2011-12-15 14:47:33 1936
九鼎创展x4418开发板裸机教程
2015-06-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人