完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本文基于飞凌嵌入式AM335x嵌入式ARM主板(https://www.forlinx.com/)为基础讲解,系统采用Linux,以下问题已经在AM335x 主板上做了验证,通过本文您可以快速解决AM335x平台一些容易出错的地方,由于各个厂家提供的镜像不同,如您选择其他厂商ARM主板,请酌情参考使用。本次共整理了18个问题,由于内容较多分为两章讲解分享,本章分享第1-12问题解决思路。
为便于查询检索AM335x问题,小编列出目录,请根据您的需查询。 AM335x 应用笔记1、AM335x Linux系统自启运行Qt程序 2、AM335x Qt程序添加背景- 3、AM335x Qt界面应用程序中取消光标的方法 4、AM335x Linux QT视频打开不能退出问题 5、AM335x 开机LOGO连续显示的方法 6、AM335x 更改Qt界面 — FORLINX字符串 7、AM335想 更改开机画面—左上角小企鹅图标 8、AM335x 生成按键设备名keypad的方法 9 、AM335X更改GPIO的方法 10、AM335x SPI改成CAN的方法 11、AM335x 增加串口的方法 12、AM335x解决开发板触摸不灵敏问题 13、AM335x 添加应用程序到桌面的方法 14、AM335x 解决NAND erase.chip烧写错误的方法 15、AM335x 添加LCD的方法 16、AM335x 系统自动登录方法 17、AM335x 硬件看门狗开启方法 18、AM335x 修改MAC地址 注:本文所提到的镜像、源码等,请在飞凌提供的下载资料中查询。 正文开始:1、AM 335x Linux系统自启运行Qt程序修改的文件路径及文件名:/etc/init.d/qt.sh 比如AM335x ARM主板要开机自启动自己编写的qt应用程序Helloworld(假如程序放在文件系统的‘ / ’ 目录下),我们修改一下文件末尾就行,修改如下: 修改前 修改后 说明,注释掉 ./matrix_gui -qws 2>/dev/null &(如果不注释,会有影响),然后,添加自己的应用程序。 修改完qt.sh文件保存退出,然后输入命令sync,重启开发板 注:重启AM335x 开发板前,一定要输入sync,否则,修改的文件会恢复成原样,无法生效。 2、Qt程序添加背景 给自编的qt程序添加背景可以美化qt程序的外观,现介绍两种添加背景的方法: 1、如果单纯拷到AM335x arm板上运行显示背景,可以重写paintEvent()事件,在该事件中用画笔QPainter的方式画整个背景,该方法在把程序添加到桌面后背景无法正常显示。 void MainWindow::paintEvent(QPaintEvent *event) { QPainter painter(this); painter.drawPixmap(0,0,width(),height(),QPixmap("./11.png")); } 经验证png格式的图片可以正常显示,其他格式的例如jpg格式是无法显示的。 2、使用样式表,该方式将图片作为资源文件添加到工程中,通过读取资源文件完成背景的设置。该方式在把程序添加到桌面后依然可以正常显示。下面简介一下步骤: (1)把背景图片作为Qt资源文件添加到项目中,在资源文件中添加前缀/image,然后将图片添加进来如下图: 注:先点击Add Prefix添加前缀,再点Add Files添加图片文件。 (2)Qt样式表可以存放以.qss为后缀的文件,所以可以在程序中调用不同的.qss文件实现不同背景的替换。在资源文件中添加“/qss”前缀,再添加资源文件,在左侧细目列表处右击添加文件,选择General中的文本文档,命名为my.qss,可以多添加几个。然后参照添加图片的方法将此文件添加到/qss前缀下。 然后编辑此文本文档,下面的代码仅供参考: 然后在MainWindow的构造函数中调用此文档即可,如下: MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); QFile file(":/qss/my.qss"); file.open(QFile::ReadOnly); QStringstyleSheet=tr(file.readAll()); qApp->setStyleSheet(styleSheet); } 这样就可以将图片设置为背景图案了。 3、Qt界面应用程序中取消光标的方法 在AM335x的应用程序中有光标显示,如果想要不显示光标,客户可以自己编写应用程序,然后在应用程序的主函数main中添加QWSServer::setCursorVisible(false); 4、 Linux QT视频打开不能退出问题 问题:旧版本的AM335x系列产品Linux QT视频出现打开不能退出 注: 新版本的产品中已经没有了该问题 解决方法:去掉循环播放 修改文件系统源码: forlinxweblighttpdwebpagesshell下的脚本,将movie-once.sh脚本重新命名为movie.sh,替换掉原有的movie.sh即可。 5、 开机LOGO连续显示的方法 现在发布的镜像烧写启动后uboot和内核的logo不是连续显示的,中间大概有5S的黑屏时间,怎样去掉这个黑屏时间呢? 这需要修改代码如下: arch/arm/mach-omap2/board-am335xevm.c文件中 void ecap_init(intevm_id, int profile)函数中 #if defined(CONFIG_OK335XD) setup_pin_mux(ecap0_pin_mux); 改为: //setup_pin_mux(ecap0_pin_mux); 重新编译内核,烧到板子上即可 。 同时可以看到有关AM335其他平台的配置内容,注释掉对应平台的内容,效果相同。 6、更改Qt界面 —FORLINX字符串 修改AM335x的QT界面中出现的FORLINX DEMOS字符以及字符前边的logo的方法:首先,需要知道的是FORLINX DEMOS字符串修改所在的文件在rootfs文件系统下边的/forlinx/web/lighttpd/webpages/submenu.php文件中: 将其改为需要的字样保存。 其次,FORLINX DEMOS字符串前边的logo图片在的rootfs文件系统下边的/forlinx/web/lighttpd/webpages/images文件夹中,大小为30x30,png格式,制作图片替换即可。 7、更改开机画面—左上角小企鹅图标 使用下面的方法可以将企鹅的Logo换成自己喜欢的任意图片。 首先准备一幅自己喜欢的图片,然后将背景涂成黑色。然后将该图片保存成png格式,例如linuxlogo.png。将该图片保存在/home/forlinx/work/目录下 打开虚拟机进入Ubuntu开发环境,在linuxlogo.png的同一目录下使用下面的命令: # pngtopnm linuxlogo.png >linuxlogo.pnm # pnmquant 224 linuxlogo.pnm> linuxlogo224.pnm # pnmtoplainpnm linuxlogo224.pnm > linuxlogo224.ppm 运行完上面的命令之后,生成linuxlogo224.ppm文件 打开产品用户资料,拷贝src目录下的kernel-3.2.tar.bz2文件到虚拟机的/home/forlinx/work下面,然后执行以下命令。 #tar xvf kernel-3.2.tar.bz2 #mv/home/forlinx/work/linuxlogo224.ppm /kernel-3.2/drivers/video/logo/logo_linux_clut224.ppm (最好先做好备份),然后删除同一目录下的logo_linux_clut224.c文件, 然后重新编译内核(以软件手册的编译方法为准) 编译SDIO WIFI功能的内核时: #cp arch/arm/configs/ok335xd_evm_linux_sdio_defconfig .config 编译USB WIFI功能的内核时: #cp arch/arm/configs/ok335xd_evm_linux_u***_defconfig .config 然后编译: #make CROSS_COMPILE=arm-arago-linux-gnueabi- ARCH=arm uImage 编译完成后会自动在arch/arm/boot/ 目录形成uImage文件, 将该文件拷入SD卡boot分区或烧写到nand后即可使用。 启动AM335x 主板之后就可以在屏幕左上方看到自己的Logo了。 8、生成按键设备名keypad的方法 目前有客户咨询AM335x系列的开发板上的按键设备名keypad是怎样生成的,因为在内核驱动中找不到相对应的名字。 在内核中按键的名字使用的是gpio-keys,然后在文件系统中进行了一个系统连接名字就变成了keypad. 具体的文件是/etc/udev/rules.d/local.rules文件 该文件中的以下语句就是生成keypad的链接命令 # Create a symlink to any gpio-keys input device SUBSYSTEM=="input", KERNEL=="event[0-9]*", ATTRS{name}=="gpio-keys", SYMLINK+="input/keypad" 9、更改GPIO的方法 1.内核中的修改方法见gpio.patch文件。 2.具体的操作读取数值的方法 一般可以这样计算GPIOn_IOx = n*32 + x 对gpio3_9进行操作。 1)root@ok335x:~#echo 105 > /sys/class/gpio/export 2)root@ok335x:~#cat /sys/kernel/debug/gpio 可以看到在系统中注册了gpio3_9的号。 3)root@ok335x:~#cat /sys/class/gpio/gpio105/value 低电平的时候读到的数值是0 4)root@ok335x:~#cat /sys/class/gpio/gpio105/value 测试中可以通过飞线的方式给AM335x核心板上的gpio3_10的引脚一个3.3v的高电平读到的数值1. 其中可以把R78电阻拆掉了,防止这个角其他的信号对它造成影响。 10 SPI改成CAN的方法 spi接口是可以修改成can使用的,具体的方法是在内核中修改,具体的修改内容参考spi_to_can.patch文件 注意:包含头文件 11 增加串口的方法 通过查阅CPU手册,AM335x平台可以最多复用出6路串口,UART0 – UART5。本次以复用UART5为例,讲解如何在AM335x平台添加串口设备。 1、查阅Sitara AM335x ARM Cortex-A8 Microprocessors (MPUs) (Rev. F)手册,查看该手册中球特性的内容,该部分列举了CPU各球号对应的复用功能,搜索UART5,找到可复用为UART5的球号,选择合适的两个球号(我们CPU用的是zcz的封装模式),作为uart5_rxd与uart5_txd,如图MII1_COL在选择mode3时,功能为uart5_rxd,并对该引脚做uart5_rxd时相关的配置做了定义,比如reset state为低速(L)等等。 从实际出发,应该先考虑核心板是否把与UART5相关的球号引出,如果引出,那该引脚是否复用做其他功能,该功能可否去掉,衡量之后选择两个合适的引脚。 本次选择mii1_col与rmii1_refclk两个引脚,核心板上已经引出,但在底板上没有引出,需要飞线。 2、该平台的串口驱动已经调好,所以只需要修改板级文件即可。路径为: kernel-3.2/arch/arm/mach-omap2/board-am335xevm.c。 该文件中已经有UART5的pinmux配置,如下: static structpinmux_config uart5_pin_mux_s2[] = { {"mii1_col.uart5_rxd",OMAP_MUX_MODE3 | AM33XX_SLEWCTRL_SLOW | AM33XX_PIN_INPUT_PULLUP}, {"rmii1_refclk.uart5_txd",OMAP_MUX_MODE3 | AM33XX_PULL_UP | AM33XX_PULL_DISA | AM33XX_SLEWCTRL_SLOW}, // {"mii1_rxerr.uart5_rtsn", OMAP_MUX_MODE5 | AM33XX_PIN_OUTPUT | AM33XX_PULL_ENBL}, // {"mii1_crs.uart5_ctsn",OMAP_MUX_MODE5 | AM33XX_PIN_INPUT_PULLUP}, {NULL,0}, }; 注释:“OMAP_MUX_MODE3 | AM33XX_SLEWCTRL_SLOW | AM33XX_PIN_INPUT_PULLUP”是对uart5_rxd引脚的控制状态寄存器(CONTROL_MODULE REGISTERS)的配置,这三个量都是宏定义,具体的含义可在mux.h文件中查到,路径同为:kernel-3.2/arch/arm/mach-omap2/,通过解读,该值为01110011。 控制状态寄存器(CONTROL_MODULE REGISTERS)如何配置要参考CPU手册,AM335x ARM Cortex-A8 Microprocessors (MPUs) Technical Reference Manual (Rev. H)。该手册的第九章中的Table 9-10对CPU的各引脚的控制状态寄存器进行了列举,找到mii1_col,如下图: 转到Section 9.3.51,如下图: 可见该寄存器只有低7位可以设置,对应mii1_col.uart5_rxd配置的寄存器值为01110011,低三位对引脚的mode进行设置,mode3为uart5_rxd,其余数值在球特性部分有介绍,这里就不做详细说明了。 将板级文件里pinmux的定义配置好,再将其添加到uart_init()函数中,如下: 这样就完成了UART5的添加。 原文链接:https://www.forlinx.com/article_view_607.html 连载未完待续 接下篇 :https://www.forlinx.com/article-new-c22/608.html |
|
相关推荐
|
|
飞凌嵌入式-ELFBOARD-RGB LCD屏接口的PCB设计要点
346 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-spi编程示例之spi编写程序
786 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第三十七章 image图像对比实验
756 浏览 0 评论
961 浏览 1 评论
652 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11674 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-13 04:12 , Processed in 0.557351 second(s), Total 64, Slave 46 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号