HMI 7寸 带壳 linux 系统的移植

news2024/11/13 19:55:21

问题: 目前的源码中 只有 android 的config 文件,需要再移植一个 Linux 的config 文件。

过程:

1  首先是可以正常启动。

首先将 4418 的config 文件拷贝到  HMI的源码中,编译一遍看看能不能正常编译正常启动。

cp xxxx  .config

然后编译。

 系统是可以正常启动的。

但是触摸不正常。是有触摸的,但是感觉分辨率不对。

并且virtual size 是不对的。

2 首先解决触摸的问题。

触摸 分辨率不对。

改动:

此时,触摸点 正常了,但是还有一个问题,就是, 手指按下的时候,鼠标箭头 会飞出去,手指抬起来的收,鼠标箭头才会回来。

改动:

目前来说触摸没有问题了。

将这些改动 放到 源码里去。

2 然后是蓝牙+wifi 的移植。

首先是蓝牙的移植

蓝牙的移植,需要配合 文件系统的 bluez 才可以测试。

HMI 或者 4418  只有android 有蓝牙, linux 没有蓝牙功能的测试。

那好,那就先来移植WiFi。

wifi 我用的是这个版本。

这里只有android 的手册。

我可以参考我自己之前整理的 wifi 的Linux 移植。

在移植的过程中顺便把 mt6620 的 驱动去掉。

说明: 我实在别人已经移植好 android4.4 的基础上进行 linux 的移植的,所以有很多 配置我是不需要动的,我可能最多就是 修改一下 menuconfig 的配置。

menuconfig 中 使能 8723bu, 去掉mt6620

对于USB的设置。

对于 IEEE的配置。

此时 ,内核这部分就设置好了,接下俩就是 文件系统部分了。

文件系统需要  iwlist + wpa_supplicant  工具。

接下来就是编译 + 烧写了, 文件系统我是不用动的,他们之前已经 在 测试mt6620 的时候,应该就是 移植好了。

然后,运行wpa_supplicant .

首先查看有没有设备节点。

ifconfig wlan0 up

iwlist wlan0 scan

然后设置 /etc/wpa_supplicant

ctrl_interface=/var/run/wpa_supplicant

network={

ssid="XW"

psk="aaaaaaaa"

}

创建 /var/run/wpa_supplicant

然后运行命令。

wpa_supplicant -Dnl80211 -iwlan0 -c /etc/wpa_supplicant.conf &

然后是分配 ip 地址。

使用 ping 命令测试。

3 然后是 文件系统的小毛病。

  没有 光标

  没有 ctrl c

 触摸节点不对+触摸不灵敏

这些问题已经解决了。

4 开始适配 7寸带外壳的 HMI的 dido 的适配。

5 接下来是 对于can 的适配。

我发现 ,在我自己移植的 带壳的 linux 的源码中没有 can 的节点。

移植can 需要两个步骤,

1  内核使能 can.

前置知识, HMI 的 can 与 RC522 使用的是 spi1 (相同的)

只需要在 menuconfig 中进行设置。

编译+烧写,测试结果。

之所以 上面的menuconfig  可以起到作用,是因为  在device.c 中已经有了配置。

至于具体的驱动我就不去 再看了。

2 在文件系统中,添加关于can 测试的 相关的库。

关于文件系统所需要的 库,以及 测试工具,全在6818 的网盘资料里。

将 libsocketcan.a  ,libsocketcan.la,libsocketcan.so.2.2.1  拷贝到  /lib / 目录下。

将canconfig,candump,canecho,cansend,cansequence,全部拷贝到 /bin/ 目录下,注意修改这几个命令的权限。

将 can_test ,拷贝到  / 目录下,

开始测试。可以看到是正常的。

3 整理 HMI 的 SDK

首先将 can的资料包拷贝进 SDK。

然后将,can的 库文件+测试工具+测试程序,拷贝到 qt_system+qt_system_5.7

做文件系统的固化。

对于 qt_system 的 can 测试的移植也是 从压缩包解压并拷贝 

库文件(做ln 链接)+测试工具(注意chmod 777 )+测试例程。

编译+烧写 ,测试新的文件系统。

然后对 qt 5.7 也做相同的 固化,

这次就直接将 qt_system 中的内容拷贝到  qt_system_5.7 中。

拷贝完毕。

qt_system_4.7 我就先不拷贝了。

接下来再git 中做说明。

拷贝一份配置好的  config 文件。

然后移植 HMI 带壳的 GPIO 的输入+输出。

我发现,再我的 HMI 7寸带壳的源码中已经有了 gpio 的内容。

这些个 驱动 是 针对  HMI 无壳的 源码做的,我需要针对带外壳的 做适当的修改。

硬件:

驱动的改动:

我发现 再我的 HMI 7寸 无壳的 源码中已经有了,对于GPIO的驱动。

1 已经改了 gpio.h

2 已经有了 驱动文件。

3 也已经有了 测试文件。

我是这么再 Makefile 中添加的驱动。

但是为什么 板卡的系统启动之后,没有发现这个设备节点呢?

我又 重新 make clean 然后 ,重新编译了一下,然后可以了。

编译+烧写, 测试之后。

这个节点也有了。

接下来 我使用应用程序实际测试一下,看看可不可以操控。

干脆我将测试程序直接做进 文件系统内。

直接编译文件系统+测试。

我发现确实是可以控制 ,gpio 的高低电平的。

疑问: 我发现,在驱动中只使用了 set_value , 并没有使用 gpio_direction, 难道是不需要吗?

这里只是 , GPIO, 并没有 设置 输入输出呀?

上面的只是输出。

接下来看看输入。

在 gpio.h 中要么就直接 设置成 IN 模式, 要么就设置成 GPIO模式,在驱动中再 设置 gpio_direction, get_value.

我就直接 .h 中设置成输入吧。

这样就改好了,gpio.h 文件。

接下来是去改  驱动文件。

接下来是去改 应用文件。

应用文件这里 ,我把读+写 分开写了。

这是一次性读取 5个DI。

改完之后 去修改 文件系统+ qt5.7 的文件系统。

然后将,应用的源码以及编译的二进制 文件,直接cp 到 文件系统+ qt5.7 的文件系统

编译二进制的命令为:

编译+烧写测试。

经过我的测试, 输出+输入都是可以运行的。

设备树的改动:

如果是这样的话,其实我是不用去改设备树的(其实是 device.c).

不对的,我使用的是 非设备树的 platform 总线,还是需要 device 设备的。

在这里。

那么我看看 led 是怎么搞得。

然后直接就是注册了。

应用程序的改动:

应用程序是 在写 设备节点。

DO1

DO2

DO3

DO4

DO5

DO6

按照这个顺序。

总结一下:

1 完成 linux menuconfig 的移植。这只是一个框架。

2 完成 can 的移植+ 所需的文件放到SDK+ 所需的可执行文件及库 放到了文件系统。

3 完成gpio 的读写的移植,所需的文件放到了SDK+文件系统+ qt_5.7

4 再 SDK 中,添加了 两个目录,用于存放  can+gpio 用到的资源。

现在开始  使用 qt_5.7 的文件系统。并且指定大小。

直接 cp qt_system_5.7/system  qt_system/system -rp

然后,修改build_android.sh

然后,还需要 修改一下 uboot,的烧写的 内容

setenv fastboot "flash=mmc,2:uboot:2nd:0x200,0x78000;flash=mmc,2:2ndboot:2nd:0x200,0x4000;flash=mmc,2:bootloader:boot:0x8000,0x70000;flash=mmc,2:boot:ext4:0x00100000,0x04000000;flash=mmc,2:system:ext4:0x04100000,0x340000000;"

至于怎样再 uboot 中去修改这部分的源码, 我就不去尝试了。

再烧写 system.img 的时候出现这个问题。

问题的解决:

1 我扩展了 system.img 之后,设置了, fastboot 的环境变量,但是烧写的还是 200M的之前的system.img

2 我编译完扩展之后的,system.img , mabaxterm 并没有及时跟新,我下载下来的还是之前的。

也就是说,我的system.img 烧写错了。

系统启动之后遇到的问题。

但是我再重启一次之后,这个问题就可以解决了。

但是我还可以再源码中 注释掉cmd1 来解决这个问题。

  但是我看了一下源码, 我已经注释掉了mmc1 。

先不管这个问题。

目前还有一个光标的问题。

光标的问题,我知道是什么问题了。

当然也可以再 命令行进行设置。

echo -e "\033[?25h"

ctrl+c 的问题也解决了。

光标问题+ ctrl+c 问题,我也再文件系统+ qt_system_5.7 做了固化。

还有一个U盘自动挂载的问题

我发现 ,qt4.7 U盘是不能自动挂载的。

qt5.7 是可以自动挂载的。

那么我就 自己去修改 qt4.7 ,让它可以自动挂载。

首先是 一些前置知识。

什么是 devfs , udev,mdev 呢?

这里我不是很理解, 内核都有了udev, 文件系统还使用什么 mdev ,直接用udev 不就可以了。

然后是 mdev 的使用方法。

我来看看我烧写的文件系统。

然后是内核。

起码 要使能  sysfs, procfs, tempfs,  文件系统。

然后是文件系统的修改。

然后是 mdev.conf 的 知识。

主要是 命令的格式。

来看看 我的 qt4.7 是怎么写的。

所以我需要 自己修改一下 qt4.7 的mdev.conf。

#!/bin/sh
echo "usbdisk insert!" > /dev/console

if [ -e "/dev/$MDEV"  ]  ; then

    mkdir -p /mnt/usbdisk/$MDEV

    mount /dev/$MDEV /mnt/usbdisk/$MDEV
    echo "/dev/$MDEV mounted in /mnt/usbdisk/$MDEV">/dev/console

fi

#!/bin/sh
echo "usbdisk remove!" > /dev/console

umount -l /mnt/usbdisk/sd*
rm -rf /mnt/usbdisk/sd*

然后将文件系统更换掉 ,重新编译+烧写,测试一下。

这里需要注意 ,两个脚本的权限一定是 777.

再 qt_system_4.7 中,固化一下权限。

并且 将文件系统改回  5.7

测试完毕。

问题: U盘再拔出的时候并没有 执行我的脚本。

接下来是 客户的问题,需要在HMI上更换一个 logo

在4418 的手册中,只有 更换 android 系统的 logo 的方法。没有单独写 linux的logo如何更换。

首先将 客户的图片转换成  1024x600 的格式。使用gimp

结果。

将自己生成的 图片替换 logo.bmp ,  然后将自己 编译好的 uimge 替换 uImage.

我最后 还要将这个 最后的 替换logo的压缩包放到 HMI 7寸带壳的 SDK 里面去。

疑问: 在build.sh 里面是如何操作 logo图片的?

----------------------------------------------------------------------------------------------------------------------------

关于 HMI can的测试。

imxull ----> hMI

先来设置 imx6ull .

root@itop-imx6ull:~# ip link set can0 up type can bitrate 50000 triple-sampling on


[  394.781310] flexcan 2090000.can can0: writing ctrl=0x27292085
[  394.787919] IPv6: ADDRCONF(NETDEV_CHANGE): can0: link becomes ready

然后开始发送数据

root@itop-imx6ull:~# while true; do cansend can0 01F#11.22.33.44.55.66.77.88; sleep 1; done

这里有一个报错。

看来是必须要 去接收才行。

HMI 的设置。

iTOP-4418@root:~# ./can_test -r can0


[   35.900000] mcp251x spi2.0: CNF: 0x04 0xf5 0x01
can port is can0
can0 ID=0x1f data length=8
0x11 0x22 0x33 0x44 0x55 0x66 0x77 0x88
can0 ID=0x1f data length=8
0x11 0x22 0x33 0x44 0x55 0x66 0x77 0x88

可以看到, 刚刚运行程序, 就受到了 数据,这是之前 6ull 一直没发出来的数据。应该是一个buffer 。

开始长时间测试,看看会不会卡死。

4 然后是 对于 hmi  7 寸无壳底板的适配。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1930399.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

uniapp实现微信一键登录按钮样式,如何开发胶囊按钮的样式

效果图&#xff1a; 关键点&#xff1a;让圆角的值变成高度的一半。 核心样式&#xff1a; .content .btn{width: 600rpx;border-radius: 300rpx;background-color: rgb(62,204,97);color: white;font-weight: 500;}完整代码&#xff1a; <template><view class&q…

神经网络参数初始化的常见方法

参数初始化 bias偏置&#xff1a;直接初始化为0 weight权重&#xff1a; 随机初始化 在高斯分布的数据中随机采样 标准初始化 在均匀分布的随机数中采样 Xavier初始化 该方法的基本思想是各层的激活值和梯度的方差在传播过程中保持一致&#xff0c;也叫做Glorot初始化。 正态…

防火墙-NAT策略和智能选路

一、背景技术 在日常网络环境&#xff0c;内部网络想要访问外网无法直接进行通信&#xff0c;这时候就需要进行NAT地址转换&#xff0c;而在防火墙上配置NAT和路由器上有点小区别&#xff0c;思路基本一致&#xff0c;这次主要就以防火防火墙配置NAT策略为例&#xff0c;防火墙…

微信小程序新建项目发现导航条不见了,及如何找回。

原因是现在小程序新建用的是 Skyline 渲染引擎 开启全局Skyline渲染引擎&#xff0c;因为Skyline不支持原生导航栏&#xff0c;所以就没显示原生导航栏了。 解决方法也很简单 app.json文件中的 “renderer”: “skyline”, 修改为 “renderer”:“webview”app.json文件中的…

爬虫代理访问超时怎么解决?

一、为什么会出现访问超时 爬虫使用代理可能会遇到访问超时的情况&#xff0c;主要和以下几个方面有关&#xff1a; 1.代理服务器性能&#xff1a; 代理服务器作为中间层&#xff0c;承担着转发请求和响应的任务。如果代理服务器性能不佳或超载&#xff0c;请求的响应时间可能…

Docker容器——初识Docker,安装以及了解操作命令

一、Docker是什么? 是一个开源的应用容器引擎&#xff0c;基于go语言开发并遵循了apache2.0协议开源&#xff0c;用来管理容器和镜像的工具是在Linux容器里驱动运行应用的开源工具是一种轻量级的“虚拟机” 基于linux内核运行Docker的容器技术可以在一台主机上轻松为任何应用…

QT官方modbus_slave例子嵌入到界面

1.打开QT官方modbus_slave的例子 根据提示略微配置一下编译选项&#xff0c;就可以正常运行。 2.新将一个项目包含这个例子 这个例子非常简单&#xff0c;就是在默认的mainwindow上给个按钮&#xff0c;点击按钮调用这个例子的界面。 3.修改*.pro文件 serialport serialbus …

E: Unable to locate package google-chrome-stable_current_amd64.deb

意思是我无法定位到google-chrome-stable_current_amd64.deb 我提前下载好了文件 我执行的命令为: apt install google-chrome-stable_current_amd64.deb 这个是先定位网络资源&#xff0c;然后现在安装。我是已经下载好了。 所以执行一下命令: apt install ./google-chro…

智能家居安卓程序设计(二)

一 UI设计 主界面布局文件 设备界面 程序既支持语音输入也支持屏幕点击&#xff0c; 可以对着该程序 发出语音指令&#xff0c;如 打开电视&#xff0c;调节音量&#xff0c;调节频道等。 二、系统架构 硬件层 传感器&#xff1a;温度传感器、湿度传感器、光传感器、运动传感器…

智能听诊器:宠物健康监测的革新者

宠物健康护理领域迎来了一项激动人心的技术革新——智能听诊器。这款创新设备以其卓越的精确度和用户友好的操作&#xff0c;为宠物主人提供了一种全新的健康监测方法。 使用智能听诊器时&#xff0c;只需将其放置在宠物身上&#xff0c;它便能立即捕捉到宠物胸腔的微小振动。…

【Linux】软件管理工具 yum

文章目录 概念搜索yum list keywordyum list | grep keywordyum search keyword 安装&#xff1a;yum install卸载&#xff1a;yum remove列出所有软件包&#xff1a;yum list列出可更新的软件包&#xff1a;yum list updates列出已安装的软件包&#xff1a;yum list installed…

使用ant+jmeter如何生成html报告

一、安装ant 下载apache-ant&#xff0c;放到对应路径下&#xff0c;然后进行环境变量配置。系统变量的CLASSPATH添加E:\Installation Pack\eclipse\apache-ant-1.9.6\lib;用户变量的PATH添加&#xff1a;E:\Installation Pack\eclipse\apache-ant-1.9.6\bin。打开cmd&#xf…

鸿蒙特色物联网实训室

一、 引言 在当今这个万物皆可连网的时代&#xff0c;物联网&#xff08;IoT&#xff09;正以前所未有的速度改变着我们的生活和工作方式。它如同一座桥梁&#xff0c;将实体世界与虚拟空间紧密相连&#xff0c;让数据成为驱动决策和创新的关键力量。随着物联网技术的不断成熟…

Adobe Photoshop 2024 25.9.1 Win/Mac PS2024最新中文学习版

Adobe Photoshop 2024&#xff0c;简称PS&#xff0c;目前最强的图片处理合成软件,PS提供了广泛的工具和功能&#xff0c;包括画笔、铅笔、颜色替换、混合器画笔等绘画工具&#xff0c;以及裁剪、透视变形、智能修复画笔等编辑工具。用户可以使用这些工具进行图片编辑、合成、校…

各类专业技术的pdf电子书

从业多年&#xff0c;收集了海量的pdf电子书籍&#xff0c;感兴趣的私聊。

2024-07-16 Unity插件 Odin Inspector7 —— Number Attributes

文章目录 1 说明2 Number 特性2.1 MaxValue / MinValue2.2 MinMaxSlider2.3 ProgressBar2.4 PropertyRange2.5 Unit2.6 Wrap 1 说明 ​ 本文介绍 Odin Inspector 插件中有关 Number 特性的使用方法。 2 Number 特性 2.1 MaxValue / MinValue 在 Inspector 窗口中对象能够被设…

深入解析HTTPS与HTTP

在当今数字化时代&#xff0c;网络安全已成为社会各界关注的焦点。随着互联网技术的飞速发展&#xff0c;个人和企业的数据安全问题日益凸显。在此背景下&#xff0c;HTTPS作为一种更加安全的通信协议&#xff0c;逐渐取代了传统的HTTP协议&#xff0c;成为保护网络安全的重要屏…

SAP ABAP性能优化

1.前言 ABAP作为SAP的专用的开发语言&#xff0c;衡量其性能的指标主要有以下两个方面&#xff1a; 响应时间&#xff1a;对于某项特定的业务请求&#xff0c;系统在收到请求后需要多久返回结果 吞吐量&#xff1a;在给定的时间能&#xff0c;系统能够处理的数据量 2. ABAP语…

<Rust><GUI>rust语言GUI库tauri体验:前、后端结合创建一个窗口并修改其样式

前言 本文是rust语言下的GUI库&#xff1a;tauri来创建一个窗口的简单演示&#xff0c;主要说明一下&#xff0c;使用tauri这个库如何创建GUI以及如何添加部件、如何编写逻辑、如何修改风格等&#xff0c;所以&#xff0c;这也是一个专栏&#xff0c;将包括tauri库的多个方面。…

汽车零部件制造企业MES系统主要功能介绍

随着汽车工业的不断发展&#xff0c;汽车零部件制造企业面临着越来越高的生产效率、质量控制和成本管理要求。MES系统作为一种综合信息系统&#xff0c;能够帮助企业实现从订单接收到产品交付的全流程数字化管理&#xff0c;优化资源配置&#xff0c;提高生产效率&#xff0c;确…