嵌入式
二二牧人
嵌入式软件工程师
展开
-
linux网络编程——webserver服务器编写
1.原创 2020-12-22 11:21:26 · 208 阅读 · 0 评论 -
linux网络编程——boa移植
1.boa的介绍 boa webserver 是一个小巧高效的 web 服务器,可运行在 Unix 或 Linux 平台,支持 CGI ,源代码开放;是一个非常适合于嵌入式系统的单任务 http 服务器。 2.boa的下载和安装 2.1 下载 下载地址:boa下载地址 2.2 安装 (1)解压源码包 tar zxvf boa-0.94.13.tar.gz; (2)进入./boa-0.94.13/src目录,src包含的是boa的源码; (3)执行 sudo ./configure,创建Makefile文件;原创 2020-12-22 08:49:41 · 336 阅读 · 0 评论 -
linux的驱动开发——下载地址
1.gcc下载地址 \qquadgcc下载地址原创 2020-11-30 11:38:29 · 242 阅读 · 0 评论 -
linux的系统移植——内核启动
1.uImage zImage Image bzImage的区别 \qquaduImage既包括内核数据,又包括和uboot的衔接数据;zImage Image bzImage本质是一样的,但是数据压缩的格式不同,只包含内核内容。 2.uboot内核启动条件 \qquad启动参数;文件系统 ...原创 2020-11-30 11:07:39 · 78 阅读 · 0 评论 -
linux的系统移植——uboot常用命令
1.原创 2020-11-30 10:08:38 · 140 阅读 · 0 评论 -
linux的系统移植——【PC-开发板】的环境搭建
1.主机数据如何传递到开发板? \qquad普通uboot kernel传递到开发板,一般会使用网络接口tftp; 2.环境搭建:台式机环境搭建 \qquad第一种情况是:路由器环境。把电脑和开发板利用网线都连接到同一个路由器上;第二种情况是:电脑上采用双网卡,一个连接到路由器,一个连接到开发板。 3.笔记本环境搭建 \qquad串口配置:usb转串口;网络配置:虚拟机配置双网卡或者同一个路由器。虚拟机安装双网卡双网卡安装 ...原创 2020-11-27 14:58:20 · 168 阅读 · 0 评论 -
linux的系统移植——交叉编译工具集
1.交叉编译工具集 \qquad 在我们安装交叉工具集时,不仅安装了arm-linux-gnueabi-gcc ,还安装了很多工具,它们共同构成交叉编译工具集。 arm-linux-gnueabi-addr2line arm-linux-gnueabi-gcov-tool arm-linux-gnueabi-ar arm-linux-gnueabi-gdb arm-linux-gnueabi-as arm-linux-gnueabi-gfortran arm-linu原创 2020-11-27 12:09:03 · 446 阅读 · 0 评论 -
linux的系统移植——交叉编译器
1.为什么要有交叉编译器? \qquad一般电脑是X86架构,而单片机一般不是,比如单片机是ARM架构,那么gcc编译生成的程序只能在X86的架构上运行,而不能在ARM架构上运行,所以需要交叉编译器编译生成能在ARM架构上运行的程序。 \qquad查看一个可执行程序,究竟属于哪个架构,可以使用file命令。比如有.c文件hello.c。 gcc hello.c -o hello #生成可执行文件hello file hello \qquad运行结果: ...原创 2020-11-27 11:05:36 · 912 阅读 · 2 评论 -
linux的系统移植——序言
1.单片机裸机和带有操作系统OS的区别 \qquad裸机有三层,从上至下依次为:应用层、驱动层、硬件层;而带有OS的单片机有四层,从上至下依次为:应用层、内核层、驱动层、硬件层。 2.系统移植学习内容 \qquad四大块:搭建交叉编译环境、bootloader的选择和移植、kernel的配置,编译,移植和调试、根文件系统的制作 3.系统移植的基本步骤 3.1 确定目标机(单片机)和主机(电脑)的连接方式 \qquad ...原创 2020-11-26 23:42:36 · 119 阅读 · 0 评论 -
linux的驱动开发——设备号
1.设备号的获取 \qquad设备号的获取方法:自动分配;指定设备号注册 2.自动分配函数 \qquad函数:int alloc_chrdev_region(dev_t *dev, unsigned baseminor, unsigned count, const char *name) \qquad功能:分配设备号 \qquad参数:第一个参数:dev_t类型定义的变量,取地址传入;第二个参数:次设备号,次设备号自己指定;第三个参数:设备个数;第四个参数:名字 \qquad返回值:成功返回0;失败返回负数原创 2020-11-25 21:50:32 · 149 阅读 · 0 评论 -
linux的驱动开发——字符设备驱动
1.字符设备驱动 \qquad字符设备驱动是最基本,最常用的设备。它将千差万别的硬件设备采用统一的接口封装起来,屏蔽了硬件的差异,简化了应用层的操作。 2.描述所有字符设备的结构体 \qquad描述所有字符设备的结构体在linux内核目录下的\include\linux\cdev.h中,结构体为: struct cdev { struct kobject kobj; struct module *owner; const struct file_operations *ops; struct lis原创 2020-11-25 21:16:36 · 98 阅读 · 0 评论 -
linux的驱动开发——内核模块如何使用?
1.内核模块的使用 \qquad查看内核模块的信息的命令: modinfo xxx.ko \qquad查看当前内核中已经插入的内核模块 lsmod \qquad将内核模块加载到内核中,和内核形成一个整体,运行 sudo insmod xxx.ko //加载函数会被调用 \qquad查看内核日志信息 dmesg \qquad将内核中的内核模块,从内核中卸载出来 sudo remmod xxx //没有后缀,卸载函数会被调用 ...原创 2020-11-25 19:56:52 · 182 阅读 · 0 评论 -
linux的驱动开发——内核模块的编译
1.编译内核模块的编译器 \qquad编译器:gcc 交叉编译器 2.编写编译内核模块的Makefile \qquad内部编译:内核模块的源文件放在内核源码中进行编译,需要修改内核中的kconfig,Makefile,make menuconfig \qquad静态编译:将内核模块编译进uImage中 \qquad外部编译:将内核模块源文件放在内核源码外进行编译 \qquad动态编译:编译生成动态模块xxx.ko 3.makefile文件的编写 KERNDIR := /home/linux/linux原创 2020-11-25 11:23:39 · 218 阅读 · 0 评论 -
linux的驱动开发——简单驱动程序编写
1.字符设备驱动介绍 \qquad字符设备驱动是linux驱动中,最基本的一类设备驱动,字符设备就是按照一个字节一个字节的方式进行读写操作的设备。读写数据分先后顺序,我们常见的单片机外设,比如led灯、按键、I2C、SPI、LCD等等都属于字符设备,这些字符设备的驱动就是字符设备驱动。 \qquad在linux程序中,驱动程序直接与硬件设备打交道,那么上层的应用程序如何与驱动程序打交道呢? 2.字符设备驱动的框架 \qquad字符设备驱动的编写主要是open,close,read等函数的编写,在linux中原创 2020-11-25 09:22:57 · 778 阅读 · 0 评论 -
linux的驱动开发——交叉编译器
1.交叉编译器 \qquadARM裸机、Uboot移植、linux移植这些都需要在linux系统上进行编译,编译就需要编译器。在linux系统中,可以使用gcc命令对c语言程序进行编译,但gcc编译器是针对X86架构的,现在需要对ARM架构的代码进行编译。所以我们现在需要一个可以对ARM架构的代码进行编译的gcc编译器,这个编译器被称为交叉编译器。 \qquad交叉编译器具有如下的特点: \qquad(1)是一个gcc编译器 \qquad(2)运行在X86架构上 \qquad(3)可以编译ARM架构的代码,原创 2020-11-17 10:46:31 · 2305 阅读 · 0 评论 -
linux的驱动开发——基于linux的单片机开发简介
1.基于linux的单片机开发和裸机开发的区别 \qquad单片机的裸机开发和基于linux的单片机开发,是有这本质的不同。 \qquad单片机的裸机开发更加底层,它是直接对寄存器进行操作,进而实现单片机的各种功能,即使有些MCU提供了库函数,但是本质还是对寄存器的种种操作。 \qquad基于linux的单片机开发,这里的意思是单片机的芯片上要运行linux操作系统。linux操作系统包括三部分,一是操作系统内核,二是驱动程序,三是应用程序。这里面,驱动程序获取外设,传感器的数据,控制外设;驱动程序获取的数原创 2020-11-16 20:19:12 · 1035 阅读 · 0 评论