linux
文章平均质量分 84
苦学嵌入式
这个作者很懒,什么都没留下…
展开
-
imx6ull利用shell实现开机自启
假设要开机执行projectmax文件,目录为/home/root/project/projectmax ,打开。原创 2024-07-16 20:48:13 · 121 阅读 · 0 评论 -
imx6ull/linux应用编程学习(17)利用mqtt上传开发板数据,和控制开发板led(基于正点)
imx6ull/linux应用编程学习(16)emqx ,mqtt创建连接mqtt.fx-CSDN博客(1)用户可通过手机或电脑远程控制开发板上的一颗 LED 灯;(2) 开发板客户端每隔 30 秒向服务端发送 SoC 当前的温度值,用户通过手机或电脑可查看到该温度值首先我们需要先准备好这些:1.首先mqtt.fx连接上服务器2.准备好客户端id、用户名、用户名密码。目录结构为首先创建cmake文件夹、build文件夹、CMakeLists.txt、mqttClient.c文件CMakeLists.txt(原创 2024-07-11 02:39:02 · 1226 阅读 · 0 评论 -
imx6ull/linux应用编程学习(16)emqx ,mqtt创建连接mqtt.fx
1框内,第一行为之前记的四条信息中的连接地址,第二条为端口,第三条为客户端id,这个自己设记得这个客户端id需要在emqx进行授权,在上文中我已经进行授权了。选客户端授权,客户端id为你在mqtt.fx的客户端id,然后设置订阅主题,然后记得客户端id边上的用户名授权也加进去。在很多项目中都需要自己的私人服务器,以保证数据的隐私性,这里我用的是emqx。2框勾选,3框为ca证书的存放地址,你存哪儿就选择那个路径。emqx需要用户名密码,点添加,自己添加设置就行。进入界面后,记住这四条信息,很重要。原创 2024-07-10 21:49:21 · 407 阅读 · 0 评论 -
imx6ull/linux应用编程学习(15) 移植MQTT客户端库/测试
确保你的Ubuntu系统已经安装了必要的工具和依赖项。编译完成后,将生成的库文件和相关的头文件传输到开发板。原创 2024-07-09 22:11:04 · 335 阅读 · 0 评论 -
imx6ull/linux应用编程学习(14) MQTT基础知识
与HTTP 协议一样, MQTT 协议也是应用层协议工作在 TCP/IP 四层模型中的最上层(应用层)构建于 TCP/IP协议上。MQTT 最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用①、 使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合。②、基于 TCP/IP 提供网络连接。原创 2024-07-08 21:02:42 · 941 阅读 · 0 评论 -
imx6ull/linux应用编程学习(13) CMAKE
cmake 工具通过解析 CMakeLists.txt 自动帮我们生成 Makefile,可以实现跨平台的编译。原创 2024-07-08 18:48:26 · 858 阅读 · 0 评论 -
imx6ull/linux应用编程学习(12)CAN应用编程基础
关于裸机的can通信,会在其他文章发,这里主要讲讲linux上的can通信。与I2C,SPI等同步通讯方式不同,它有CAN_HIGH与CAN_LOW两条信号线组成。原创 2024-07-05 19:25:48 · 913 阅读 · 0 评论 -
imx6ull/linux应用编程学习(11)SOCKET
Socket是实现网络通信的基本单元,它提供了统一的接口,方便程序员使用TCP或UDP进行数据传输。通过选择不同类型的Socket,程序可以在可靠性、速度和资源利用之间进行权衡,以满足不同应用场景的需求。原创 2024-07-05 16:56:18 · 1271 阅读 · 0 评论 -
imx6ull/linux应用编程学习(10)网络基础知识(基于正点原子)
网络通信本质上是一种进程间通信,是位于网络中不同主机上的进程之间的通信,属于 IPC 的一种,通常称为 socket IPC。大概可以分为三个层次,如下所示:(1)、硬件层:网卡设备,收发网络数据(2)、驱动层:网卡驱动(Linux 内核网卡驱动代码)(3)、应用层:上层应用程序(调用 socket 接口或更高级别接口实现网络相关应用程序)在硬件上,两台主机都提供了网卡设备,也就满足了进行网络通信最基本的要求,网卡设备是实现网络数据收发的硬件基础。并且通信的两台主机之间需要建立网络连接,原创 2024-07-04 21:13:15 · 820 阅读 · 0 评论 -
imx6ull/linux应用编程学习(9)串口应用编程
串口全称叫做串行接口,串行接口指的是数据一个一个的按顺序传输,通信线路简单。使用两条线即可实现双向通信,一条用于发送,一条用于接收。串口通信距离远,但是速度相对会低,串口是一种很常用的工业接口串口(UART)在嵌入式 Linux 系统中常作为系统的标准输入、输出设备, 系统运行过程产生的打印信息通过串口输出;同理,串口也作为系统的标准输入设备, 用户通过串口与 Linux 系统进行交互。所以串口在 Linux 系统就是一个终端, 提到串口, 就不得不引出“终端(Terminal)”这个概念了。原创 2024-07-04 15:15:39 · 1062 阅读 · 0 评论 -
imx6ull/linux应用编程学习(8)PWM应用编程(基于正点)
下来需要导出 pwm,首先使用 access()函数判断 pwm0 目录是否存在,如果存在表示 pwm 已经导出,如果不存在,则表示未导出,那么就需要通过 export 文件将其导出。,前面提到,这块imx6ull的pwm1拿去用做控制lcd背光了,而其他几路没有pwm资源,所有测不了,如果要测试pwm需要去内核禁用io,太麻烦,所以不演示了。当使用完 PWM 之后,我们需要将导出的 PWM 删除,导出成功之后,接着配置 PWM 周期、占空比,最后使能 PWM。0 表示一个编号, 注意,原创 2024-07-03 20:03:00 · 982 阅读 · 0 评论 -
imx6ull/linux应用编程学习(7)在LCD上显示文字
在linux中,确实可以像裸机一样自己取模、自己写函数打点显示,但是效率很低,不能满足多文字显示,在Linux 系统中, 字体文件通常会放在/usr/share/fonts 目录下,有了字体文件之后,我们就不需要再对字符进行取模了,它们已经编码进了字体文件中,我们只需要解析字体文件、访问字体文件,从字体文件中读取出字符的位图数据即可。原创 2024-07-03 19:05:33 · 1024 阅读 · 0 评论 -
imx6ull/linux应用编程学习(6)jpeg和png的图片显示
JPEG 虽然是有损压缩,但这个损失的部分是人的视觉不容易察觉到的部分,它充分利用了人眼对计算机色彩中的高频信息部分不敏感的特点,来大大节省了需要处理的数据信息。当出厂系统原有的 libjpeg 库被删除后,将会导致开发板下次启动后, 出厂系统的 Qt GUI应用程序会出现一些问题,原本显示图片的位置变成了空白,显示不出来了!图像中保存的不再是各个像素的彩色信息,而是从图像中挑选出来的具有代表性的颜色编号,每一编号对应一种颜色, 图像的数据量也因此减少,这对彩色图像的传播非常有利。⑹、读取解码后的数据;原创 2024-06-30 20:33:59 · 957 阅读 · 0 评论 -
imx6ull/linux应用编程学习(5)FrameBuffer的应用编程
Frame 是帧的意思, buffer 是缓冲的意思,所以 Framebuffer 就是帧缓冲, 这意味着Framebuffer 就是一块内存,里面保存着一帧图像。帧缓冲(framebuffer)是 Linux 系统中的一种显示驱动接口,它将显示设备(譬如 LCD) 进行抽象、 屏蔽了不同显示设备硬件的实现,对应用层抽象为一块显示内存(显存),它允许上层应用程序直接对显示缓冲区进行读写操作,而用户不必关心物理显存的位置等具体细节,这些都由Framebuffer 设备驱动来完成。原创 2024-06-29 18:04:06 · 884 阅读 · 0 评论 -
imx6ull/linux应用编程学习(4)使用tslib库
什么是tslib库?tslib是专门为触摸屏设备所开发的 Linux 应用层函数库,它是触摸屏驱动和应用层之间的适配层。它把应用程序中读取触摸屏struct input_event 类型数据(这是输入设备上报给应用层的原始数据)并进行解析的操作过程进行了封装,向使用者提供了封装好的 API 接口。tslib 有一个配置文件ts.conf,该配置文件中提供了一些配置参数、用户可以对其进行修改。同时,其还可以为Qt提供触摸输入支持。接下来主要介绍如何使用 tslib 提供的 API 接口。原创 2024-06-27 01:20:31 · 1168 阅读 · 0 评论 -
imx6ull/linux应用编程学习(3) 输入设备应用编程(下)(触摸屏)
的取值范围, 可以看到使用该宏需要传入一个 abs 参数,该参数表示为一个 ABS_XXX 绝对位移事件,譬如 EVIOCGABS(ABS_MT_SLOT)表示获取触摸屏的 slot 信息,此时 ioctl()函数的第三个参数是一个 struct input_absinfo *的指针,指向一个 struct input_absinfo 对象,调用 ioctl()会将获取到的信息写入到struct input_absinfo 对象中。但从触摸点的生命周期来看, 它们是同一个触摸点吗?答案肯定不是,为啥呢?原创 2024-06-25 23:12:36 · 989 阅读 · 0 评论 -
imx6ull/linux应用编程学习(3) 输入设备应用编程(上)(按键)
以上列举的每一种事件类型中都包含了一系列具体事件, 譬如一个键盘上通常有很多按键, 譬如字母 A、 B、 C、 D 或者数字 1、 2、 3、 4 等, 而 code变量则告知应用程序是。type=1,说明是上报的是按键类事件EV_KEY(上面type介绍哪里有图),cpde=114 对应的是键盘上的 KEY_VOLUMEDOWN 按键,这儿开发板对应的是那个黄色按键。(type=1) 来说, 如果 code=2(键盘上的数字键 1,也就是 KEY_1), 那么如果 value 等于 1,则表示。原创 2024-06-25 20:12:22 · 1227 阅读 · 0 评论 -
imx6ull/linux应用编程学习(2)GPIO编程(上)
这是基于正点imx6ull开发板的linux应用编程开发,正如所言,其中开发板的驱动编程已经被编写好了。那么应用编程和驱动编程之间的关系和驱动是什么呢?对于一个系统,普通用户的程序肯定是不愿意随便一个程序直接影响到硬件的,其需要一个中介来联系应用层和硬件,而操作系统便是这个中介。而驱动程序根据硬件编写好了各种设备驱动文件,充当了硬件与应用软件中间的桥梁。而应用程序呢,则是调用已经编译好的设备驱动文件,去实现一个控制。应用编程学习主要是学习arm的linux应用层的应用开发。原创 2024-06-22 20:02:34 · 1120 阅读 · 0 评论 -
Linux环境变量 ${CC}的配置方法
在学习Linux的时候是不是觉得打交叉编译链太长太麻烦?这就体现了设置环境变量的重要性!在这篇文章,我主要写两种实现交叉编译环境变量的方法,设置两个变量并且去验证(当然前提是你得先下载号交叉编译工具链,然后把你的交叉编译工具链记下来,我的交叉编译链为arm-linux-gnueabihf-gcc,你之后把这个替换成你的工具链就行,操作流程一样)原创 2024-06-22 14:49:30 · 385 阅读 · 0 评论 -
imx6ull Linux C应用编程学习(1.2) LED点灯(代码理解)
其中if (0 > write(fd1, argv[2], strlen(argv[2]))) ,将第三个参数写入fd1,如果小于0,则代表写入失败。关于上面这段,其中fd1是open文件LED_TRIGGER的文件描述符,O_RDWR表示文件是读写模式,如果打开错误,其会传回负数。由之前可知,fd1文件代表的是触发模式,fd2代表的是亮度,不过开发板led是gpio控制,所以只有1和0亮灭两种形式。law模式实现前6秒每隔一秒灭一次,后7秒,以500ms频率闪烁,等时间到10s后退出程序。原创 2024-06-22 00:36:20 · 334 阅读 · 0 评论 -
imx6ull/linux应用编程学习(基于正点原子)(1)__LED点灯
当然这段代码每个人都不一样,具体意思为:scp -r book(你ubuntu的用户名)@192.168.5.12(地址,上面步骤应该有ping通):/home/book/project/APP/app/15_led(这部分是我文件在ubuntu的路径,当然你可以只传编译好的led文件) /home/root/app(这是你想存入的开发板路径,app是我自己创的一个路径)其中USB_TTL串口需要下载串口驱动,具体可在设备管理器查看,如图:端口列表会显示新增加的驱动。显示已经传入开发板,之后下载程序。原创 2024-06-21 22:31:08 · 294 阅读 · 0 评论