自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

young的博客

欢迎关注“嵌入式软件开发交流”公众号

  • 博客(174)
  • 资源 (2)
  • 收藏
  • 关注

原创 嵌入式到底该怎么学

前言 其实一直有人问我嵌入式怎么学,今天跟大家讲讲我的理解。因为嵌入式是一个泛的概念,可能很多人认为嵌入式就是嵌入式Linux。但是其实并不仅仅只有Linux, 像STM32,51单片机也属于这个范畴之内的,它们有的也可以跑协议栈,跑ucos等系统。所以其实嵌入式是有很多方向的,选择一个方向,做好,做精,都是有前途的。接下来,跟大家探讨一下嵌入式的一些方向,和如何去学习。我以前也是摸索着过来的,...

2020-01-17 10:54:31 17253 1

原创 Linux驱动分析之Framebuffer驱动

点击上方 蓝字关注我们! 前言 前面我们了解了LCD的基本架构《Linux驱动分析之LCD驱动架构》,接下来我们拿个具体的实例来分析分析。这样可以了解其大概是如何使用和工作的。F...

2020-08-15 17:14:49 660 1

原创 Linux驱动分析之LCD驱动架构

在Linux设备中,LCD显示采用了帧缓冲(framebuffer)技术,所以LCD驱动也叫Framebuffer驱动,所以L...

2020-08-06 08:15:00 779

原创 Linux应用开发之coredump

程序崩溃往往是最不好调试的,如果是很容易复现的现象,可能我们还可以比较容易分析出问题所在。但是对于那种需要几天,或者在某种特殊条件下才能触发的现象。我们总...

2020-07-28 18:32:00 673

原创 Linux内核中断系统

点击上方蓝色字关注我们!前言 中断在驱动中是非常常用的,无论是外部的GPIO中断,还是SPI,I2C等发送或接收中断,都是必不可少的。所以今天来看看Linux中的中断处理。中断分类...

2020-07-20 13:18:15 712

原创 gdb调试段错误

前言 使用gdb来调试程序应该算是Linux开发的必备技能吧,今天来看看如何使用gdb调试段错误(Segmentation fault)。 如何...

2020-07-08 22:10:27 751

原创 Linux驱动分析之Uart驱动

前言 之前对Uart驱动的整体架构做了介绍,现在来分析具体的驱动程序。我们以NXP 的 IMX6来进行分析。Uart驱动分析内核:4.20芯片:NXP IMX6...

2020-06-29 21:42:10 953

原创 Linux驱动分析之Uart驱动架构

Uart体系结构 UART设备驱动可以使用tty驱动的框架来实现,但是因为串口之间有共性,所以Linux在tty接口上封装了一层(serial core)。后面我...

2020-06-20 12:26:25 915

原创 如何提高C编程能力

前言 目前C语言被应用得最多的估计就是嵌入式了,在学校学习完C语言,考完等级考试之后,可能就会觉得自己的C语言掌握的还可以了。但这其实只能算入门,像...

2020-06-08 08:05:00 875 1

原创 Linux常用开源库

前言 做应用开发的人,经常需要去封装一些接口,或者去实现一些复杂的功能。但是这些功能接口实现不仅费时,而且还不一定能保证稳定性。这也是导致很多人喜欢使用开源库的原因之一。如果满足需...

2020-05-22 21:56:54 789

转载 Linux下实现sleep

sleep:一、 普通版本1、基本设计思路:注册SIGALRM信号的处理函数;调用alarm(nsecs)设定闹钟;调⽤pause等待,内核切换到别的进程运行;nsecs秒之后,闹钟超时,内核发SIGALRM给这个进程 ;从内核态返回这个进程的⽤户态之前处理未决信号,发现有SIGALRM信号,其处理函数是sig_alrm;切换到用户态执行sig_alrm函数,进⼊sig_alrm...

2020-05-07 10:24:30 9605

原创 Linux信号及工作原理

什么是信号 信号可以理解为软件中断,是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是差不多的。信号是异步的,一个进程不必通过任何...

2020-05-06 18:05:00 720

原创 Linux驱动之I2C设备驱动

内核:4.20芯片:HYM8563 RTC下面的代码分析主要都在注释中,会按照驱动中函数的执行顺序分析。一、加载和卸载函数static const struct i2c_device_id hym8563_id[] = { { "hym8563", 0 }, {},};MODULE_DEVICE_TABLE(i2c, hym8563_id);static const str...

2020-05-01 21:05:01 11301

原创 Linux驱动分析之SPI设备

前言前面我们对SPI控制器驱动进行了分析,接下来来分析SPI设备驱动。我们以DS1302驱动作为分析对象。DS1302是一款RTC芯片,估计很多人在学单片机时用到过。RTC芯片算是比较简...

2020-04-29 09:05:00 746

原创 Linux驱动分析之SPI控制器

前言之前对SPI驱动的整体架构做了介绍,现在来分析具体的驱动程序。之前说过,SPI驱动分为设备驱动和控制器驱动。先来分析控制器驱动。我们以RockChip的控制器来作为分析。SP...

2020-04-23 21:28:20 750

原创 socket返回值为0的问题

一、问题描述socket_id为0,1,2的是给标准输入输出用的。当调用socket()来创建套接字时,返回值确实0,这时候如果进行读写,就是直接打印到控制台了。二、什么情况下socket返回值为01. 如果我们调用close(0)之后,socket_id = 0的便处于“空闲”状态。用户利用socket函数创建套接字时,便可能会将0分配给新创建的socket。这种情况下,一般是套接字声明...

2020-04-15 14:50:13 13219

原创 Linux驱动分析之SPI驱动架构

SPI体系结构主要由三部分组成:(1) SPI核心(2) SPI控制器驱动(3) SPI设备驱动基本和I2C的架构差不多重要结构体内核版本:3.7.6spi_master//SPI控制器...

2020-04-14 19:46:12 710

原创 深入理解Socket的读写

前言对于Linux网络编程,有很多坑需要我们去踩。在这个时候,我们才会知道理论知识的重要性。无论是哪种语言,网络编程都可以写成厚厚的一本书。举个例子,比如“当网络断掉,我们调用write去往socket中写入数据,为什么返回正常写入呢?”。所以有空多看看《TCP/IP详解》,《UNIX网络编程》等经典书籍来补充网络知识。深入理解write首先,我们来解决上面的问题。为什么网络断了,还能wri...

2020-03-10 20:25:36 13083

原创 printf缓冲区刷新问题

一、前言首先,printf缓冲区的问题,平时不大会发现,当时是在使用sleep函数时出现的。先来看一下问题。#include <stdio.h>int main(){ printf("hello\n"); sleep(1); //延迟1秒 printf("world\n"); return 0;}上面的代码正常输出:hellowor...

2020-02-03 22:33:20 13373

原创 STM32CubeMx教程(一) -----界面介绍

一、主界面菜单栏: File、Window 、Help, 菜单栏中覆盖了下面几项功能新建工程: 可以通过三种方式来新建工程通过选择芯片型号通过选择板子型号通过选择芯片型号及封装安装软件包: 下载官方的软件开发包已存在工程: 快速打开已经创建好的工程欢迎大家关注我的微信公众号!!...

2019-12-28 20:09:12 12893

转载 linux高精度struct timespec 和 struct timeval

一、struct timespec 定义:typedef long time_t;#ifndef _TIMESPEC#define _TIMESPECstruct timespec { time_t tv_sec; // seconds long tv_nsec; // and nanoseconds };#endifstruct timespec有两个成员,一个是秒,一个是...

2019-12-25 10:15:22 12680

原创 自平衡小车资料

收集了一些智能小车和自平衡小车的资料,分享给大家!对于一些电赛的小伙伴,或者学习嵌入式的小伙伴,一定会有帮助的。公众号“嵌入式软件开发交流”后台回复【平衡小车】获取资料欢迎大家关注我的微信公众号!!...

2019-11-28 19:41:45 12870

转载 【IoT】物联网之 WIFI 一键配网 smartConfig 浅析(ESP32)

一、背景物联网时代技术开始规模化服务于民众,方便快捷显得尤为重要,WIFI 直连便是一个典型案例。目前主流的 WIFI 配置模式有以下 2 种:1、智能硬件处于 AP 模式(类似路由器,组成局域网),手机用于 STA 模式手机连接到处于 AP 模式的智能硬件后组成局域网,手机发送需要连接路由的 SSID 及密码至智能硬件,智能硬件主动去连接指定路由后,完成配网2、一键配网(smartCo...

2019-11-12 15:01:01 12848

原创 Ubuntu切换默认sh

一、bash与dash从Ubuntu 6.10开始,默认使用dash(theDebian Almquist Shell)而不是bash(the GNU Bourne-Again Shell).但Login Shell还是bash。原因是dash更快、更高效,而且它符合POSIX规范。Ubuntu在启动的时候会运行很多shell脚本,使用dash可以加快启动速度。二、切换bash和dash先...

2019-11-12 14:33:37 12837

原创 嵌入式开发资料汇总

一、单片机51单片机普中开发板资料:https://pan.baidu.com/s/1eQgPuL0

2019-10-23 13:38:07 15854

原创 Linux驱动之I2C控制器驱动

平台: 三星2440内核版本:4.20分析将会按照驱动中函数的执行顺序。一、装载和卸载函数static const struct platform_device_id s3c24xx_driver_ids[] = { { .name = "s3c2410-i2c", .driver_data = 0, }, { .name = "s3c2440-i2c", .dri...

2019-10-09 19:52:36 12346

原创 SourceInsight4.0高亮快捷键不能用

问题:SourceInsight4.0的高亮快捷键无法使用解决方法:4.0之后高亮的快捷键从shift+F8换成了F8,系统中有其他软件占用了该F8快捷键。我是有道词典占用了该快捷键(取词功能)。关闭之后就OK了,或者修改快捷键。...

2019-09-19 09:11:08 14777

原创 Linux驱动之I2C驱动架构

一、Linux的I2C体系结构主要由三部分组成:(1) I2C核心提供I2C控制器和设备驱动的注册和注销方法,I2C通信方法,与适配器无关的代码以及探测设备等。(2) I2C控制器驱动(适配器)(3) I2C设备驱动二、重要的结构体i2c_adapter//i2c控制器(适配器)struct i2c_adapter { struct module *owner; uns...

2019-09-15 11:13:47 12532

原创 ST官网下载STM32固件库

步骤一:打开ST官网https://www.stmicroelectronics.com.cn/content/st_com/zh.html步骤二:点击工具和软件下–》嵌入式软件–》STM32微控制器软件步骤三:点击STM32标准外设软件库或STM32Cube MCU和MPU包步骤四:选择对应的型号有一些型号没有的可以到“STM32Cube MCU和MPU包” 找找。步骤五:下载...

2019-08-20 09:35:57 15879 2

原创 一道C面试题的思考

一、前言C语言真的是学无止境的感觉,大部分同学大学都会开设C语言课程。很多人把C语言二级过了就感觉入门了;对于那些在做嵌入式开发的工程师,几乎每天都要接触C语言,很多人会感觉自己C语言学得很溜了。那好,咱们用一道C语言面试题来测试一下。二、面试题首先给出题目:定义一个宏,求两个数中的最大数OK,很多人应该能很快写出#define MAX(x,y) x > y ? x : y...

2019-08-17 17:01:37 12593

原创 字符设备驱动基础知识

一、字符设备结构体(cdev)在Linux内核中, 使用cdev结构体来描述一个字符设备。struct cdev { struct kobject kobj; //内嵌的kobject对象 struct module *owner;//所属模块 const struct file_operations *ops; //文件操作结构体 struct list_head list; de...

2019-07-20 21:28:48 12536

原创 Qt警告处理:libpng warning: iCCP: known incorrect sRGB profile

在 qt中加载某些 png图片会出现:libpng warning: iCCP: known incorrect sRGB profile 告警信息。这个警告主要跟png图片的格式有关,说明libpng库的支持还不是很好。解决办法:使用QImage对图片进行处理一下。例子:QImage img;img.load("icon.png");img.save("icon.png");...

2019-07-04 12:45:59 13284

原创 select函数中的坑(C语言)

最近写了一个测试驱动的poll函数的应用程序,在应用层中调用select进行操作,设置好timeout之后,如果只对select()调用一次,就没有问题。但一旦多次调用后,就变成只有第一次timeout有效,后面的都没有效果了。#include <sys/types.h>#include <sys/stat.h>#include <sys/time.h>...

2019-06-28 10:17:58 12700

原创 Vmware安装OpenWrt

(1) 首先要安装Vmware, 这个请自行百度安装。(2) 安装个Ubuntu系统,这个是为了转换镜像。当然也可以直接下载别人已经转换完成的镜像。(3) 下载openwrt镜像https://archive.openwrt.org/chaos_calmer/15.05/x86/generic/(4) 在Ubuntu中安装qemu-img工具:sudo apt-get install q...

2019-06-07 13:18:04 20615 10

原创 C程序中的内存分布

C语言中,定义了5个内存区间:代码区;全局变量和静态变量区;局部变量区即栈区;动态存储区,即堆区;常量区。1)栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。2)堆区(heap)— 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。3)全局区(静态区)(static)—全...

2019-05-30 22:00:21 12441

转载 RK3288搭配以太网PHY芯片使用,这些你需要了解

(1)以太网PHY芯片驱动及接口 瑞芯微在设计RK系列主控芯片时,有内置以太网MAC控制器,通常只需要搭配一颗以太网PHY芯片,即可实现以太网卡功能。根据规范,不同厂家的PHY芯片,一般有一部分寄存器的定义是通用的,只需配置了这些通用的寄存器,基本上PHY就可以正常工作。对应Linux 系统,一般驱动中会自带有通用的PHY驱动。特另是RK3288之前芯片所配套的SDK中使用...

2019-04-30 11:51:39 14474

原创 [DTS]设备树实践

以下内容以RK3288作为讲解kernel\arch\arm\boot\dts\rk3288.dts(1) 头文件#include <dt-bindings/gpio/gpio.h>#include <dt-bindings/interrupt-controller/irq.h>#include <dt-bindings/interrupt-controll...

2019-04-13 13:05:17 13040

原创 [DTS]设备树语法

一、设备树语法(1)设备树节点语法[label:] node-name[@unit-address] { [properties definitions]; [child nodes];};解释:&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;label: 可选项,节点别名&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;node-name: 节点名&amp;

2019-03-14 21:29:48 13690

原创 [DTS]设备树基本概念

一、什么是设备树 在Linux3.x之前的内核源码中,存在大量对板级细节信息描述的代码。这些代码充斥在/arch/arm/plat-xxx和/arch/arm/mach-xxx目录。为了解决这个问题而引入设备树。 官方对设备树的描述是,一种描述硬件资源的数据结构。 它通过bootloader将硬件资源传给内核,使得内核和硬件资源描述相对独立。 设备树的主要优势:对于同一SOC的不同主板,只需...

2019-02-28 21:20:51 12696

原创 Linux用户空间和内核空间

一、用户空间和内核空间现在操作系统都是采用虚拟存储器,对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方)。为保证内核的安全,用户进程是不能直接操作内核的,所以Linux将虚拟空间划分为两部分,一部分为内核空间,一部分为用户空间。二、 用户空间和内核空间的内存分配linux操作系统而言,将最高的1G字节(从虚拟地址0xC0000000到0xFFFFFFFF),供内核使用,...

2019-01-31 21:07:21 12300

test_pcm_file.pcm|test1.pcm

pcm文件,可以用于pcm格式音频文件

2020-11-10

BitBake User Manual_3.0.pdf

BitBake官方使用手册,英文版,讲解BitBake工具的使用,配方文件的使用。 Linux开发必备。。。

2019-12-13

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除