自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 exec learning

exec本质就是个替换进程代码段的过程执行了exec,你就是放弃了当前的进程地址空间而使用了新的地址空间来加载exec需要的可执行文件写一个hello world程序,使用gcc工具编译,并在本地执行,可是在kernel中是怎么执行这个ELF格式的文件呢?flush_old_exec(bprm)我们看一下这个非常的retval = flush_old_exec(bprm)int flush_old_exec(struct linux_binprm * bprm){undefined..

2022-01-30 21:45:11 1520

原创 IGMP组播

多播是一种点对多点的通信方式,互联网中的D类地址用于组播: 224.0.0.0-239.255.255.255多播地址分类局部多播地址224.0.0.0-224.0.0.255 为路由协议和其它用途的保留地址 预留多播地址224.0.1.0-238.255.255.255 可用于全球范围 管理权限多播地址为 239.0.0.0~239.255.255.255,可供组织内部使用,类似于私...

2019-01-27 21:52:27 650

原创 中断子系统的简单使用

GIC是ARM推出的一个通用的中断控制器,全志H3中使用了GIC的多核方案,符合GIC V2规格。ARM多核处理器一般搭建一个GIC来提供中断控制功能,中端控制器是连接外设中断系统和CPU系统的桥梁。 ARM上把中断分为三类:PPI(private peripheral interrupt) 16~31这些中断一般是发送给特定的Cpu的,比如每个Cpu有自己对应的Physicalti...

2019-01-27 21:23:17 703

原创 设备树中的GPIO

 涉及到的GPIO驱动基于linux-4.14,soc是全志H3,平台是nanopi-m1,linux中关于GPIO控制是通过GPIOLIB实现的,相关主要API如下:#include <linux/gpio.h> //GPIO操作相关接口int gpio_direction_input(unsigned gpio);//把管脚设置成输入int gpio_direc...

2019-01-27 20:13:32 7834 1

原创 设备树中的spi子系统

spi节点一般表示spi控制器, 它会被转换为platform_device, 全志H3的总线设备驱动位于busses/spi-sun6i.c,该文件有对应的platform_driver;platform_driver的probe函数中会调用i2c_add_numbered_adapter,来增加一个spi_master,调用过程如下:sun6i_spi_probe devm_spi_r...

2019-01-27 16:56:09 3335 2

原创 linux中的usb子系统

    usb协议由于考虑通用性,既可以支持大容量存储设备,音频设备,HID设备,CDC协议,DFU等等等。。。在设计整套协议的时候非常复杂,比如相关包类型,事务,端点等这些概念内容非常多,如果读者向深入分析整套协议栈,可以阅读<<圈圈教你玩usb>>,内容理论与实例相结合,基于51单片机和一块usb桥接芯片实现了usb众多设备。本篇不详细分析总线驱动程序,而着重分析设备驱...

2019-01-27 16:18:52 480

原创 uip协议栈入门

 uip协议栈是一个简单的嵌入式网络协议栈,其不需要操作系统的支持,以事件驱动的方式编程,占用的RAM以及ROM都符合嵌入式的需求,实现了四个基本协议 arp,ip,icmp,tcp。传统的TCP/IP协议栈,比如LInux,windows上的使用的API接口是标准的socket api。由于嵌入式MCU的RAM大小和CPU性能有限,能以运行这种套接字的API占用资源过大,使用这种基于事件驱动...

2019-01-27 16:11:47 2769

原创 设备树中的i2c子系统

   在前面的文章中详细介绍了linux下的i2c子系统,随着linux内核的不断扩大和发展,设备的硬件信息通常是由设备树来指定。i2c节点一般表示i2c控制器, 它会被转换为platform_device, 全志H3的总线设备驱动位于busses/i2c-mv64xxx.c ,该文件有对应的platform_driver;在总线驱动器代码中的platform_driver的probe函数中会调用...

2019-01-13 18:09:05 1749

原创 led子系统

Linux内核发展迅速,作为一名驱动工程师,掌握驱动框架尤为重要。以前写单片机程序或者上手linux驱动程序的时候,都把点灯作为入门程序。可是linux实在做的太好了,都把点灯这么简单的东西都封装好框架。而用户只需要调用LED子系统相关的API就可以实现LED操作。Led子系统源码路径位于driver/leds下,驱动文件位于driver/leds/leds-gpio.c,关于led子系统的核...

2019-01-13 11:49:07 334

原创 使用buildroot构造nanopi-neo文件系统

nanopi相关系列开发板具有超高性价比,广受创客欢迎。在官网中下载到的镜像系统都是ubuntu,debian等linux发行版,这些发行版运行于linux上优点明显。而嵌入式平台上需要根据需要裁剪相关的库和命令。而构造文件系统使用普遍的工具是busybox和buildroot。Buildroot是一款使用交叉编译来简化和自动化为嵌入式系统构建完整Linux系统的过程的工具。相比以前使用的bu...

2019-01-13 11:33:22 973 1

原创 nanopi-m1移植Linux4.14

Linux-4.14内核是全志H3的主线内核,是一个非常纯净的内核。而以前使用多半是基于全志公司定制开发的linux3.4,发现它并没有支持设备树。编译安装uboot 安装交叉编译器推荐使用的交叉编译器arm-cortexa9-linux-gnueabihf-4.9.3.tar.xztar xf arm-cortexa9-linux-gnueabihf-4.9.3.tar.xz /...

2019-01-13 11:20:27 1016

原创 物联网Mqtt协议使用(1)

  MQTT是轻量级基于代理的发布/订阅的消息传输协议,设计思想是开放、简单、轻量、易于实现。这些特点使它适用于受限环境。特别是资源受限的嵌入式平台,该协议的特点有:使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合。 对负载内容屏蔽的消息传输。 使用 TCP/IP 提供网络连接。 小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量。 ...

2019-01-13 11:02:45 2554

原创 单链表C语言操作

    链表是一种相对于顺序存储空间而言的链式存储结构,是一种在存储空间而言不连续的一种数据结构。其中的每个元素称为节点,包含有数据域和指针域,指针域存储的是指向下一个节点,数据域代表这个元素的数据struct ListNode { int data; struct ListNode *next; };头节点,存放第一个节点的地址,数据域一般设为0,最后一个节点的...

2019-01-08 21:34:27 282

原创 onenet物联网平台使用

    OneNET平台提供设备全生命周期管理相关工具,帮助个人、企业快速实现大规模设备的云端管理;开放第三方API接口,推进个性化应用系统构建;提供定制化“和物”APP,加速个性化智能应用生成。注册地址为https://open.iot.10086.cn/,用户可以根据其中的官方文档注册账号,创建设备应用。本教程使用stm32系列芯片,完成硬件与onenet物联网平台进行交互。 stm32外...

2019-01-05 15:41:17 15418 2

原创 2440内核移植相关问题

在使用2440开发板移植3.4内核出现错误,随便记录一下 ifconfig使能网卡出现错误cd arch/arm/s3c24xx 使用find查找网卡平台设备 find -name "dm9000" 发现只有mini2440平台有,smdk2440没有仿照mini2440添加网卡相关平台设备和资源#include <linux/dm9000.h>#define MACH...

2018-12-25 17:22:40 182

原创 ffmpeg在linux上安装

FFmpeg是一套可以记录,转换数字音频,视频,并能将其转换成流的开源计算机程序首先下载源码包,(下载官网:http://ffmpeg.org)最新版为ffmpeg-3.4.2.tar.bz2,解压tar  -xjvf  ffmpeg-3.4.2.tar.bz2cd ffmpeg-3.4.2.tar.bz2如果现在直接进入源码包目录进行配置的话,会报错。这里需要安装yasm的源码包,下载地...

2018-12-25 16:46:04 173

原创 linux 条件测试命令

  Linux shell中提供了条件测试的功能,拥有特定的流程控制语句。bash提供了三种流程控制语句,分别为:条件,循环和分支。   条件测试是shell编程很重要的一部分,通常用"[ ]"来表示条件测试。要注意的是其中的表达式与两边之间留有空格。shell可以支持不同的条件测试,可分为文件测试,整数测试和字符串测试几大类文件测试可以对文件属性进行判断,在系统管理脚本或者启动脚本很常见...

2018-12-22 15:20:37 320

原创 ARM开源库移植实例

libjpeg移植源码下载地址: https://sourceforge.net/projects/libjpeg/files/解压 tar xzf libjpeg-turbo-1.2.1.tar.gz配置 ./configure --prefix=$(pwd)/tmp --host=arm-linux CC=arm-none-linux-gnueabi-gcc --enable-...

2018-12-20 16:48:16 1136

原创 驱动程序嵌入linux内核

一  在Linux内核中增加驱动需要完成以下三项工作:将编写的源代码复制到Linux内核源代码的相应目录 在目录的Kconfig文件中增加新源代码对应项目的编译配置选项 在目录的Makefile文件中增加对新源代码的编译条目二. 实例先把驱动代码first_drv复制到drivers/char目录下设备驱动程序存放在内核源码树根目录drivers/的子目录下,字符设备存在于driv...

2018-12-20 16:35:28 268

原创 cmake入门

cmake使用安装cmake工具在ubuntu等发行版安装 : sudo apt-get install cmake使用cmake工具编写cmake配置文件CMakeLists.txt```cmake_minimum_required (VERSION 2.0)project(demo)add_executeable(demo main.cc)```cmake_m...

2018-11-02 15:00:44 111

空空如也

空空如也

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

TA关注的人

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