嵌入式相关基础知识
文章平均质量分 80
跑不了的你
本人懒···就是懒···但是愿意学习,欢迎互相交流,共同进步,可以加qq490165508以及VX 18334728131 大家一起学习,一起进步。
展开
-
Ubuntu 使用 nginx 搭建 https 文件服务器
【代码】Ubuntu 使用 nginx 搭建 https 文件服务器。原创 2023-11-01 13:44:32 · 1377 阅读 · 0 评论 -
Ubuntu 搭建 DHCP ivp6 server 步骤
重新拔插同一交换机中的其他主机上的网线,或者对其上的网卡进行重新启用操作,促使其发起 DHCP 请求来获取新的 IP,拿到新的 IP 后,可以通过 ping 命令来查看当前是否导通。1) 选择系统设置- 网络-【对应的网卡】- 点击设置齿轮图标(这一步骤也可以通过 network/interface 脚本进行修改)2)通过 ping 命令来测试 IPV6 是否可以正常 ping 通。修改网卡作为 DHCP server 网口,需要修改为静态 IP。2)设置对应的 IPV6 静态IP和路由地址。原创 2023-10-30 09:31:51 · 2075 阅读 · 0 评论 -
Linux USB 设备检测
但是 lsusb 仅能查看当前的简单 USB 设备信息,要查看详细的 USB 设备信息,最好还是借助 Linux 下的 debugfs 机制。带宽信息(Bandwidth)原创 2023-05-14 17:35:53 · 2475 阅读 · 1 评论 -
【嵌入式软件开发】芯片外设接口测试工具编写
【嵌入式软件开发】芯片外设接口测试工具编写工具主要包含如下接口功能测试代码展示工具主要包含如下接口功能测试RTC时钟DIDO串口风扇网卡通信代码展示#include <iostream>#include <string>#include <linux/rtc.h>#include <sys/ioctl.h>#include <sys/time.h>#include <sys/types.h>#inclu原创 2023-03-10 17:58:44 · 359 阅读 · 0 评论 -
RK3568 kernel阶段播放开机动画方案实现
基于 RK3568 在 kernel 阶段显示开机 logo 动画,本质原理是将 logo 图片采用刷新的方式演示成为开机动画的效果。kernel 版本采用 4.19 版本(5.10 同样适用)。本文将首先描述如何将一张自定义的图片修改添加到 kernel 中称为 kernel 的开机动画(该方式将不仅仅是在 kernel 路径下替换 logo.bmp 这么简单)。kernel 层开机 logo 显示修改代码,实现开机动画效果。原创 2022-11-22 14:21:46 · 3666 阅读 · 4 评论 -
编译移植龙芯2K1000平台下的qt-5.13
本文记录对龙芯2K进行qt5.13.1版本的移植。本文中对于tslib的安装不做讲解,使用了QT4进行核心板开发的童鞋一般情况下,应该已经安装好了tslib了,直接使用就行。原创 2019-11-02 12:14:21 · 846 阅读 · 2 评论 -
使用示波器测量串口波特率
使用示波器来量取串口uart波特率的方式,从而确保使用的串口波特率工作正常,并且通过这样的方式能够测量出板子串口波特率的误差大小原创 2022-10-16 09:32:35 · 1113 阅读 · 0 评论 -
使用debootstrap构建制作aarch64/arm64 Debian rootfs文件系统
使用 debootstrap 可以很方便的在X86_64平台下拉取和构建ARM64或者ARM32平台架构的Debian、Ubuntu等一系列根文件系统,这样能快速实现板子上rootfs的文件系统制作原创 2022-10-16 09:28:24 · 1900 阅读 · 0 评论 -
RK3588 开发板上根文件系统导出并制作img镜像
将已经在开发板上部署构建好的文件系统导出并制作成可以烧录其他同种架构的开发板的镜像文件这样 rk3588.img 里就已经有刚才制作的根目录内容了,但 rk3588.img 文件大小却是定义的分区大小,不是文件系统的实际大小,所以还要经过一些处理才能发布。开发板的文件系统已经重新打包成了rk3588.img,用该文件和相应的内核文件就可生成系统镜像,烧录镜像后就可直接运行用户程序,从而省掉了重新安装包和其他配置的工作。rk3588.img:为要建的镜像文件。原创 2022-10-15 20:58:08 · 5439 阅读 · 13 评论 -
openwrt RK3568_EVB移植
基于firefly的ROC-RK3568-PC上的openwrt进行移植到RK3568_EVB1_DDR4_V10板子上,通过观察发现,ROC-RK3568-PC这个板子本身是基于RK3568_EVB1_DDR4_V10进行开发的(通过比较两者的dts可以看到)。完成后产生的新的固件ZMJ-ROC-RK3568-PC-OPENWRT-GPT-20220727-1059.img就可以正常烧写到RK3568_EVB1_DDR4_V10板子上并启用了。...原创 2022-07-28 11:11:10 · 4449 阅读 · 7 评论 -
调试九法准则
调试九法!原创 2022-06-30 19:28:09 · 2001 阅读 · 0 评论 -
bluez5.50蓝牙文件传输
bluez5.50进行蓝牙文件传输操作原创 2022-06-23 13:54:36 · 4677 阅读 · 1 评论 -
bluez5.50+pulseaudio实现蓝牙音响音频播放
使用bluez5.50完成蓝牙音响连接和音频播放操作,基于全志T507平台原创 2022-06-20 16:33:52 · 3712 阅读 · 0 评论 -
开源代码交叉编译操作流程及遇到的问题解决(lightdm)
如何快速在X86本机上交叉编译 ARM、MIPS等目标架构的开源代码库,尤其是开源代码依赖众多底层库时。原创 2021-12-30 10:55:02 · 1553 阅读 · 0 评论 -
使用buildroot制作根文件系统(龙芯1B使用)
使用buildroot制作根文件系统(龙芯1B使用)准备编译工具链(buildroot制作)使用buildroot制作根文件系统准备编译工具链(buildroot制作)准备工具如下(获得方法可以到龙芯官方FTP下载目录点下载):buildroot-2016.02.tar.bz2 //可以去Buildroot官方下载,dl //内涵部分网络第三方库,提前准备的,没有没关系,在make编...原创 2021-08-31 17:49:57 · 933 阅读 · 0 评论 -
使用飞凌嵌入式IMX6UL-C1板子——qt+opencv环境搭建
使用飞凌嵌入式IMX6UL-C1板子——qt+opencv环境搭建准备工作:Ubuntu18.04虚拟机环境飞凌官方提供的qt-tslib库,gcc交叉编译器,opencv源码库,qt源码,具体如下:安装交叉编译器方便环境编译,将交叉编译器安装到/usr/local/下新建一个文件目录arm-imx6ul。sudo mkdir /usr/local/arm-imx6ulcd...原创 2021-08-31 17:48:38 · 1354 阅读 · 0 评论 -
proteus数字电路仿真——入门实例
文章目录使用proteus进行简单电路仿真使用proteus进行简单电路仿真原创 2021-08-31 17:46:13 · 9263 阅读 · 5 评论 -
X86下构建 ARM 文件系统并运行
文章目录X86下构建 ARM 文件系统并运行构建流程安装 qemu-user-static安装 debootstrap构建 ARM 平台的 Ubuntu 根文件系统查看 Ubuntu 根文件系统关于 debootstrap 的用法验证arm64 ubuntu rootfs附录X86下构建 ARM 文件系统并运行资料参考在 X86 机器下可以构建一个原生的arm 文件系统,基于qemu-user-static debootstrap chroot命令就可以实现通过qemu-deboot原创 2020-08-15 17:47:21 · 2184 阅读 · 0 评论 -
Linux嵌入式开发——uboot添加logo显示功能
文章目录uboot添加logo显示概述u-boot中添加logo操作步骤获取bmp格式图片制作logo图片数组文件在u-boot中添加logo显示函数调用修改common目录下的Makefile编译u-boot烧写测试uboot添加logo显示概述uboot添加logo显示的原则:越早显示越好。logo本质就是一张图片,图片越小越好。LCD显示屏显示logo的硬件原理:内存控制...原创 2020-01-12 08:53:18 · 3558 阅读 · 0 评论 -
ARM嵌入式开发——基础概念
文章目录嵌入式Linux系统组成嵌入式Linux系统的启动流程uboot制作uboot特点uboot三大功能硬件初始化功能引导加载内核为内核传递启动参数uboot源码操作嵌入式Linux系统组成嵌入式Linux系统软件由三部分组成:BootLoader(uboot)裸板软件,初始化硬件+从闪存加载内核到内存并且启动内核+给内核传递启动参数,告诉内核根文件系统rootfs在什么地方。(上电...原创 2020-01-05 21:21:01 · 583 阅读 · 0 评论 -
Linux驱动开发——内核I2C驱动
文章目录Linux内核i2c驱动编程i2c总线特性I2C总线特点可以概括如下:字节格式应答响应时钟同步Linux内核i2c驱动i2c总线驱动i2c设备驱动Linux内核i2c驱动框架编写i2c设备驱动程序实现原理i2c_clienti2c_driverSMBUS接口函数的使用步骤示例(MMA8653三轴加速度传感器使用)具体代码如下:Linux内核i2c驱动编程i2c总线特性I2C总线是由...原创 2020-01-05 20:19:23 · 3217 阅读 · 2 评论 -
Linux驱动开发——物理地址映射(②)
文章目录用户空间下的物理地址映射mmap系统调用函数mmap系统调用的实现过程对应的底层驱动的mmap接口用户空间下的物理地址映射前一篇讲述了利用imremap函数完成Linux内核空间下的物理地址映射到内核虚拟地址空间上。那么如何能够将外设的物理地址映射到用户空间下的虚拟地址呢,如果一旦完成将外设的物理地址映射到用户空间下的虚拟地址,那么用户就可以直接通过这种映射访问外设的物理地址。利...原创 2020-01-03 23:32:25 · 1037 阅读 · 0 评论 -
Linux驱动开发——物理地址映射(①)
文章目录Linux驱动开发之物理地址映射ioremap函数使用方式方式一方式二不使用GPIO库函数方式来修改之前操作LED灯代码示例总结Linux驱动开发之物理地址映射如果不采用GPIO库函数,那么我们如何能在底层驱动中访问外设对应的硬件寄存器呢?是像类似单片机编程一样直接对硬件寄存器访问么?在Linux系统中,不管是在用户空间还是内核空间一律不允许直接访问硬件外设的基地址(包括寄存器...原创 2020-01-02 21:53:15 · 3131 阅读 · 5 评论 -
Linux驱动开发——去除按键抖动问题
文章目录Linux内核按键去抖动问题按键抖动按键驱动的方法Linux内核去除抖动的原理代码示例总结Linux内核按键去抖动问题按键抖动按键抖动表现出来的现象其实就是明明只是按下去一次按键,但是却总是触发多次中断,本质其实是因为按键属于机械结构,所以不可避免会在按下和松开时产生意外的中断触发。按键驱动的方法按键去抖动的方法有两种:硬件去抖动:硬件工程师只需要添加一个滤波电路等方式即...原创 2020-01-02 20:49:43 · 2253 阅读 · 0 评论 -
Linux驱动开发——内核延时操作和内核等待队列
文章目录Linux内核延时概念应用场景Linux内核相关延时函数Linux内核等待队列机制概述等待队列的功能驱动编程实施步骤示例代码(一)示例代码(二)总结Linux内核延时概念延时又称为等待,延时分为两类:忙延时和休眠延时。忙延时: 当任务进行忙延时时,任务将会导致所占用的CPU资源进行白白消耗,类似原地空转。休眠延时: 进程进入休眠状态,进程会释放所占用的CPU资源给其他进程使用。...原创 2020-01-01 22:21:05 · 1824 阅读 · 0 评论 -
Linux驱动开发——并发和竞态(原子操作方式的使用⑤)
文章目录解决竞态引起异常方法之原子操作原子操作特点位原子操作使用方式比较:整形原子操作使用方式比较:示例代码解决竞态引起异常方法之原子操作原子操作特点原子操作能够解决所有的竞态问题。Linux内核原子操作分为两类:位原子操作和整形原子操作 。位原子操作位原子操作 = 位操作的过程具有原子性 = 对共享资源进行位操作的过程中不允许发生CPU资源的切换。应用场景:如果在代码中发现需要对...原创 2020-01-01 08:49:43 · 585 阅读 · 0 评论 -
Linux驱动开发——并发和竞态(信号量方式的使用④)
文章目录解决竞态引起异常的方法之信号量解决竞态引起异常的方法之信号量其实信号量不同于其他方式能够解决临界区内有休眠操作的问题,最主要的原因是信号量的获取和释放只会影响到需要访问临界区的进程任务,并且在获取访问临界区条件不成立时会进入休眠并释放CPU资源(也就是不会占用消耗CPU资源)。而屏蔽中断、自旋锁、衍生自旋锁则不一样。最主要的是几种方式在访问临界区条件不成立的时候的影响不一样(当前有任务在访问临界区,所以其他任务不能访问)原创 2020-01-01 08:14:08 · 468 阅读 · 0 评论 -
Linux驱动开发——并发和竞态(自旋锁方式的使用③)
文章目录解决竞态引起异常的方法之自旋锁解决竞态引起异常的方法之自旋锁原创 2019-12-31 22:30:18 · 618 阅读 · 0 评论 -
Linux驱动开发——并发和竞态(中断屏蔽方式的使用②)
文章目录原创 2019-12-31 08:04:38 · 413 阅读 · 0 评论 -
Linux驱动开发——并发和竞态(概念介绍①)
文章目录Linux内核并发和竞态案例一:案例二:分析相关概念Linux内核解决竞态引起的异常(漏洞)的方法Linux内核并发和竞态案例一:前面就发现了在Linux内核中使用全局变量或者多线程可能同时访问的区域会遇到竞态的问题,比如前面的定时器使用的实现部分就发生了并发问题。Linux驱动开发——定时器造成这样的原因是因为当我们按下按键的时候会操作多次按键中断触发,而在按键中断处理函数中会...原创 2019-12-30 22:17:28 · 486 阅读 · 1 评论 -
Linux驱动开发——定时器
文章目录Linux内核定时器硬件定时器硬件定时器特点硬件定时器对应的中断处理函数Linux内核跟时间相关的概念软件定时器Linux内核软件定时器的特点Linux内核软件定时器的相关数据结构和配套函数Linux内核定时器硬件定时器硬件定时器特点硬件定时器能够按照一定的频率周期性的有规律的给CPU发送中断信号,发送中断的频率(周期)可以通过软件编程来设置,硬件定时器产生的中断信号可以称之为时...原创 2019-12-30 21:49:24 · 2112 阅读 · 2 评论 -
Linux驱动开发——中断编程之顶半部与底半部机制(1)
中断编程原创 2019-12-29 22:53:07 · 601 阅读 · 0 评论 -
Linux驱动开发——(使用中断处理)gpio(6)
文章目录Linux内核中断编程为什么会有中断机制?中断的硬件触发流程使用中断处理编程Linux内核中断编程的操作步骤驱动开发中断处理相关函数API示例(按键中断触发)代码实现:执行结果:Linux内核中断编程为什么会有中断机制?中断产生的根本原因就是因为外设的数据处理速度远远慢于CPU,比如使用CPU读取UART接收缓冲区的数据,当使用CPU读取UART接收缓冲区的数据时,发现UART接收...原创 2019-12-29 09:51:56 · 6432 阅读 · 0 评论 -
Linux驱动开发——(次设备号使用及混杂设备驱动开发)gpio(5)
文章目录次设备号使用及混杂设备驱动开发使用次设备号字符设备驱动——struct file数据结构案例:将四个LED灯作为四个相同的设备个体,共享一个驱动,但是对应不同的次设备号。驱动示例代码实现:示例运行:Linux混杂设备驱动开发Linux内核混杂设备特点Linux内核描述混杂设备的数据结构代码示例(gpio-led):执行结果次设备号使用及混杂设备驱动开发使用次设备号之前我们都是使用一...原创 2019-12-28 22:26:36 · 709 阅读 · 0 评论 -
Linux驱动开发——(Linux内核字符设备文件的自动创建)gpio(4)
文章目录Linux内核字符设备文件的自动创建自动创建字符设备文件概述字符设备文件的自动创建只需要“三个保证”+“四个函数”三个保证四个函数修改之前LED驱动代码运行结果Linux内核字符设备文件的自动创建前面已经描述过通过mknod命令可以手动创建字符设备文件,那么如何实现自动创建设备文件呢?自动创建字符设备文件概述字符设备文件的自动创建只需要“三个保证”+“四个函数”三个保证保证...原创 2019-12-28 21:07:35 · 775 阅读 · 0 评论 -
Linux驱动开发——(linux内核字符设备硬件操作接口之ioctl)gpio(3)
文章目录linux内核字符设备硬件操作接口之ioctlioctl系统调用函数的使用使用参考:对应的底层驱动的ioctl接口LED灯使用示例:操作流程:linux内核字符设备硬件操作接口之ioctlioctl系统调用函数的使用对于ioctl这个系统调用接口,Linux的创始人在2.0版本之前并没有进行添加,仅有write和read两个接口,但是后来发现当需要去控制文件的某些操作的时候,很显...原创 2019-12-27 21:45:35 · 1743 阅读 · 1 评论 -
linux嵌入式移植部分配置
取消文件系统登录信息(文件系统自动登录) 开发板网卡IP初始化配置 静态IP配置 DHCP动态指定IP获取 压缩包解压和打包操作 cpio解压和打包 gzip解压和打包原创 2019-12-24 17:12:55 · 314 阅读 · 0 评论 -
Linux驱动开发——(Linux内核系统调用实现原理)gpio(2)
文章目录Linux内核系统调用实现原理Linux设备驱动相关概念Linux内核设备驱动分类字符设备文件特点及属性字符设备文件创建的方法主设备号、次设备号、设备号Linux相关库函数字符设备相关数据结构配套相关函数编写Linux字符设备驱动步骤定义初始化硬件操作接口对象:定义初始化字符设备对象:最终向内核注册字符设备对象从内核卸载字符设备对象最后编写之前定义的设备接口具体内容示例具体代码:测试执行:...原创 2019-12-23 22:09:40 · 1148 阅读 · 0 评论 -
Linux驱动开发——(Linux内核GPIO操作库函数)gpio(1)
文章目录Linux内核GPIO操作库函数int gpio_request(unsigned gpio, const char *label)void gpio_free(unsigned gpio)int gpio_direction_output(unsigned gpio, int value)int gpio_direction_input(unsigned gpio)int gpio...原创 2019-12-23 20:33:08 · 2101 阅读 · 0 评论 -
arm嵌入式gdb移植和搭建远程gdb调试运行环境
文章目录概述gdb移植Linux嵌入式板子上单独运行移植准备编译移植ncurse库:编译移植gdb6.8:测试:gdb远程调试运行环境部署下载gdb编译gdb编译PC端编译开发板端测试实现遇到的问题概述在Linux下调试C/C++执行程序,不可避免需要用到调试工具,有些时候总是依赖打印debug很难快速定位问题,这时候就体现了gdb的重要性了。一般桌面系统如Ubuntu、Centos等可...原创 2019-12-21 23:08:54 · 2870 阅读 · 0 评论