嵌入式
二二牧人
嵌入式软件工程师
展开
-
linux网络编程——webserver服务器编写
1.原创 2020-12-22 11:21:26 · 189 阅读 · 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 · 294 阅读 · 0 评论 -
linux的驱动开发——下载地址
1.gcc下载地址\qquadgcc下载地址原创 2020-11-30 11:38:29 · 188 阅读 · 0 评论 -
linux的系统移植——内核启动
1.uImage zImage Image bzImage的区别\qquaduImage既包括内核数据,又包括和uboot的衔接数据;zImage Image bzImage本质是一样的,但是数据压缩的格式不同,只包含内核内容。2.uboot内核启动条件\qquad启动参数;文件系统...原创 2020-11-30 11:07:39 · 59 阅读 · 0 评论 -
linux的系统移植——uboot常用命令
1.原创 2020-11-30 10:08:38 · 119 阅读 · 0 评论 -
linux的系统移植——【PC-开发板】的环境搭建
1.主机数据如何传递到开发板?\qquad普通uboot kernel传递到开发板,一般会使用网络接口tftp;2.环境搭建:台式机环境搭建\qquad第一种情况是:路由器环境。把电脑和开发板利用网线都连接到同一个路由器上;第二种情况是:电脑上采用双网卡,一个连接到路由器,一个连接到开发板。3.笔记本环境搭建\qquad串口配置:usb转串口;网络配置:虚拟机配置双网卡或者同一个路由器。虚拟机安装双网卡双网卡安装...原创 2020-11-27 14:58:20 · 141 阅读 · 0 评论 -
linux的系统移植——交叉编译工具集
1.交叉编译工具集\qquad 在我们安装交叉工具集时,不仅安装了arm-linux-gnueabi-gcc ,还安装了很多工具,它们共同构成交叉编译工具集。arm-linux-gnueabi-addr2line arm-linux-gnueabi-gcov-toolarm-linux-gnueabi-ar arm-linux-gnueabi-gdbarm-linux-gnueabi-as arm-linux-gnueabi-gfortranarm-linu原创 2020-11-27 12:09:03 · 419 阅读 · 0 评论 -
linux的系统移植——交叉编译器
1.为什么要有交叉编译器?\qquad一般电脑是X86架构,而单片机一般不是,比如单片机是ARM架构,那么gcc编译生成的程序只能在X86的架构上运行,而不能在ARM架构上运行,所以需要交叉编译器编译生成能在ARM架构上运行的程序。\qquad查看一个可执行程序,究竟属于哪个架构,可以使用file命令。比如有.c文件hello.c。gcc hello.c -o hello #生成可执行文件hellofile hello\qquad运行结果:...原创 2020-11-27 11:05:36 · 822 阅读 · 2 评论 -
linux的系统移植——序言
1.单片机裸机和带有操作系统OS的区别\qquad裸机有三层,从上至下依次为:应用层、驱动层、硬件层;而带有OS的单片机有四层,从上至下依次为:应用层、内核层、驱动层、硬件层。2.系统移植学习内容\qquad四大块:搭建交叉编译环境、bootloader的选择和移植、kernel的配置,编译,移植和调试、根文件系统的制作3.系统移植的基本步骤3.1 确定目标机(单片机)和主机(电脑)的连接方式\qquad...原创 2020-11-26 23:42:36 · 102 阅读 · 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 · 127 阅读 · 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 · 80 阅读 · 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 · 152 阅读 · 0 评论 -
linux的驱动开发——内核模块的编译
1.编译内核模块的编译器\qquad编译器:gcc 交叉编译器2.编写编译内核模块的Makefile\qquad内部编译:内核模块的源文件放在内核源码中进行编译,需要修改内核中的kconfig,Makefile,make menuconfig\qquad静态编译:将内核模块编译进uImage中\qquad外部编译:将内核模块源文件放在内核源码外进行编译\qquad动态编译:编译生成动态模块xxx.ko3.makefile文件的编写KERNDIR := /home/linux/linux原创 2020-11-25 11:23:39 · 189 阅读 · 0 评论 -
linux的驱动开发——简单驱动程序编写
1.字符设备驱动介绍\qquad字符设备驱动是linux驱动中,最基本的一类设备驱动,字符设备就是按照一个字节一个字节的方式进行读写操作的设备。读写数据分先后顺序,我们常见的单片机外设,比如led灯、按键、I2C、SPI、LCD等等都属于字符设备,这些字符设备的驱动就是字符设备驱动。\qquad在linux程序中,驱动程序直接与硬件设备打交道,那么上层的应用程序如何与驱动程序打交道呢?2.字符设备驱动的框架\qquad字符设备驱动的编写主要是open,close,read等函数的编写,在linux中原创 2020-11-25 09:22:57 · 740 阅读 · 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 · 1895 阅读 · 0 评论 -
linux的驱动开发——基于linux的单片机开发简介
1.基于linux的单片机开发和裸机开发的区别\qquad单片机的裸机开发和基于linux的单片机开发,是有这本质的不同。\qquad单片机的裸机开发更加底层,它是直接对寄存器进行操作,进而实现单片机的各种功能,即使有些MCU提供了库函数,但是本质还是对寄存器的种种操作。\qquad基于linux的单片机开发,这里的意思是单片机的芯片上要运行linux操作系统。linux操作系统包括三部分,一是操作系统内核,二是驱动程序,三是应用程序。这里面,驱动程序获取外设,传感器的数据,控制外设;驱动程序获取的数原创 2020-11-16 20:19:12 · 942 阅读 · 0 评论