tag 标签: imx6q

相关帖子
相关博文
  • 热度 6
    2022-10-21 09:17
    702 次阅读|
    0 个评论
    本文以 飞凌嵌入式OKMX6Q / DL -C 开发板 为基础讲解,操作系统为 Linux 3.0.35,其它品牌产品请参考使用,本文主要介绍了 iMX6Q 开发板如何将QT程序加载到主界面、 iMX6 Q 开机自启动QT应用程序、QT桌面旋转90度以及QT程序显示汉字写本文章主要是记录日常客户经常问到的一些问题,为客户提供一些解决思路,希望可以协助客户加速产品的研发速度,由于水平有限,在服务过程中所提供的任何资料和信息,都仅供参考。 一、 iMX6开发板 如何将QT程序加载到主界面 以下的方法是如何将自己的QT程序加载到桌面的主界面上。我们以添加 music 程序为例: 1、在文件系统中进行修改: 修改 opt/qt4.8.5/demos/embedded/fluidlauncher/config.xml 文件: 打开该文件后,在 的下一行添加 添加完成后记得保存。 2、添加应用的桌面图标: 在 opt/qt4.8.5/demos/embedded/fluidlauncher/screenshots/apps 中添加 music.png图片,用作主界面识别 music 程序用。 3、添加可执行程序: 在 opt/qt4.8.5/apps 中添加自己编译的可执行文件 music,并给可执行文件用chmod 命令 赋予可执行权限。 4、保存并应用: 如果以上操作是在iMX6Q开发板上进行的,完成后需执行sync 保存,重启iMX6Q开发板此时打开主界面,即可看到自己添加的music 可执行程序。也可以在iMX6Q用户资料的文件系统中修改,修改完成后重新打包并烧写到iMX6Q开发板上即可。 二、开机自启动QT应用程序 以下方法是如何将自己做的应用程序设置为iMX6Q开发板启动直接运行,我们以music程序为例,假设该文件放到了/opt/qt4.8.5/apps 路径下,客户自己操作时请根据实际的文件名和路径。 修改开机启动脚本 OKMX6平台 Qt 系统开机后默认启动桌面程序 fluidlauncher,若要改成默认启动其他 Qt应用程序,修改文件系统/etc/rc.d/apps.sh文件,如果在iMX6Q开发板上操作,在超级终端执行以下命令: root@freescale /$ vi /etc/rc.d/apps.sh 通过vi命令将apps.sh文件修改为以下内容: #!/bin/sh #app #cd /opt/qt4.8.5/demos/embedded/fluidlauncher #./fluidlauncher -qws & cd /opt/qt4.8.5/apps ./music -qws & #apps 保存该文件后,执行sync保存命令;重启就可以看到默认启动了刚设置的应用程序。也可以修改文件系统源码下的etc/rc.d/apps.sh 文件,改动方法同上,然后重新制作文件系统映像并烧写到iMX6平台。 三、QT桌面旋转90度 通过以下方法可以将屏幕上的QT旋转90度,180度或者是270度。以旋转90度为例: 修改文件系统中的QT环境变量脚本: root@freescale /$ vi/etc/rc.d/qt_env.sh 将export QWS_DISPLAY="linuxfb:mmWidth50:mmHeight130:0" 修改为export QWS_DISPLAY=”Transformed:Rot90:LinuxFb:/dev/fb0” 修改完成后保存该文件并执行sync命令后,重启iMX6Q开发板即可;有些QT界面不能够适应旋转后的宽高等,需要重新编译调整下qt界面的图形界面。也可以修改文件系统源码下的etc/rc.d/qt_env.sh 文件,改动方法同上,然后重新制作文件系统映像并烧写到平台。 四、QT程序显示汉字 有些客户想要在QT应用界面上显示中文,可以参考以下方法,要在 Qt 的应用程序中显示汉字,需满足2 个条件。 方法1、 汉字库 如“宋体” simsun.ttc,如果 Qt 找不到汉字库,或者要显示的汉字不再 Qt能找到的汉字库中,可以用 WindowsXp 下的字库文件,在 windows/fonts 目录直接拷贝到 Qt 的 lib/fonts 目录下(/opt/qt4.8.5/lib/fonts); 使用./test –font simsun 即可显示字体。 汉字编码 需要将要显示汉字的编码告诉 Qt,如果使用 tr 转换显示的汉字,则在类的构建函数中添加 setupUi(this); QTextCodec::setCodecForTr(QTextCodec::codecForName("utf8"));//tr 使用的编码 QTextCodec::setCodecForCStrings(QTextCodec::codecForName("utf8"));//QString 使用的编码,没有这一条 //则 QString str(tr(“中文” )),能正常显示, QString str(“中文” );会显示乱码。 另外要特别注意的是这两条语句放置的位置,在构造函数中,只对当前类有效,放到main 函数中,无效。 这样,在该类的后面使用 tr 转换的字符串,就会认为是 utf8 编码的了。 注:外边文件夹有例子和字体包 方法2、 汉字库 如果 Qt 找不到汉字库,或者要显示的汉字不再 Qt能找到的汉字库中, 可以用 Windows 下的字库文件 目录直接拷贝到 Qt 的 lib/fonts 目录下(/opt/qt4.8.5/lib/fonts).此方法需要放置两个字体文件到fonts下。 汉字编码 需要将要显示汉字的编码告诉 Qt. 本历程在main函数中指定程序默认字体和字体大小, 并指定汉字编码默认为utf8格式。 指定程序全局默认显示中文字体库, 和字体大小。 显示中文, 使用 QT内建 tr()转换函数, 转换为上文程序默认指定的utf8编码格式. 减少乱码的情况。 注:外边文件夹有例子和字体包
  • 热度 39
    2016-4-6 15:50
    1646 次阅读|
    10 个评论
      iMX6Q系列芯片是NXP半导体公司最新推出的高性能低功耗CPU,该系列芯片包含S/D/Q等几个不同型号,分别表示单/双/四核芯片。芯片基于ARM Cortex™-A9架构,兼容DDR 3-1066M、LVDDR 3-1066M、LPDDR2-1066M(单通道或双通道)等内存设备接口,被广泛应用于:笔记本、手持设备、多媒体播放等视频终端设备。   硬件平台:TQIMX6Q_BASEC_V1.0   1、准备工作: (4G、8G)SD卡,读卡器,测试文件   2、在windows系统下使用我司的SD卡制作软件,把SD卡格式化和分区,如下图:(首先点击初始化然后分区)。        3、格式化分区为etx3格式的linux文件系统:(以下操作需要进入ubuntu系统操作,系统最好是root权限登陆进去)   (1)、首先进入ubuntu虚拟机系统,键盘输入如下键值“Ctrl +Alt+t”即可调出终端窗口,或者直接用鼠标在桌面点击也可以。(点击红色框所示程序图标)        按下如下命令“mkdir /opt/imx6/”创建这个目录路径,把提供的“测试文件”夹里面全部文件复制到ubuntu系统/opt/imx6这个目录下,(这个操作完成一次,以后制作SD卡时都不需要重新操作,其实这个操作就是把文件复制到ubuntu系统,不过复制时一定要放在/opt/imx6这个目录,下面的操作需要到这个目录找文件)   (2)、刚才格式化完的SD卡用读卡器插上电脑,首先确认到虚拟机的ubuntu系统已经识别出SD卡:下图就是显示到ubuntu系统已经识别到SD卡了。(红色框显示即是识别到)        (3)、然后在终端界面如下命令”cd /opt/imx6/ ; ./auto_sacard.sh”,并回车确认,脚本程序会弹出如下的信息:        弹出信息时会有一个选项需要选择:键盘按下“1”即可,脚本会一直引导第二个选项信息:(如下图)        第二个选项:键盘按下“2”。脚本就会开始格式sd卡分区系统:   如果按下2选项后,终端没有打印出如下图的信息,或者桌面没有显示出两个SD卡设备出来,如桌面左边红色框所示。就需要把终端关掉和把读卡器拔掉,重新从第二步骤重做过。(即上面标号(3)步骤开始)        如果SD卡分区成功格式化,终端会显示如下图显示的信息:        4、放置内核文件,配置文件和linux文件系统文件到刚才格式化完和分区好的sd卡里面。   (1)、终端输入如下命令”nautilus /opt/imx6”可以直接打开测试文件的路径目录,将images文件拷贝到识别为boot卷标的SD卡根目录里,将rootfs_imx6.tar.bz2文件拷贝到识别为rootfs卷标的根目录里。   (2)、打开卷标为rootfs的sd卡设备,然后选中rootfs_imx6.tar.bz2   点击它右键,会弹出下拉选项“提取到此处”,选择它把文件解压到SD里面。如下图:        (3)、点击进入解压出来的文件夹里面,把全部文件选上并剪切,拷贝到上一层目录,即rootfs根目录。(以下就完成了SD卡的分区和格式化)        (4)、退出SD卡:             (备注:制作E9卡片电脑和i.MX6都是一样,只是测试文件不一样和创建测试文件路径不一样)
  • 热度 15
    2015-8-26 11:29
    1611 次阅读|
    0 个评论
       天嵌科技在2015年8月对 TQIMX6Q_BASEC_V1 开发板进行软件更新。以下为更新的内容说明:      Android系统:   1.增加RTL8723BU的蓝牙+WIFI 驱动;   2.增加IP配置APP;   3.增加串口测试APP;   4.修复点击触摸屏有时造成内核死机的BUG;   5.针对核心板v1.0 和 v2.0 分别使用了不同的内核配置单,v1.0为内置RTC, v2.0为外置RTC PCF8563;   6.修复GPS模块和COM2相冲突的问题;   7.增加了开机即root功能;   8.系统源码均支持2G系统,针对内存为1G版本的核心板做了补丁和镜像;      Linux系统:   1.更新了文件系统。       上面是广州天嵌计算机科技有限公司最新更新的嵌入式开发板软件光盘内容,如需最新光盘的客户,请联系相关销售(销售您板子的),获取相关资料链接。天嵌科技感谢您的支持!   相关产品链接: http://www.embedsky.com/index.php?s=/Product/show/id/83.html  
  • 热度 31
    2015-7-28 10:15
    1041 次阅读|
    0 个评论
      经过前面的移植,u-boot已经有能力启动内核了,本文主要来看下如何通过之前移植的u-boot来启动内核。如果按照前面的文章完成了LTIB的编译,那么,Linux的内核应该就会出现rpm/BUILD/目录下,接下来,我们就开始移植这个3.0.35版本的内核到TQIMX6Q。   内核的编译   为了简化内核编译的过程,可以在内核目录下创建编译脚本,命名为build.sh,内容如下:   #!/bin/sh   export ARCH=arm   export CROSS_COMPILE=/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-none-linux-gnueabi-   make uImage -j8   为该脚本添加可执行权限:   chmod a+x build.sh   由于本文使用的内核镜像格式是uImage,因此会依赖u-boot编译时生成的工具——mkimage。该工具为u-boot目录的tools子目录下,可以将mkimage拷贝到/usr/bin或者/usr/local/bin目录下,当然也可以是用环境变量PATH,方法如下:   export PATH=$PATH:~/Projects/imx6/L3.0.35_4.1.0/ltib/rpm/BUILD/u-boot-2009.8/tools   安装路径需要根据自己的实际情况填写。完成以上操作之后就可以编译内核了,执行脚本程序:   ./build.sh   内核的编译时间较长,需耐心等待,也与机器的配置有关。   内核启动尝试   内核编译完成后,uImage会出现在arch/arm/boot/目录下,将该镜像烧写到SD卡:   sudo dd if=arch/arm/boot/uImage of=/dev/sdb bs=512 seek=2048   sync   然后用SD卡启动开发板,按任意键打断u-boot启动,进入命令行,修改u-boot环境变量:   setenv bootargs_base 'setenv bootargs console=ttymxc0,115200'   setenv bootargs_mmc 'setenv bootargs ${bootargs} root=/dev/mmcblk1p1 rootwait rw'   setenv bootcmd_mmc 'run bootargs_base bootargs_mmc; mmc dev 1; mmc read ${loadaddr} 0x800 0x2000; bootm'   setenv bootcmd 'run bootcmd_mmc'   saveenv   以上指令的含义:   第一条:bootargs_base,维持默认状态,作用是在bootargs中指定串口终端及波特率。   第二条:bootargs_mmc,是MMC方式启动内核使用的bootargs特有参数。   第三条:bootcmd_mmc,是MMC方式启动特有的命令组合。   第四条:bootcmd是内核启动命令。   第五条:保存env到SD存储介质。   完成之后执行命令:   boot   或者重新上电开发板就可以启动内核了。   内核的修改   通过上面的设置,u-boot已经可以引导内核启动了,但是,内核启动后仅打印了一部分log,猜测是内核中UART的GPIO管脚配置不正确,开始一段log能打印出来是因为u-boot阶段配置好了UART,而内核中又将这两个引脚配置为其它用途了。首先来解决串口log问题,打开文件arch/arm/mach-mx6/board-mx6q_sabresd.h并作如下修改:   ... ...   // MX6Q_PAD_CSI0_DAT10__UART1_TXD,   MX6Q_PAD_SD3_DAT7__UART1_TXD,   // MX6Q_PAD_CSI0_DAT11__UART1_RXD,   MX6Q_PAD_SD3_DAT6__UART1_RXD,   ... ...   其实,u-boot已经作过相应的修改,修改UART1相关的配置信息,除了以上修改之外,还需要将SD3与串口冲突的两个引脚:   MX6Q_PAD_SD3_CLK__USDHC3_CLK_50MHZ,   MX6Q_PAD_SD3_CMD__USDHC3_CMD_50MHZ,   MX6Q_PAD_SD3_DAT0__USDHC3_DAT0_50MHZ,   MX6Q_PAD_SD3_DAT1__USDHC3_DAT1_50MHZ,   MX6Q_PAD_SD3_DAT2__USDHC3_DAT2_50MHZ,   MX6Q_PAD_SD3_DAT3__USDHC3_DAT3_50MHZ,   // MX6Q_PAD_SD3_DAT4__USDHC3_DAT4_50MHZ,   // MX6Q_PAD_SD3_DAT5__USDHC3_DAT5_50MHZ,   // MX6Q_PAD_SD3_DAT6__USDHC3_DAT6_50MHZ,   // MX6Q_PAD_SD3_DAT7__USDHC3_DAT7_50MHZ,   MX6Q_PAD_NANDF_D0__GPIO_2_0,   MX6Q_PAD_NANDF_D1__GPIO_2_1,   注释掉以上四行。保存后重新编译内核并烧写到SD卡,重新启动开发板会发现内核已经可以正常打印启动Log了。接下来将LTIB编译生成的rootfs烧写到开发板,并使用编译好的内核挂载该文件系统。   挂载文件系统   文件系统的构建方式都差不多,这里就不再自己构建了,直接使用LTIB编译时生成的文件系统。   将SD卡插ubunut上,对该SD卡进行分区:   sudo fdisk /dev/sdb   然后如下操作:   Step1: 通过指令u切换到sectors模式。输入u后回车,fdisk会在sectors模式和cylinders模式间切换,这里切换到sectors模式。   Step2:通过d指令删除原来的分区。重复的输入d并回车,可以删除SD卡原有的分区,知道没有任何分区为止。   Step3:通过n指令新建分区。输入n并回车。   Step4:输入分区编号。这里输入数字1。   Step5:输入分区的起始位置。该位置是sectors为单位的,每个sector的大小为512B,这里偏移8M,给内核留下足够的存储空间,输入16384并回车。   Step6:输入分区的结束为止。直接使用默认值,即到达SD卡的末尾,故直接回车即可。   Step7:保存分区信息。输入指令w并回车。   这样就完成了SD卡的分区,接下来需要将该分区格式化为ext3或者ext4,指令如下:   sudo mkfs.ext3 /dev/sdb1   或者   sudo mkfs.ext4 /dev/sdb1   最后,将文件系统拷贝到该分区,进入ltib目录下的rootfs文件夹,然后执行如下指令:   sudo mount /dev/sdb1 /mnt   sudo cp -a * /mnt   也可以重新拔插SD卡,将rootfs内的文件拷贝到ubunut挂载的分区。   如果rootfs是压缩包,则可以解压到SD卡分区,比如bzip的压缩包,可以如下处理:   sudo tar jxf rootfs.tar.bz2 -C /mnt   sudo mv /mnt/rootfs   MX6Q_PAD_SD2_CLK__USDHC2_CLK,   MX6Q_PAD_SD2_CMD__USDHC2_CMD,   MX6Q_PAD_SD2_DAT0__USDHC2_DAT0,   MX6Q_PAD_SD2_DAT1__USDHC2_DAT1,   MX6Q_PAD_SD2_DAT2__USDHC2_DAT2,   MX6Q_PAD_SD2_DAT3__USDHC2_DAT3,   // MX6Q_PAD_NANDF_D4__USDHC2_DAT4,   // MX6Q_PAD_NANDF_D5__USDHC2_DAT5,   // MX6Q_PAD_NANDF_D6__USDHC2_DAT6,   // MX6Q_PAD_NANDF_D7__USDHC2_DAT7,   // MX6Q_PAD_NANDF_D2__GPIO_2_2,   MX6Q_PAD_GPIO_2__USDHC2_WP,   // MX6Q_PAD_NANDF_D3__GPIO_2_3,   MX6Q_PAD_GPIO_4__USDHC2_CD,   Step2:打开arch/arm/mach-mx6/board-mx6q_sabresd.c,作如下修改:   #define SABRESD_SD2_CD IMX_GPIO_NR(1, 4)   #define SABRESD_SD2_WP IMX_GPIO_NR(1, 2)   即将SD2_CD的引脚号修改为GPIO1_4和GPIO1_2。   按照以上步骤修改内核后重新编译并烧写到SD卡,然后使用SD卡启动开发板。   相关产品:   http://www.embedsky.com/index.php?s=/Product/show/id/83.html   http://www.embedsky.com/index.php?s=/Product/show/id/57.html
  • 热度 16
    2015-7-24 10:50
    1269 次阅读|
    0 个评论
     菜单界面,按:   0 :进入参数设置菜单   4 :进入启动式设置菜单   x :按实际选择所要的启动系统,0 表示将默认启动方式设置成 ubuntu,1 表示将默认启动   系统设置成 android。2 表示将使用默认 tftp 与 nfs 启动 android 系统。   s :保存设置,下次启动时默认使用这里设置的系统。   系统在下次启动时会使用这里设置的默认方式。   ##### Boot for E9 Main Menu #####    boot from emmc    boot from sdcard    boot from tftp    download from sdcard    setting boot args //进入 uboot 启动参数设置菜单    exit to command mode   Enter your selection: 0   ##### param setting #####    setting nfs args    setting tftp args    setting display args    setting default boot //设置默认启动方式   save setting    quit   Enter your selection: 4   ##### param setting #####    ubuntu used emmc //设置默认从 EMMC 启动 Ubuntu 系统    android used emmc //设置默认从 EMMC 启动 Android 系统    linux used emmc //设置默认从 EMMC 启动 Linux 系统    android used tftp nfs //设置默认从 TFTP 下载内核并挂载 NFS 的 Android 系统   save setting    quit   Enter your selection: 1   ##### param setting #####    ubuntu used emmc    android used emmc    android used tftp nfs   save setting //参数默认是不保存的,要想保存参数用户要选择“保存设置”    quit   Enter your selection: s   Saving Environment to MMC...   Writing to MMC(3)... done   ##### param setting #####    ubuntu    android   ........