当前位置:耘佑范文网 > 作文范文 >

AM335X开发日记

| 浏览次数:

 AM335X 平台开发日记

 2014-11-24 至 2014-11-29 进行核心板原理图设计 2014-12-1 至 2014-12-10 进行 PCB 设计。

  2014-12-5 开始学习 AM335X 软件部分的知识。

 安装了 vmware 虚拟机,10.0.1 版本的。

 安装了 ubunt12.04 版本。

 安装 vmware-tools,创建共享文件夹。

 在 root(需执行 sudo su)下执行 mount -t vmhgfs .host:/ /mnt/hgfs 在 windows 共享文件夹存放 TI 安装包ti-sdk-am335x-evm-06.00.00.00-Linux-x86-Install.bin。在终端里面执行安装。安装目录为/usr/local/ti-sdk-am335x-evm#,一般会自动加入环境变量,如果没有,在/etc/environment 增加环境变量:

 (注意:6.0 的安装包不支持 ubunt14.04 版本,只支持 12.04 以下的版本)

 PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/ti-sdk-am335x-evm/linux-devkit/sysroots/i686-arago-linux/usr/bin:" 输入命令 arm-linux-gnueabihf-gcc –v

 即可查询版本

 执行 setup.sh 配置 linux 环境,例如安装包更新,NFS,TFTP,minicom 等。

 下载了 Uniflash V3,准备选择 USB 或者 ETH 接口进行 FLASH 编程。

 执行命令 make CROSS_COMPILE=arm-linux-gnueabihf- O=am335x ARCH=arm am335x_evm 编译 u-boot,生成 MLO(spl)和 u-boot.img

  Nandflash 程序分区:

 1.

 0-0x1ffff 为 SPL 2.

 0x20000-0x3ffff 为 SPL backup1 3.

 0x40000-0x5ffff 为 SPL backup2 4.

 0x60000-0x7ffff 为 SPL backup3 5.

 0x80000-0x25ffff 为 uboot 6.

 0x260000 -0x27ffff 为 env 7.

 0x280000-0x77ffff 为 linux kernel 8.

 0x780000-

 为 file system

  9.

 下载 uboot 软件并进行修改适应新设计的核心板,并把 uboot 下载到板子里调试运行。

  2014-12-8 下载安装TI的AM335X开发板的6.0软件包,安装下载了用于USB下载烧录FLASH

 的工具 UniFlash,学习 UniFlash 的使用方法。

 2014-12-9 今日编写部门年度计划和总结,未进行软件调试。

 2014-12-10 编译 uboot,尝试用 USB 下载,下载安装了驱动程序 linux_am335x.inf,板子能识别 USB 接口并虚拟成网口, 但是程序下载过程中没反应。

 学习 uboot 的软件结构,编译选项和编译过程,分析 uboot 中 SPL 的运行过程,不同加载方式的区别等。

 SPL 加载 执行 过程:

 1. 首先 Start.s 里面调用 cpu_init_crit,再运行 lowlevel_init,里面执行 s_init() 2. 然后运行_main,在 arch/arm/lib 里面的 crt0.s 中 3. 运行 board_init_f,在 arch/arm/lib 里面的 spl.c 中,再运行 board_init_r()。

 4. 执行 spl_board_init 到 am33xx_spl_board_init,进行主频设置(会根据不同板子进行)。

 5. 根据启动参数 boot_params.omap_bootdevice 来选择进行 uboot.img 的加载。

 6. 跳转到 uboot 程序运行,这里也可以 选择通过 SPL 直接加载 linux 。

  尝试用 UART 口加载程序,采用 xmodem 可以下载,但是下载后没有反应。

 晚上采用 PSP 的软件包编译,放到 SD 卡里面可以加载运行。

 但是仍然不理解为什么 UART 下载的程序不运行,是否内部 ROM 程序把软件加载位置和编译选项之间的关系不匹配?但查不到出问题的地方。

 2014-12-11 把关于 EEPROM 的部分删除,编译 UBOOT,可以在周立功的板子上运行,并可以加载 ubot,进而引导内核。可能是 SD 卡文件系统有问题,就是加载文件系统失败。

 另外发现在运行 CPSW 时提示“wait_for_user_access Timeout”,这是对 PHY 操作的 MDIO 长时间处于忙状态导致,判断 GO 状态位,在寄存器 MDIOUSERACCESS0中有说明。

 下一步准备在 uboot 中调通以太网和 NANDFLASH。

 2014-12-12 Nand 调试说明:

 1. 首先修改 Mem.c 中的 gpmc_init()函数,相应修改 Mem.h 中的配置。查看gpmc_config = gpmc_m_nand;找到 gpmc_m_nand 的配置,也在 Mem.h 中。

 2. 外 设 引 脚 的 配 置 在 SPL 中 执 行 , 在 s_init() 函 数 中 ,enable_board_pin_mux(&header);header 是从 EEPROM 中读出,如果没有EEPROM,需要自己重新定义。

 3. 重新编译 uboot 后,下载运行能识别 NAND 并可正常进行读写。

 4. 用 UART 或者 SD 卡启动后,可以在 uboot 里面进行 nand 的操作,具体说明参考 sitara-linuxsdk-sdg-06.00.00.00.pdf。

 2014-12-13 以太网调试:

 根据板子 PHY 的配置是 RMII,因此需要移植 1. board.c 里面,首先进行 RMII 接口外设的 mux 配置。

 static struct module_pin_mux rmii1_pin_mux[] = {

 {OFFSET(mii1_txen), MODE(1)},

  /* RMII1_TXEN */

 {OFFSET(mii1_txd1), MODE(1)},

  /* RMII1_TXD1 */

 {OFFSET(mii1_txd0), MODE(1)},

  /* RMII1_TXD1 */

 {OFFSET(mii1_rxd1), MODE(1) | RXACTIVE}, /* RMII1_RXD1 */

 {OFFSET(mii1_rxd0), MODE(1) | RXACTIVE}, /* RMII1_RXD1 */

 {OFFSET(mdio_data), MODE(0) | RXACTIVE | PULLUP_EN},/* MDIO_DATA */

 {OFFSET(mdio_clk), MODE(0) | PULLUP_EN}, /* MDIO_CLK */

 {OFFSET(mii1_crs), MODE(1) | RXACTIVE}, /* RMII1_CRS_DV */

  {OFFSET(rmii1_refclk), MODE(0) | RXACTIVE}, /* RMII1_REFCLK */

  {-1}, }; 对于接收引脚,一定要使能 RXACTIVE,否则会出现异常。

 2. 以太网的初始化,是从执行 board_init_r(),进入 eth_initialize(),执行 phy_init(),这里要选择和实际一样的配置,选择 CONFIG_PHY_MICREL(周立功的板子KSZ8041)和 CONFIG_PHY_SMSC(现在自己做的板子 LAN8720),这里会registerPHY,比较 PHYID 的一致性,提供相关驱动。

 3. 接 着 执 行 board_eth_init() , 需 增 加 接 口 的 配 置 模 式 #define RMII_MODE_ENABLE

 0xc5,用于配置 GMII_SEL 寄存器(使能 RMIIrefclk input)。cpsw_slaves[0].phy_if 赋值为 PHY_INTERFACE_MODE_RMII。接着执行cpsw_register() (在 cpsw.c 中),里面会对 PHY 进行初始化操作 cpsw_phy_init。

  2014-12-15 为方便进行在 windows 下编辑软件,使用 samba 服务进行文件共享。

 在虚拟机下的 network 配置要为 NAT, VMware Virtual Ethernet Adapter for VMnet8 的 IP 配置和客户机里的 IP 一个网段。客户机的网关配置为虚拟机的 IP。

 安装 samba,apt-get install samba 建立共享目录,/home/jiao/share,并设置读写权限,chmod 777 share 建立 samba 用户,smbpasswd –a jiao

 (jiao 为当前用户),并输入密码。

 修改 smb.conf 文件,添加共享目录设置。

 [share]

 comment=share files

 path=/home/jiao/share

 available = yes

  browseable = yes

 public = yes

 writable = yes

 write list =jiao

 valid users=jiao

 guest ok = yes 其他都不用改。

 启动 samba 服务,service smbd start 或者重启 /etc/init.d/smbd restart 在 windows 下地址栏输入\\192.168.138.5(客户机 IP),第一次要输入用户名和密码,可保存密码,以后就可以直接进入。在里面可以看到共享的文件夹了。

 看到网上说,如果遇到访问权限,需要关闭防火墙和 seliunx,命令是 Iptables –F Setenforce 0 2014-12-16 今天是个收获的日子,昨天偶然看到 MII_SEL 寄存器中有 RMII_REFCLK 引脚方向配置,默认是输出,原来没有配置造成 RMII 不能正常工作 在 windwos 下用 source insight 进行编辑软件还是很方便,效率提高不少,编译时写了脚本文件,也提高了效率。

 更改 NAND flash 的写保护和 MII_SEL 寄存器的配置,下载后,调试发现 NANDflash和以太网操作都正常了,可以实现 TFTP 的下载,并对成功对 NAND 进行读写。

 另外在初始化网络时,可以先把 UBOOT 中的 IP 地址设置好,减少后面的输入操作。可以用如下方法:

 Ipaddrset=0x0501a8c0;

 //192.168.1.5

 ip_to_string(Ipaddrset, tmp);

 setenv("ipaddr", tmp); 先采用 UART 下载 u-boot-spl.bin 和 u-boot.img,启动后采用 TFTP 进行下载 MLO和 u-boot.img,并烧录 nand Tftp 0x82000000 MLO Nand erase 0x0 0x80000 Nand write 0x82000000 0x0 0x20000 Nand write 0x82000000 0x20000 0x20000 Nand write 0x82000000 0x40000 0x20000 Nand write 0x82000000 0x60000 0x20000 Tftp 0x82000000 u-boot.img Nand erase 0x80000 0x80000 Nand write 0x82000000 0x80000 0x80000

 如果用 SD 或 USB 下载,命令如下 Mmc rescan Fatls mmc 0 Fatload mmc 0 0x82000000 MLO

 下面开始进行 linux 系统的移植工作,主要应该有以下几个方面:

 1. 编译系统的配置,包括各种外设配置 2. 文件系统的移植 3. 6 个 UART 驱动和 CAN 驱动的移植 4. 网络驱动(两个网口)、USB 驱动、SD 卡驱动 5. LCD 驱动的调试 6. 音频驱动 7. SPI 驱动

 Linux 编译 1. clean :

 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mrproper

 2. 目标板默认配置 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- <config>

  Device SDK config PSP config AM335x/Beaglebone tisdk_am335x-evm_defconfig am335x_evm_defconfig AM37x tisdk_am37x-evm_defconfig omap3_evm_defconfig AM3517 tisdk_am3517-evm_defconfig am3517_evm_defconfig Beagleboard tisdk_beagleboard_defconfig omap3_beagle_defconfig AM180x tisdk_am180x-evm_defconfig da850_omapl138_defconfig

 编译 AM335X 的板子如下:

 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- am335x_evm_defconfig

 自定义配置 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig

 编译内核:

 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- uImage 通过 uboot 下载内核后,能启动内核,下一步进行文件系统的移植。

 2014-12-17 利用周立功提供的文件系统,编译后下载,启动报错。

 UBI error: ubi_init: UBI error: cannot initialize UBI, error -19 下午参加了技术中心年中总结汇总会议,没有进行调试。

 2014-12-18 今天是郁闷的一天,文件系统一直挂载失败,利用自己编译的内核,和周立功的文件系统也不行,又试了周立功的内核和文件系统,利用自己的 ubot,也不能启动。

 后来从 UBI error: ubi_init: UBI error: cannot initialize UBI, error -19 这个报错,一直跟踪查找,找到了 open_mtd_device 返回出错,进一步查到 idr_find 函数返回出错,下面都是 linux 的链

 表数据,看不太懂,无法进行下去了。反复进行,折腾了一天,没有眉目。

 下午快下班时,想到原来 9260 平台的 linux 系统文件系统的分区信息在一个结构体mtd_partition 里可进行修改,找到 mtd_partition 这个结构体的定义 am335x_nand_partitions。发现有 7 个分区信息,但是就是没有看到打印信息,于是怀疑 nand 就没有进行初始化操作。

 从分区初始化查找 evm_nand_init 没有执行,进而查到板子硬件初始化的结构体evm_dev_cfg,发现定义这个结构体的数组都是根据不同板子的信息进行的,由于我没有EEPROM 的信息,把根据这个信息进行的操作都屏蔽了,怪不得这些硬件初始化都没有执行。

 于是更改初始化信息的把,从 EEPROM 读出的 config 信息都进行手动配置,选择ind_auto_mtrl_evm_dev_cfg 这个板子进行硬件初始化。

 主要是修改 board-am335xevm.c 文件。从 am335x_evm_setup 函数开始。

 修改程序后,运行发现文件系统能进行初始化操作了,也看到了分区信息,但是由于 UBI参数和编译文件系统是的参数不一致,没有文件系统没有挂载成功。下一步把 UBI 参数调整好再试试。

 总结 linux 下文件系统参数的传递过程:

 是从启动命令行 kernel command line 传递过来的,console=ttyO0,115200n8 root=ubi0:rootfs rw ubi.mtd=7,2048 rootfstype=ubifs rootwait=1。

 从这个信息看到根文件系统的信息是 ubi0,挂载在 ubi.mtd 的第 7 个分区上。周立功的内核分区信息只有 5 个,所以用我们的 uboot 传递过去的信息不对,导致不成功,原来没有进行nand 初始化并得到分区信息,因此在进行 ubi 初始化时找不到分区信息而报错。因此 uboot的传递过去的根文件系统的挂载信息必须和 linux 系统下的分区信息相对应。一般在会在用mtd_partition 定义的数组里,不同板子配置系统放的位置不太一样。

 2014-12-19 调试发现文件系统的烧录和 ECC 的配置有很大关系,目前标准版 uboot 里面用的是HW_BCH8_ECC。从周立功的启动信息看,NAND:

 HW ECC Hamming Code selected,他们把 uboot 的的 ECC 更改了。

 为了内核和 uboot 保持一致,暂时都选用 HW_BCH8_ECC,但是这样在做 UBI 文件系统时,参数的选择是否就不应该和周立功的一致。

 目前系统默认的是:

 UBI logical erase block size

 0x1F000 UBI minimum I/O size 0x800 Maximum LEB count

 2047 (一般小于或等于 block conut-1)

 UBI phyisical erase block size

 0x20000 UBI sub-page size

 0x800

 (不分页擦除和校验等于 min I/O size)

 制作根文件系统,参考 TI 的 FAE 编写的文档Ubifs文件系统的制作和启动.pdf 从官网上下载 ftp://ftp.infradead.org/pub/mtd-utils 直接 make 编译。中间会报错,需要安装一些支持库,主要有 libacl1-dev、liblzo2-dev、uuid-dev、zlib1g-dev。

 编译完成后,进行 make install。

 执行命令进行生成镜像文件。

 mkfs.ubifs –F -q -r /home/usr/fs -m 2048 -e 126976 -c 2047 -o ubifs.img

 这个地方搞了很久,原来以为下载这个文件就行了,其实对于用uboot烧录nand的方式,必须还要用ubinize进行格式转换。

 ubinize -o ubi.img -m 2048 -p 128KiB ubinize.cfg ubinize.cfg文件内容如下:

 [ubifs]

 mode=ubi image=ubifs.img

 vol_id=0

 vol_size=200MiB

 vol_type=dynamic

 vol_name=rootfs

 vol_flags=autoresize 制作文件系统后,利用SD卡烧录到nand中,上电启动后系统运行和加载文件系统正常了。搞了两天终于把文件系统成功加载了。

 2015-1-2 前一段时间由于工作的不确定性,把AM335X的开发暂时停了一段时间,现在继续捡起来把这个平台完善。时间过得好快,不经意已经跨年了,俗话说好事多磨,相信通过自己不懈的努力,应该能把这个平台的功能完善,做出一个稳定可靠并且容易使用的平台。

 前面已经把文件系统加载成功,下面需要调试系统的网口和串口驱动。没有修改的情况下,网口PING不成功。应该还要修改一些地方。

 修改am33xx_cpsw_init函数,把gmii_sel配置为0x49,MAC1设置为RMII,MAC2设置为GMII。同时在setup_ind_auto_motor_ctrl_evm中执行am33xx_cpsw_init(AM33XX_CPSW_MODE_RMII, NULL, NULL); 编译后在UBOOT中通过TFTP下载内核,首先要执行NAND的启动模式。

 run

 nandargs tftp 0x82000000 uImage bootm 0x82000000 系统启动后,PING主机成功。

 在ind_auto_mtrl_evm_dev_cfg数组中添加对MAC2的初始化配置:

 {rgmii2_init, DEV_ON_BASEBOARD, PROFILE_ALL},连接网口2,能识别出千兆位口,但是当网口1使能时,网口2不能ping通,把网口1关闭后,网口2就能ping通,是不是linux系统里识别到一个主机IP后,会把主机IP绑定到这个网口上。

 后来在百度上查询,有人说两个网口是不能在一个网段,验证设置成两个网段后,两个网口能同时工作了。如果要配置在一个网段,必须采用策略路由方式,这个比较麻烦,就没有进行尝试。

 USB 调试:

 插入U盘后,系统能检测到U盘插入。

 利用命令cat /proc/bus/usb/devices可以查看U盘信息。

 挂载U盘

 mkdir /mnt/usb

 mount –t vfat /dev/sda /mnt/usb 另外通过free –m 可查看内存情况,通过top命令可查看进程任务。Dmesg查看内核的打印信息,包括各种硬件初始化和启动信息。

 SD 卡调试:

 插入SD卡,系统能检测到SD卡。一般挂载到目录/media/mmcblk0p1。可以对SD卡进行读操作,但是写操作失败,提示是只读系统,好像是进行了写保护,分析代码,原系统里面有写保护设置,在下面数组里有定义,修改为GP0-19,修改后读写正常。

 static struct omap2_hsmmc_info am335x_mmc[] __initdata = {

 {

  .mmc

 = 1,

  .caps

  = MMC_CAP_4_BIT_DATA,

  .gpio_cd

 = GPIO_TO_PIN(0, 6),

  //.gpio_wp

 = GPIO_TO_PIN(3, 18),

  .gpio_wp

 = GPIO_TO_PIN(0, 19),

  .ocr_mask

  = MMC_VDD_32_33 | MMC_VDD_33_34, /* 3V3 */

 },

 {

  .mmc

 = 0, /* will be set at runtime */

 },

 {

  .mmc

 = 0, /* will be set at runtime */

 },

 {}

 /* Terminator */ }; 利用命令fdisk –l能看到SD卡的挂载信息。

 利用df命令可以查看各个文件系统的信息,包括各种挂载的文件系统。

 液晶调试:

  首先要在ind_auto_mtrl_evm_dev_cfg里面增加LCD的配置项:

 {lcdc_init,

  DEV_ON_BASEBOARD, PROFILE_ALL},

 //液晶初始化

 {enable_ecap0,

  DEV_ON_BASEBOARD, PROFILE_ALL}, //背光

 {mfd_tscadc_init, DEV_ON_BASEBOARD, PROFILE_ALL},//触摸屏 在lcdc_init和backlight_init的函数里面增加对IND_AUT_MTR_EVM的支持。

 驱动文件是da8xx-fb.c,可以配置像素,液晶选择S9700RTWV35TR,像素是800*480 系统启动时,能看到小企鹅和进度条在液晶上显示出来了。

 下一步对于显示,准备实现QT的操作。

 2015-1-3

 对于LCD显示,一直想做个测试程序,显示个图像,但是昨天一直没有找到,自己不想全部动手编程,网上说,通过cat xx.bmp > /dev/fb0可以实现显示图像,测试了一下不行,因为bmp文件格式里面有一些文件信息,不是完整图像数据信

 息,FrameBuffer设备只能识别图像数据信息,并且还必须满足一定的数据格式,比如bits_per_pixel(每个像素点占用的数据位)的大小,有些是16位(565格式),有些是24位(888格式),还有些32位(带有灰度的888格式,最高字节是透明度),因此直接把文件输入到设备缓存里面应该不行。

 今天在网上查找了一下,看到LonlyCorner博客的文章LCD测试程序,并附有源代码,把他的源代码下载保存,他的程序bits_per_pixel是16位,通过 ioctl(fbd->fd, FBIOGET_VSCREENINFO, &vinfo);获取可变参数信息,看到AM335X系统带的驱动bits_per_pixel为32bit,根据这个修改了程序,首先是显示红、绿、蓝三个色带。每个像素连续4个字节设置颜色。

 *((int *)(fbd->pfb) + y*fbd->xres +x) = color; int型数据的代表了4个字节,原来16位用的是short型。

 下一步显示一个图像。

 修改下载的程序,把16bit模式更改为32bit,主要是把bmp文件格式中的像素点转换为FrameBuffer设备需要的数据,bmp文件格式一般为:

 另外lcd在系统中会自动休眠,需要重新激活:

 Echo “0” > /sys/class/graphics/fb0/blank 编译了测试程序,并转换了几个24位bmp图片,经过调试,显示正常。

 2015-1-10 上周4-9号上班基本在忙一些杂事,平台基本上没有进行,今天周末在家又开始调试一下。

 目前开始准备调试串口和CAN。串口在board-am335xevm.c中添加初始化 {uart1_init, DEV_ON_BASEBOARD, PROFILE_ALL}, {uart2_init, DEV_ON_BASEBOARD, PROFILE_ALL}, {uart3_init, DEV_ON_BASEBOARD, PROFILE_ALL}, {uart4_init, DEV_ON_BASEBOARD, PROFILE_ALL}, {uart5_init, DEV_ON_BASEBOARD, PROFILE_ALL}, 在初始化函数里面对引脚进行设置setup_pin_mux(uart1_pin_mux); 编译下载后调试串口通信收发数据正常。

 CAN总线设置了两路,添加初始化选项 {d_can_init, DEV_ON_BASEBOARD, PROFILE_ALL},

 并对引脚进行配置。系统启动后,利用ifconfig –a可以查看到can0和can1的配置了,但是怎么进行数据收发,需要调试程序支撑,资料里面建议用canutils进行调试,canutils的编译过程也比较麻烦,首先要编译iproute2和libsocketcan,在编译时有好多支持软件没有,需要利用apt-get install随时安装。在编译canutils时一直提示libsocketcan找不到,实在不行,就利用周立功提供的测试程序,对can进行测试,能进行收发数据了。

 Can驱动文件:

 S.No Location Description 1 drivers/net/can/d_can/d_can.c DCAN driver core file 2 drivers/net/can/d_can/d_can_platform.c Platform DCAN bus driver 3 arch/arm/mach-omap2/board-am335xevm.c DCAN board specific data addition 4 arch/arm/mach-omap2/devices.c DCAN soc specific data addition

 对can操作过程,首先socket(int af, int type, int protocol),地址描述为29,类型是SOCK_RAW,协议是CAN_RAW,接着配置接口控制模式,选择can0.

 s = socket(PF_CAN, SOCK_RAW, CAN_RAW); strcpy(ifr.ifr_name, "can0"); ret = ioctl(s, SIOCGIFINDEX, &ifr); 接着配置模式和绑定地址:

 addr.can_family = PF_CAN;

 addr.can_ifindex = ifr.ifr_ifindex;

 ret = bind(s, (struct sockaddr *)&addr, sizeof(addr)); 配置can通信id及屏蔽位,把设置写入socket选项里。

  filter[0].can_id = 0x200 | CAN_EFF_FLAG;

  filter[0].can_mask = 0xFFF;

 filter[1].can_id = 0x20F | CAN_EFF_FLAG;

  filter[1].can_mask = 0xFFF;

  ret = setsockopt(s, SOL_CAN_RAW, CAN_RAW_FILTER, &filter, sizeof(filter)); 下面进行数据的读写:

 首先清空设备信息

 FD_ZERO(&rset);

  FD_SET(fd, &rset); 扫描接收缓冲区是否收到真实数据:

  ret = select(fd+1, &rset, NULL, NULL, NULL); 有数据后,读取数据:

  ret = read(fd, &frdup, sizeof(frdup)); 打印收到的数据:

 print_frame(&frdup); 把收到的数据回写:

  ret = write(fd, &frdup, sizeof(frdup));

 系统启动后,需要对can进行启动配置,如下:

 ip link set can0 type can bitrate 1000000 triple-sampling on ip link set can0 up

 2015-1-11

 今天开始调试触摸屏。

 首先下载移植tslib1.4 # tar -zxvf tslib-1.4.tar.gz # cd tslib 3 配置 # ./autogen.sh # echo "ac_cv_func_malloc_0_nonnull=yes" > arm-linux-gnueabihf.cache # ./configure --host=arm-linux-gnueabihf --cache-file=arm-linux-gnueabihf.cache --enable-inputapi=no

 --prefix=/usr/local/arm-linux/tslib1.4 注意,prefix 选项更换为你的安装路径。

 4. 编译 # make 5. 安装 # make install 改 修改 ts.conf 内容

  打开 安装路径下的/etc/ts.conf 文件,修改其内容。

 # vi /usr/local/tslib/etc/ts.conf

 搜索定位至#module_raw input,把行首的注释符去掉,但要注意行首不要留有空格,即文字是顶格的,不然之后会出现段错误(segmentational fault)。

 7. 移植至开发板

 将安装路径下的整个 tslib 文件夹,下载至开发班的上,我存放的路径为/usr/local 8. 设置开发板环境变量 通过超级终端, 打开环境变量文件/etc/profile # vi /etc/profile 添加如下内容:

 export TSLIB_ROOT=/usr/local/tslib export TSLIB_TSDEVICE=/dev/input/event1

 export QWS_MOUSE_PROTO=tslib:/dev/input/event1 export TSLIB_CALIBFILE=/etc/pointercal

 export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf

  export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts

  export TSLIB_FBDEVICE=/dev/fb0

 export TSLIB_CONSOLEDEVICE=none

 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib 其中,TSLIB_ROOT更换为自己实际存放的路径; 另外,TSLIB_TSDEVICE 和QWS_MOUSE_PROTO这两项需要查看自己的板子的触摸屏设备对应/dev/input/下那个文件

 9. 执行测试命令

 重启开发板(使系统读取 profile 环境变量),进入 tslib/bin 目录,执行触摸屏校准程序 # ./ts_calibrate 如果出现tslib的触摸屏 五点校准画面,至此,tslib的安装移植成功完成。

 也可执行此目录下其他的程序来体验触摸屏!

 通过实际操作以上步骤,确实可以实现触摸屏的校准和测试,能够进行画线测试。


推荐访问:日记 开发 AM335X

热门排行

春节晚会观后感600字14篇

春节晚会观后感600字14篇春节晚会观后感600字篇1晚上八点,吃完年夜饭后,我们一家人整整齐齐坐在

2020央视春晚观后感3篇

2020央视春晚观后感3篇2020央视春晚观后感篇1“爆竹声中一岁除,春风送暖入屠苏。千门万门曈曈日

2023特殊符号图案大全(全文)

๑• •ั๑๑฀฀๑♬✿ 。 :*★☆⊙☺☻☼♠♥♡♣♤♥♦♧♨♩ิε฀฀䁠iddot;฀bull;●○●ゃ卣䁠hearts;♡๑฀฀☜☞☎☏♡⊙◎☺☻✖╄►◄▧▨♨◐◑...

2022央视虎年春晚观后感高中作文7篇

2022央视虎年春晚观后感高中作文7篇2022央视虎年春晚观后感高中作文篇1时间匆匆流逝,已经到了农

积极分子谈话记录30篇_确定入党积极分子谈话会议记录

确定入党积极分子谈话会议记录篇一谈话时间:XXXX年6月19日谈话地点:谈话对象:入党联系人:记录人

春晚观后感300字4篇

春晚观后感300字4篇春晚观后感300字篇1春节是每个中国人都颇为期待的一天,它不仅仅代表家庭团圆的

幼儿园谈话记录:幼儿园晨谈记录100篇

坦直幼儿园党团结对谈心记录(2010年)序号时间去谈心人姓名被谈心人姓名谈心内容备注110 2 26

2020年医院党员谈心谈话记录_2020年谈话记录

职工医院谈心谈话记录单位:职工医院谈心交心对象签名年月日

2022年党支部领导班子“迎盛会、铸忠诚、强担当、创业绩”主题教育专题组织生活会对照检查材料(思想学习工作生活四个方面)【完整版】

2022年党支部领导班子“迎盛会、铸忠诚、强担当、创业绩”主题教育专题组织生活会对照检查材料(思想学习工作生活四个方面)【完整版】下面是小编为大家整理的《20...

【幼儿园谈话记录】 幼儿园晨谈记录100篇

坦直幼儿园党团结对谈心记录(2010年)