好久没有发帖子了!今天来分享一下针对beaglebone 扩展板,进行Linux驱动的调试吧!
第二次修正beaglebone板子的外围电路还是比较顺利的!
具体编译内核的过程就不在介绍了!论坛里有很多人写了这方面的教程,Ti官方的文档也提供了较为全面的编译过程,只不过是全英文的!
sitara-linuxsdk-sdg-05.07.00.00(Software Developers Guide).pdf
(10.66 MB, 下载次数: 238)
我主要针对LCD,触摸屏,Codec 音频等基本的设备的驱动进行了添加,是我的扩展板能够正常工作!
首先是LCD屏:
相信玩过beaglebone的朋友都知道,AM335x这款芯片对于LCD控制部分是有过勘误的:
Sitara AM335x ARM Cortex-A8 Microprocessors Silicon Errata (Revs 2.1, 2.0, 1.0) .pdf
(171.75 KB, 下载次数: 56)
就是16位和24位的更换需要交换B和R,单独使用是没有问题的,但是16位NANDFLASH的扩展会和LCD24位显示有冲突,本人把16位NANDFLASH的接口做出来了,焊接的时候就可以根据实际情况选择是16位还是8位,因此我设计了一组可以选择16位和24位的插针:
实际焊接的时候,我选择的方案是8位的NANDFLASH,因此跳线选择了24位LCD显示!
对应着要修改Linux内核的板级文件board-am335xevm.c
在Beaglebone的配置函数中加入LCD的初始化:
/* Beaglebone Rev A3 and after */
static struct evm_dev_cfg beaglebone_dev_cfg[] = {
{tps65217_init, DEV_ON_BASEBOARD, PROFILE_NONE},
{i2c2_init, DEV_ON_BASEBOARD, PROFILE_NONE},
{mii1_init, DEV_ON_BASEBOARD, PROFILE_NONE},
{usb0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
{usb1_init, DEV_ON_BASEBOARD, PROFILE_NONE},
{bbtoys7lcd_init, DEV_ON_BASEBOARD, PROFILE_NONE},//24bit LCD 2013年7月30日
{bone_tsc_init, DEV_ON_BASEBOARD, PROFILE_ALL},//触摸 2013年8月1日
//{boneleds_init, DEV_ON_BASEBOARD, PROFILE_ALL},//2013年7月30日
{mcasp0_init, DEV_ON_BASEBOARD, PROFILE_NONE},//Codec 音频
//{evm_nand_init, DEV_ON_BASEBOARD, PROFILE_NONE},
{NULL, 0, 0},
};
具体的LCD初始化程序,可仿照文件里原来LCD的定义来编写,只不过定义成自己的名字,值得注意的是还要在
内核中da8xx-fb.c文件,添加关于显示屏的偏移等因素设置。
修改完毕后,就是配置内核,编译内核,然后将内核放入内存卡中,启动查看效果!
编译内核过程简介:
生成 .config 文件:
make ARCH=armCROSS_COMPILE=arm-arago-linux-gnueabi- am335x_evm_defconfig
配置内核:
make ARCH=armCROSS_COMPILE=arm-arago-linux-gnueabi- menuconfig
开始编译内核,生成uImage:
make ARCH=armCROSS_COMPILE=arm-arago-linux-gnueabi- uImage
(时间稍长)
编译好uImage之后,到了生成模块ko:
make ARCH=armCROSS_COMPILE=arm-arago-linux-gnueabi- modules
或者缺省编译
make linux
生成的ko分散在不同的地方,可以用如下命令复制到文件系统相应的地方:
例如:make ARCH=arm CROSS_COMPILE=arm-arago-linux-gnueabi-INSTALL_MOD_PATH=
modules_install
要解压TI为我们制作好的文件系统到tf卡的rootfs分区:(此处要先格式化tf卡!因此先暂时在主文件夹下操作一次!)
找到文件系统目录:
执行:
sudo tar -xzvf arago-base-tisdk-image-am335x-evm.tar.gz-C /home/anananjjj/rootfs/
make ARCH=armCROSS_COMPILE=arm-arago-linux-gnueabi- INSTALL_MOD_PATH=/home/anananjjj/rootfsmodules_install
也可以将模块安装在NFS目录下:
Make ARCH=arm CROSS_COMPILE=arm-arago-linux-gnueabi-INSTALL_MOD_PATH=/home/anananjjj/ti-sdk-am335x-evm-05.07.00.00/targetNFSmodules_install(这样可以为以后NFS调试开发板做准备!)
至此,需要的kerne已经编译完成,
我在启动阶段设置了加载Matrix v2 GUI界面!因此,系统启动之后会进入Matrix v2界面!
触摸屏:
之后就是触摸屏的移植,这款芯片支持4线,5线,8线触摸方式,我使用的是普通的4线电阻屏,选择好对应的四路AD引脚,设置好触摸参数就可以使用触摸屏了:
/* TSc controller */
#include
/* TSc controller */
static struct tsc_data am335x_touchscreen_data = {
.wires = 4,
.x_plate_resistance = 200,
.mode = TI_TSCADC_TSCMODE,
};
static struct tsc_data bone_touchscreen_data = {
.mode = TI_TSCADC_GENMODE,
};
具体效果可以看下面的视频演示。
3、音频Codec
这个添加的比较彻底,因Ti其他Demo板都是使用的McASP1,而扩展的是McASP0,因此需要重新添加!好在有McASP1作为例子,添加起来倒是不难!
static struct snd_platform_data am335x_evm_snd_data0 = {
.tx_dma_offset = 0x46000000, /* McASP0*/
.rx_dma_offset = 0x46000000,
.op_mode = DAVINCI_MCASP_IIS_MODE,
.num_serializer = ARRAY_SIZE(am335x_iis_serializer_direction0),
.tdm_slots = 2,
.serial_dir = am335x_iis_serializer_direction0,
.asp_chan_q = EVENTQ_2,
.version = MCASP_VERSION_3,
.txnumevt = 1,
.rxnumevt = 1,
};
static u8 am335x_iis_serializer_direction0[] = {
INACTIVE_MODE, INACTIVE_MODE, RX_MODE, TX_MODE,
INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE,
INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE,
INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE,
};
还要使能McASP0口的引脚!
/* Module pin mux for mcasp0 */
static struct pinmux_config mcasp0_pin_mux[] = {
{"mcasp0_aclkx.mcasp0_aclkx", OMAP_MUX_MODE0 |AM33XX_PIN_INPUT_PULLDOWN},
{"mcasp0_fsx.mcasp0_fsx", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN},
{"mcasp0_ahclkr.mcasp0_axr2", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLDOWN},
{"mcasp0_ahclkx.mcasp0_axr3", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLDOWN},
{NULL, 0},
};
接着就是在配置函数中加入初始化函数!
重新编译内核之后,更新内核,上电就可以查看效果了!
这三个功能的具体效果,可以观看以下视频(录制的不好,声音和图像不一致了):
下一帖子分享一下移植Ubuntu13.04的过程!先来张图:
安装的桌面程序是gdmxubuntu-desktop!
[ 本帖最后由 anananjjj 于 2013-9-9 19:21 编辑 ]