![](https://img-blog.csdnimg.cn/47e8ca839d8d496c866fe79bddbb84b2.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
ARM开发
文章平均质量分 85
酷客NUC9XX系列Linux开发记录
风火轮RK3399&PRO开发记录
迅为RK3568开发记录
凉开水白菜
有嵌入式arm及qt软件开发方面三年经验,嵌入式qt领域专家,csdn/掘金平台优质作者,擅长嵌入式软硬件项目方案设计,qt界面开发,单片机程序设计等。
展开
-
【ARM】Linux内核驱动之字符设备驱动
本章节的内容为静态注册设备号、动态注册设备号、字符设备的注册、class自动创建节点,对于设备号的注册学习的时候可以学习两种方式,在实际开发中更加推荐使用动态注册的方式来使用避免设备号的冲突,字符设备的注册相对比较简单和杂项设备类似只是接口和结构体不同,对于字符设备是不会创建设备节点的,在Linux内核中提供了udev来帮助我们自动创建设备节点减少了不少麻烦;原创 2023-08-16 00:55:34 · 175 阅读 · 0 评论 -
【ARM】imx6ul移植kernel记录,恩智浦github提供的最新kernel(2023年7月31)
本文使用的芯片是imx6ul,移植目标完成对恩智浦github提供的最新uboot(2023年7月31)原创 2023-08-05 03:13:32 · 383 阅读 · 0 评论 -
【ARM】imx6ul移植u-boot记录,恩智浦github提供的最新uboot(2023年7月31)
本文使用的芯片是imx6ul,移植目标完成对恩智浦github提供的最新uboot(2023年7月31)原创 2023-08-04 16:09:34 · 408 阅读 · 0 评论 -
【ARM】Linux内核驱动之设备树的学习-长文
订阅的粉丝可通过PC端文末加我微信,可对文章的内容进行一对一答疑!描述硬件得文本文件,因为语法结构像树所以叫设备树通过DTC编译dts、dtsi文件编译出dtb文件所有的设备树文件都存在与下面的路径二、如何编译设备树?DTC编译器的源码路径,dtc文件夹下面的dtc执行文件就是我们的设备树编译器(要保证源码已经编译过一次)如果编译完成还是没有可能是内核版本太低没有引进设备树,或者是配置选项未勾选,可以在.confg文件中查看该选项最简单的设备树源码编译器编译指令/home/book/liche原创 2023-07-31 00:37:47 · 342 阅读 · 0 评论 -
【STM32】NRF24L01模块的收发调试
这里我是用了两块板子来做通信实验,这里我就直接贴发送端和接收端的.c.h文件,一个是用标准库写的一个是hal库写的,只是两块板子引脚不同代码大差不差;发送端.h文件发送端main函数接收端.c文件接收端.h文件接收端main函数总结:1、两个NRF24L01 通信的核心是知道对方的地址也就是RX_ADDRESS和TX_ADDRESS这两个数组,两个模块的地址可以相同,但通常情况下允许不同的地址通道设置完全相同的地址。2、发送和接收用户数据的宽度两端必须相同才能通信,如果一直没法通信检原创 2022-11-24 15:15:19 · 1477 阅读 · 0 评论 -
【FreeRTOS】软件定时器的使用
软件定时器使用tick作为时间片轮转调度以及延迟操作的时间度量单位,tick是实现定时触发功能的基础。tick计数发生在每次时钟中断处理的过程,时钟中断是定时产生的,系统在默认情况下为1ms触发一次,即一个tick代表1ms,用户可根据应用需要调整该时间。软件定时器是用来在指定时间或者触发一次或多次某个功能函数的调用。这种由定时器来执行的函数叫做定时器回调函数,定时器回调函数以及触发时间由应用程序来设定。当定时器的触发时间到来,则定时器的回调函数会被执行。原创 2022-11-07 12:39:01 · 1939 阅读 · 0 评论 -
【FreeRTOS】队列的使用
基于 FreeRTOS 的应用程序由一组独立的任务构成——每个任务都是具有独立权限的小程序。这些独立的任务之间很可能会通过相互通信以提供有用的系统功能。FreeRTOS 中所有的通信与同步机制都是基于队列实现的;原创 2022-11-03 18:01:15 · 2069 阅读 · 0 评论 -
【FreeRTOS】多任务创建
在上一章我们完成了工程的创建后面代码都会基于这个模板来编写,本章就学习一下实时操作系统给我们带来最直观的优势,多任务执行;原创 2022-11-03 11:35:42 · 671 阅读 · 0 评论 -
【FreeRTOS】系统移植:资料下载
在裸机系统中,所有的程序基本都是自己写的,所有的操作都是在一个无限的大循环里面实现。现在还有一些项目开发用的都是裸机系统,而且也能够满足需求。为什么还要学习 RTOS 编程,偏偏还要整个操作系统进来。一是项目需要,随着项目要实现的功能越来越多,单纯的裸机系统已经不能够完美地解决问题,反而会使编程变得更加复杂,如果想降低编程的难度,我们可以考虑引入RTOS 实现多任务管理,这是使用 RTOS 的最大优势。二是学习的需要,进入实时操作系统的学习对于我们后面学习Linux系统开发会有不少的帮助;原创 2022-11-02 15:41:38 · 1417 阅读 · 1 评论 -
【ARM】使用Ubuntu-base构建根文件系统
刚开始学习嵌入式Linux的时候肯定很多人都是使用的ubuntu装在虚拟机中来运行开发,其中最方便的工具肯定就是下载软件直接使用apt工具就可以完成下载,这种方便比buildroot和busybox都是不能比的,Ubuntu是 Linux 系统的一种,可以简单的将 Ubuntu 理解为一个根文件系统,因此移植Ubuntu也就是将Ubuntu根文件系统移植到我们的开发板上;原创 2022-10-27 16:58:52 · 2490 阅读 · 0 评论 -
【嵌入式开源库】MultiTimer 的使用,一款可无限扩展的软件定时器
MultiTimer 是一个软件定时器扩展模块,可无限扩展你所需的定时器任务,取代传统的标志位判断方式, 更优雅更便捷地管理程序的时间触发时序,MultiTimer 的作者和MultiButton 的作者都是0x1abin。本章使用环境:正点原子stm32F4探索者代码工程使用正点原子HAL库 实验8 定时器中断实验配置系统时间基准接口,安装定时器驱动;实例化一个定时器对象;设置定时时间,超时回调处理函数, 用户上下指针,启动定时器;在主循环调用定时器后台处理函数} }......原创 2022-08-10 16:34:57 · 3489 阅读 · 6 评论 -
【嵌入式开源库】MultiButton的使用,简单易用的事件驱动型按键驱动模块
MultiButton 是一个小巧简单易用的事件驱动型按键驱动模块,可无限量扩展按键,按键事件的回调异步处理方式可以简化你的程序结构,去除冗余的按键处理硬编码,让你的按键业务逻辑更清晰。本章使用环境:正点原子stm32F4探索者代码工程使用正点原子HAL库实验三-按键输入实验};这样每个按键使用单向链表相连,依次进入 button_handler(struct Button* handle) 状态机处理,所以每个按键的状态彼此独立。按键事件事件说明PRESS_DOWN。......原创 2022-08-09 17:33:25 · 1539 阅读 · 0 评论 -
【ARM】rk3399挂载nfs报错
挂载nfs报错mount: /mnt: bad option;原创 2022-08-09 14:35:50 · 437 阅读 · 2 评论 -
【Kernel】驱动开发学习之Platform平台总线模型
平台总线模型也交platform总线模型,他是Linux虚拟出来的一条总线,他并不是真实的一条真实的电气总线;平台总线模型就是把原来的驱动C文件给分成了两个文件一个是device文件对应我们的设备文件,一个是driver文件对应我们的驱动文件,平台总线的优点有1)提高代码重用性2)减少重复性代码3)区分设备与驱动4)更方便管理我们的设备把稳定不变的驱动放在driver里面,需要做改动的设备部分放在device文件中;...原创 2022-07-22 00:30:58 · 651 阅读 · 0 评论 -
【ARM】新唐NUC977移植WK2124驱动
目前WK系列能实现SPI扩展uart的芯片包括WK2124、WK2204、WK2168、WK2132。目前WK2124、WK2204、WK2168能实现SPI扩展4路UART,WK2132能实现扩展2路UART。目前这几款芯片使用的都是相同的linux驱动。WK系列扩展的子通道的UART具备如下功能特点每个子通道UART的波特率、字长、校验格式可以独立设置,最高可以提供2Mbps的通信速率。https提取码ix73httpshttpshttps。......原创 2022-07-18 10:13:42 · 830 阅读 · 0 评论 -
【Kernel】驱动开发学习之字符设备
然后编译我们的驱动代码再通过上面的演示我们就可以看到字符设备注册成功了,但是这种方式存在一个问题就是我们要提前知道空闲的设备号才能进行注册,否则将会发生设备号冲突问题,这里就拿杂项设备驱动号来做申请尝试。这里需要注意的是我们动态申请的设备号是主设备号和次设备号已经合并了的,如果后续会使用到次设备号我们需要使用MAJOR、MINOR来单独提取申请到的主设备号和次设备号。//实际就是把文件操作集写给ops功能。fmt是设备名字,如果设置fmt=xxx的话,就会生成/dev/xxx这个设备文件。...原创 2022-07-17 02:20:39 · 373 阅读 · 0 评论 -
【ARM】在NUC977上搭建基于boa的嵌入式web服务器
搭建基于arm开发板的web服务端程序,通过网页控制开发板LED状态Boa服务器是一个小巧高效的web服务器,是一个运行于unix或linux下的,支持CGI的、适合于嵌入式系统的单任务的http服务器,源代码开放、性能高。Boa是一种非常小巧的Web服务器,其可执行代码只有大约60KB左右。作为一种单任务Web服务器,Boa只能依次完成用户的请求,而不会fork出新的进程来处理并发连接请求。但Boa支持CGI,能够为CGI程序fork出一个进程来执行。Boa的设计目标是速度和安全。.........原创 2022-06-24 15:40:44 · 883 阅读 · 0 评论 -
【Linux】NUC977移植使用MQTT(基于mosquitto)
相关简介: MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议,是一种基于发布/订阅 (publish/subscribe)模式的轻量级协议,该协议构建于 TCP/IP 协议之上, MQTT 最大优点在于,可以以 极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即 时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。 完成目标: 1,完成mosquitto库的编译 2,编写程序...原创 2022-06-23 15:32:48 · 655 阅读 · 2 评论 -
【ARM】迅为rk3568开发板buildroot添加桌面应用
开发板:讯为rk3568根文件系统:buildroot系统:Linux添加桌面应用需要准备三个文件:桌面图标文件、xxx.desktop文件、可执行应用文件推荐使用阿里巴巴矢量图网站进行下载,图标的尺寸为128x128链接直达:https://www.iconfont.cn/该文件内容如下:Name参数表示桌面图标下的文字显示Exec表示可执行程序应用路径Icon是桌面应用图标文件Type表示应用程序(是否有其他类型暂时未知详细可以去buildroot路径下的QT桌面程序下分析)下面的可执原创 2022-06-22 23:02:32 · 1930 阅读 · 0 评论 -
【ARM】迅为rk3568开发板lvds屏设置横屏显示
开发板:讯为rk3568根文件系统:buildroot系统:Linux这里我参考的是迅为资料中的09手册android系统和应用开发手册修改/kernel/arch/arm64/boot/dts/rockchip/topeet_rk3568_lcds.dtsi设备树这里的目录就是我们修改显示屏幕的目录,该目录下有两个设备树文件一个是屏幕的选择一个是屏幕的设置其中:logo,rotate = ;代表逆时针旋转 90 度,logo,rotate = ;代表逆时针旋转 180 度,l...原创 2022-06-19 01:32:35 · 3360 阅读 · 2 评论 -
使用esp8266使用小爱同学实现开灯与关灯操作
材料部分:基于esp8266的继电器模块esp8266——01s模块一个ch340烧录模块一个杜邦线若干软件部分:arduino ide编辑器下载器地址:https://www.arduino.cc/en/Main/Software下载Arduino IDE软件后,解压缩该文件夹。在文件夹中找到exe的文件打开即可然后是ide(编辑器)的配置:打开软件一次打开文件——》首选项,然后在附加开发板管理网址里面添加http://arduino.esp8266.com/stable/package原创 2020-07-28 10:21:22 · 9768 阅读 · 0 评论 -
FPGA数字钟项目总结
一、QUARTUS软件破解首先我我们找到电脑中的破解软件打开然后我们打开点击应用按照以下步骤进行操作然后我们按下电脑键盘上的win+r键输入cmd确定打开命令行窗口然后输入ipconfig/all回车,找到物理地址然后复制到刚刚保存的license文件里面的xxxxx位置保存。最后我们打开左面的64位的 QUARTUS软件选择刚刚保存的license文件,最后破解完成,要注意的是文件目录一定要选择正确。二、Verilog简介Verilog是一门类C语言 ,语法与C接近,但Verilog是硬件设计原创 2020-07-28 10:20:37 · 3319 阅读 · 2 评论 -
嵌入式工程师以及C++程序员到公司就业需要掌握那些技术?
##嵌入式开发方向图森科技有限公司,嵌入式软件研发1、c/c++,python,Linux,shell,Makefile2、Linux下c/c++调试手段3、Linux多线程,进程通信,文件io操作4、socket编程tcp,udp,http网络协议5、232,485,can硬件通信6、加分项:内存优化经验以及OpenCV掌握,ros经验,有飞思卡尔比赛经验加分小马智行pony.ai 嵌入式开发1、Linux系统软件设计与开发2、主要开发Kernel,driver,middleware原创 2020-08-09 18:09:30 · 2025 阅读 · 0 评论 -
【Kernel】驱动编译的两种方式:编译成模块、编译进内核(使用杂项设备驱动模板)
杂项设备的驱动是驱动开发中最简单最方便的,核心就是处理write信号和read信号做出对应的反应。如果需要将驱动编译成模块前提是有编译好的kernel,并且开发板是烧录的该版本的kernel,编译成模块我们只需要新建一个Makefile文件:然后我们只需要make就会生成.ko文件,然后将ko文件拷贝到开发板中,加载驱动使用insmod、卸载内核使用rmmod。驱动编译进内核如果要将驱动编译到内核中去则需要新建两个文件一个Makefile一个KconfigMakefileKconfig相关的Kc原创 2022-06-07 15:15:28 · 3384 阅读 · 0 评论 -
【Linux】NUC977移植使用libmodbus
libmodbus是一个快速、跨平台的Modbus库,目前支持Linux, Mac OS X, FreeBSD, QNX和Windows系统,可以与使用Modbus协议的设备进行数据发送/接收的库,该库包含各种后端以支持通过不同网络进行通信(例如,RTU模式下的串口或TCP / IPv6中的以太网),libmodbus提供了较低通信层的抽象,并在所有支持的平台上提供相同的API;文末提供一份libmodbus官方手册中文翻译文档。.........原创 2022-06-02 14:02:40 · 473 阅读 · 0 评论 -
【Linux】应用编程之C语言文件操作
Linux进阶编程之文件操作前言一、工程的创建1、目录结构2、Makefile二、文件的操作1.打开、关闭文件:open、close2.读取、写入文件:read、write3.综合练习三、文件夹的操作1.2.3.最后前言 对于文件IO来说,一切都是围绕文件描述符来进行的,在Linux系统中所有打开的文件都是一个对应的文件描述符。 文件描述符的本质是一个非负整数,当我们打开一个文件时,系统会给我们分配一个文件描述符。 当我们对一个文件做读写操作的时候,我们使用open函数的时候返回的就是这个文原创 2022-05-24 16:14:00 · 2694 阅读 · 0 评论 -
【Linux】新唐NUC977挂载NFS实现网络文件传输
开发板挂载nfs前言一、虚拟机Ubuntu配置二、开发板挂载最后前言** 相关简介: NFS(Network File System)即网络文件系统,是 FreeBSD 支持的文件系统中的一种,它允许网络中的计算机之间通过 TCP/IP 网络共享资源。在 NFS 的应用中,NFS 的客户端应用可以透明地读写位于远端 NFS 服务器上的文件,就像访问本地文件一样。 使用 NFS,可以很方便的将 PC 上编译好的程序或者一些其他文件复制到开发板上调试,省去了频繁插拔 U 盘的繁琐。原创 2022-05-19 16:34:53 · 580 阅读 · 0 评论 -
【Linux】新唐NUC977编译第一个内核驱动程序Hello World
在新唐NUC977的Hello World内核驱动程序前言一、文件的编写二、内核的编译及烧录最后前言 相关简介: 1,增加驱动文件 hello.c 和对应的 Makefile、Kconfig 2,修改上一级的 Makefile 与 Kconfig 3,使用 Make menuconfig 进行配置 4,编译,烧录和运行完成目标: 创建一个 hello 的驱动,在开机的时候加载,并打印"Hello world"一、文件的编写接着上一章的LinuxBSP包,进入02.lin原创 2022-05-11 16:49:34 · 692 阅读 · 0 评论 -
【Linux】ubuntu安装samba服务器
Linux安装samba服务器前言正文前言在VMware虚拟机中安装samba服务器,可以用于windows与虚拟机文件夹共享,虽然VMware自带文件传输的工具,但是如果换一个环境换一个虚拟机工具就不一定具备该功能,所以samba服务器的搭建还是非常重要的。系统镜像:ubuntu1804正文 sudo apt install samba然后我们进行samba配置sudo vim /etc/samba/smb.conf按两次】】键到文件末添加以下内容[ubuntu_samba]原创 2022-05-09 10:40:27 · 520 阅读 · 1 评论 -
【Linux】新唐NUC977系统编译及烧写流程
新唐NUC977系统编译及下载流程前言一、UBoot的编译二、Kernel的编译三、文件系统的制作四、系统的烧录最后前言 本文需要用到的硬件工具有:青联创客NUC977开发板、MicroUSB一条 需要用到的软件工具有:NuVCOM、NuWriter、以及青联创客提供的LinuxBSP包、ARM交叉编译器、Ubuntu1804系统环境。完成目标: 完成Uboot的编译、Linux内核的编译、使用Busybox制作文件系统、文件系统的打包、烧录Uboot、Kernel、文件系统。一、UB原创 2022-05-05 14:47:32 · 2897 阅读 · 4 评论 -
正点原子IMX6ULL-安装交叉编译器、编译tslib触摸屏库、编译arm环境qt源代码
这里写目录标题交叉编译器下载Tslib下载qt源文件下载配置 ARM 平台的 Qt Creator Kits交叉编译器下载下载链接:https://releases.linaro.org/components/toolchain/binaries/4.9-2017.01/arm-linux-gnueabihf/我们将交叉编译器安装到下面这个目录sudo mkdir /usr/local/arm然后将文件解压到该目录sudo tar xf gcc-linaro-4.9.4-2017.01-x8原创 2021-09-15 16:47:17 · 1467 阅读 · 0 评论 -
在Ubuntu下使用makefile编译C语言工程
首先我们创建项目文件夹mkdir study01跳转到目录cp study01创建项目需要的文件touch main.c app.c app.h Makefile然后我们编写app程序.c程序#include <stdio.h>#include "app.h"int add(int x, int y){ return x + y;}int sub(int x, int y){ return x - y;}.h文件#ifndef __APP_H原创 2021-08-06 17:52:31 · 2999 阅读 · 3 评论 -
ubuntu1604 虚拟机启动仅只有桌面文件和壁纸,ctrl+alt+t打不开终端解决办法
ubuntu1604 虚拟机启动仅只有桌面文件和壁纸,ctrl+alt+t打不开终端解决办法使用ctrl+alt+f1进入tty命令模式然后登陆账号密码最后输入sudo sevice lightdm restart 这样就可以重启桌面如果还是不行的话就重新装unitysudo apt-get updatesudo apt-get install --reinstall ubuntu-desktopsudo apt-get install unity...原创 2021-06-28 15:53:41 · 1488 阅读 · 1 评论 -
C语言编译过程、VIM常用命令
一、 编译过程1、预处理:gcc -E 源文件.c -o 源文件.i预处理宏以及注释2、编译:gcc -S 源文件.i -o 源文件.s通过编译转换为汇编文件3、汇编:gcc -c 源文件.s -o 源文件.o经汇编转换为二进制文件4、链接:gcc main.o -o hello.exe链接所用到的库chmod a+x 源文件.o(linux下)设置二进制文件可执行权限二、vim的日常使用三种模式> 插入模式: i、a、o进入 退出到命令模式用esc原创 2020-11-05 21:23:40 · 429 阅读 · 0 评论