讯为4412开发板 使用三星2410芯片,基于arm9架构,由于自己电脑硬件的局限,只能跑Android4.0.3系统。
1、Uboot这个直接使用官方镜像烧写就可以了,一般情况不用去重复烧写。
略。
烧写命令:fastboot.exe flash bootloader u-boot-iTOP-4412.bin
2、linux Kernel
1)设备驱动
--字符设备驱动
--杂项设备驱动
--I2C设备驱动(两种模式
a,linux内部i2c体系
包括两部分:i2c设备驱动与i2c总线驱动,总线驱动在kernel里已经存在了,设备驱动请自己写。
在这里不得不吐槽一下4412开发板,虽然有7个i2c接口,但是只有两个外接!i2c6与i2c7,i2c7外挂的是触摸驱动,应该不能继续外挂其他设备了,因为i2c总线同一时间只能响应一个设备,所以能用的只有i2c6,可惜我使劲了好久,依旧不能request到总线,一直总线忙,return-110 。
b,使用gpio模拟i2c时序
模拟i2c需要注意芯片的i2c时序,否则会得不到ack!!这种方法可以使用杂项设备进行注册,驱动和杂项设备驱动类似。
2)注册到kernel中(平台文件:arch/arm/mach-exynos/mach-itop4412.c
--字符类设备
首先声明设备信息,注意里面的.name变量,这个name变量需要和驱动里的.name相同,这样才能顺利进入probe函数中。
struct platform_device s3c_device_XXX ={
.name = "match-name",
.id = -1,
};
然后在platform_device *smdk4x12_devices[] __initdata函数中注册,这样一个字符类设备就注册成功了。
&s3c_device_XXX,
补上设备驱动里需要的匹配信息
struct platform_driver XXX_driver = {
.probe = XXX_probe,
.remove = XXX_remove,
.shutdown = XXX_shutdown,
.suspend = XXX_suspend,
.resume = XXX_resume,
.driver = {
.name = match-name, //这个.name就是需要匹配的项
.owner = THIS_MODULE,
}
};
--i2c驱动
首先需要确定没有其他驱动占用该i2c总线,以i2c7为例:
static struct i2c_board_info i2c_devs7[] __initdata = {
#ifdef CONFIG_TOUCHSCREEN_TSC2007
{
I2C_BOARD_INFO("tsc2007", 0x48), //匹配项,从设备地址(读写addr>>1)
.type = "tsc2007",
.platform_data = &tsc2007_info,
.irq = IRQ_EINT(0),
},
#endif
};
平台文件已经在init函数里注册好了,所以就只要添加自己的设备名就ok了。
3)编译
a,编译进kernel
打开驱动所在目录下的Makefile和Kconfig文件,以leds点灯为例
--Makfile
在最后添加obj-$(CONFIG_LEDS_CTL) += itop4412_leds.o,生成itop4412_leds.o文件。
--Kconfig
在最后添加如下信息:
config LEDS_CTL
bool "Enable LEDS config"
default y
help
Enable LEDS config
b,以模块编译
Makefile文件如上。
Kconfig文件更改如下:
config LEDS_CTL
tristate "Enable LEDS config"
default y
help
Enable LEDS config
配置信息编写完毕,在Ubuntu里使用make menuconfig命令进入内核配置
选中Enable LEDS config选项,则CONFIG_LEDS_CTL=1,否则为0.
同时平台文件中的配置如下:
--编译进内核
#ifdef CONFIG_LEDS_CTL
struct platform_device s3c_device_leds_ctl = {
.name = "leds",
.id = -1,
};
#endif
--以模块编译
#if defined(CONFIG_LEDS_CTL) || defined(CONFIG_LEDS_CTL_MODULE)
struct platform_device s3c_device_leds_ctl = {
.name = "leds",
.id = -1,
};
#endif
注意这两个还是有一点区别的。
3)更改linux启动图片
使用image2Lcd软件把一个bmp图片转换成一个数组
更改drivers/video/samsung/ iTop-4412.h文件中的第二个数组内容,ok!
如果只要显示文字,那么图片的背景请设置为黑色:#ffffff
最后执行make命令就ok了。
会生成一个zImage文件:arch/arm/boot/zImage
烧写命令:fastboot.exe flash kernel zImage
3、Android系统编译
1)访问设备节点的权限
打开device/samsung/smdk4x12/conf/init.smdk4x12.rc
在最后增加chmod 0777 xxx,保存退出。
注意!!这个文件最后会打包到ramdisk_uboot.img中,所以在烧写system的时候需要同时烧写,否则更改失败。
2)APP开机自启
打开device/samsung/smdk4x12/device.mk,以leds为例
#Install LedTest
PRODUCT_COPY_FILES +=
device/samsung/smdk4x12/apk/topeet/ledtest/ledtest.apk:system/app/ledtest.apk
PRODUCT_COPY_FILES +=
device/samsung/smdk4x12/apk/topeet/ledtest/libled.so:system/lib/libled.so
注释:注意路径问题,并且把文件下载到相应的目录下,即.apk与.so文件都位于device/samsung/smdk4x12/apk/topeet/ledtest目录下。
3)更改android启动时显示的logo
这里我就有点取巧啦,直接更改图片资源:frameworks/base/core/res/assets/images
该目录下有两个文件,android-logo-mask.png这个就是android的启动时显示的图片。
使用./build_android.sh命令编译Android
最后会生成system镜像:位于out/target/product/smdk4x12目录下的system.img与ramdisk_uboot.img文件。
烧写命令:fastboot.exe flash system system.img / fastboot.exe flash ramdisk ramdisk-uboot.img
最后重启:fastboot reboot
---------------------------------------------<完>-------------------------------------------------
上一篇:嵌入式4412开发板QT5.7编译安装到arm
下一篇:基于iTop4412的FM收音机系统设计(一)
推荐阅读最新更新时间:2024-11-16 20:04
推荐帖子
- MSP430制作最小系统问题
- 制作做小系统的时候,提供的3.3V电源是怎么由5V电压产生的?有明白的详细解释一下MSP430制作最小系统问题我的实验板上用ASM11173.3V稳压芯片提供的电压,输入是5V左右。我的实验板上用ASM11173.3V稳压芯片提供的电压,输入是5V左右。我对这些也不了解,我的实验板上用ASM11173.3V稳压芯片提供的电压,输入是5V左右。
- yuzejun2321 微控制器 MCU
- 电子设计测量组推荐书目
- 本帖最后由paulhyde于2014-9-1509:17编辑人民邮电出版社)沈建华北航出版社夏宇闻北航出版社电子设计测量组推荐书目本帖最后由paulhyde于2014-9-1509:18编辑共同分享嘛!大家还有什么书可以推荐的欢迎提出来!
- cdy200824 电子竞赛
- ispLever6.0引脚分配问题:部分输入输出脚无法在top view中定义,红色显示
- 引脚分配时出现部分引脚没有在spreadsheetview的PINattribute中出现,在左侧双击之,则会在其中出现,但是topview中则在左侧红色显示,未能完成相应的变化,一直无法更改。不知有谁碰到过类似问题没有,我使用的环境是ispLever6.0.ispLever6.0引脚分配问题:部分输入输出脚无法在topview中定义,红色显示
- eeleader FPGA/CPLD
- 基于fpga的FIR滤波器设计(附上源码代码下载)
- 1.1顶层接口完整源码及完整文章下载技术交流群:97925396新建目录:D:\mdy_book\fir_prj。在该目录中,新建一个名为fir_prj.v的文件,并用GVIM打开,开始编写代码。我们要实现的功能,概括起来就是FPGA产生控制AD9709,让其中的通道A未滤波的正弦信号,让通道B输出滤波后的正弦信号。为了控制AD9709的工作模式,就要控制AD9709的MODE、SLEEP管脚;为了控制通道A,就
- njiggih FPGA/CPLD
- S3C6410 CE6 RAM从128M升级到256M,修改config.bib和image_cfg.h,导致无法启动系统了。
- config.bib如下 IFIMGMULTIXIP! #defineNKNAMENK #defineRAMNAMERAM #defineNKSTART80100000 IFSMDK6410_X5D #defineNKLEN02100000;33MB #defineRAMSTART82200000 #defineRAMLEN01300000;19MB(
- lustring 嵌入式系统
- 请问在usb设备的驱动中的控制码(ControlCode)的具体值是多少?
- 我想实现usb设备与电脑的通信,usb的驱动是用了别人的,通过给驱动程序发送消息来实现设备与pc机的通信,但是在驱动中的一个函数的参数是控制码,因为不知道这个控制码的值所以不知道该传一个什么样的值给那个函数。请教下有过这方面驱动开发的高人帮下忙,谢咯。请问在usb设备的驱动中的控制码(ControlCode)的具体值是多少?欢迎来我这里,我usb通信很熟悉陕西杨工c8051f单片机博客手机13002928013http://c8051fmcu.blog.sohu.com。。。。。。
- xhwang2003 嵌入式系统
设计资源 培训 开发板 精华推荐
- 2024年Automechanika Shanghai海量同期活动刷新历届记录,汇聚行业智慧,共谋未来发展
- 企业文化分享 如何培养稀缺的硅IP专业人员?SmartDV开启的个人成长与团队协作之旅
- 恩智浦发布首个超宽带无线电池管理系统解决方案
- 北交大本科生探秘泰克先进半导体开放实验室,亲历前沿高科技魅力
- 新帅上任:杜德森博士(Dr. Torsten Derr)将于2025年1月1日出任肖特集团首席执行官
- 边缘 AI 如何提升日常体验
- 苹果要首发!台积电宣布2nm已准备就绪
- AMD有望用上全新芯片堆叠技术:延迟大幅减少、性能显著提升
- 宁德时代发布10月战报
- 2024年10月电池行业:增长势头不减!