boa服务器发布
这个东西配置cgi的路径要一次配置出来,不要安装完再配置,否则容易出现cgi的跳转404的现象。
Boa介绍其可执行代码只有大约60KB左右,Boa是一个单任务的HTTP服务器,Boa只能依次完成用户的请求,而不会fork出新的进程来处理并发连接请求。Boa支持CGI。Boa的设计目标是速度和安全。(CGI只是一个进程,用来提供接口),自动目录生成和自动文件枪支进行拼接。Boa的主要设计目标是速度和安全性。安全性在“不能被恶意用户破坏”的意义上,不是“细粒度访问控制和加密通信”。
特点:可靠性和可移植性,Boa不是作为功能强大的服务器。开发平台:GNU / Linux是目前的开发平台。
下载源码http://www.boa.org/
12tar -xvf boa-0.94.13.tar.gzcd ./boa-0.94.13/src/
更改文件
在boa-0.94.13/src目录下,新建install.mk文件,使用Makefile命令install和uninstall安装和卸载软件及软件配置信息:
123456789101112131415161718192 ...
串口应用编程
串口串口全称叫做串行接口,串行接口指的是数据一个一个的按顺序传输,通信线路简单。使用两条线即可实现双向通信,一条用于发送,一条用于接收。串口通信距离远,但是速度相对会低,串口是一种很常用的工业接口。
终端⚫本地终端: 例如对于我们的个人 PC 机来说, PC 机连接了显示器、键盘以及鼠标等设备,这样的一个显示器/键盘组合就是一个本地终端;同样对于开发板来说也是如此,开发板也可以连接一个LCD 显示器、键盘和鼠标等,同样可以构成本地终端。⚫ 用串口连接的远程终端: 对于嵌入式 Linux 开发来说,这是最常见的终端—串口终端。譬如我们的开发板通过串口线连接到一个带有显示器和键盘的 PC 机,在 PC 机通过运行一个终端模拟程序,譬如 Windows 超级终端、 putty、 MobaXterm、 SecureCRT 等来获取并显示开发板通过串口发出的数据、同样还可以通过这些终端模拟程序将用户数据通过串口发送给开发板 Linux 系统,系统接收到数据之后便会进行相应的处理、譬如执行某个命令,这就是一种人机交互!⚫ 基于网络的远程终端: 譬如我们可以通过 ssh、 Telnet ...
LCD应用层编程
接下来学一些linux的应用层编程的内容,重点学习一下LCD,Socket,音频等反面的内容。
之前学习应用编程没有进入提高阶段最近捡一下,已经把TCP/IP的一部分知识补充了。
FrameBuffer在LCD驱动章节说过Framebuffer就是帧缓冲,意味着Framebuffer就是一块内存,里面保存着一帧图像。帧缓冲(framebuffer)是 Linux 系统中的一种显示驱动接口,它将显示设备(譬如 LCD) 进行抽象、 屏蔽了不同显示设备硬件的实现,对应用层抽象为一块显示内存(显存),它允许上层应用程序直接对显示缓冲区进行读写操作 。
LCD是没有显存的,存储在DDR上的一段空间内,显存大小=分辨率x色彩精度/8。
使用ioctl函数进行获取信息当打开 LCD 设备文件之后,需要先获取到 LCD 屏幕的参数信息,譬如 LCD 的 X 轴分辨率、 Y 轴分辨率以及像素格式等信息,通过这些参数计算出 LCD 显示缓冲区的大小。
一般获取FBIOGET_VSCREENINFO(表示获取 FrameBuffer 设备的可变参数信息 )、FBIOPUT_ ...
嵌入式软件安装合集
吐槽一下自己,悲催了呀,安装个pycharm引发了一系列惨案,在最新的pycharm的版本上对于16版本的python3.5不支持,卸载之后终端挂了,apt-get install挂了,重新弄一个系统吧,顺便记录一下,嵌入式的软件安装。
Ubuntu和Windows之间的复制粘贴1234sudo apt-get autoremove open-vm-toolssudo apt-get install open-vm-toolssudo apt-get install open-vm-tools-desktopreboot
安装编程工具make工具安装1sudo apt-get install make
vscode工具安装官网下载安装包https://code.visualstudio.com/
https://vscode.cdn.azure.cn/stable/e7e037083ff4455cf320e344325dacb480062c3c/code_1.83.0-1696350811_amd64.deb
1sudo dpkg -i code_1.83.0-1696350811 ...
嵌入式上的C语言
这篇文章其实更适合在裸机开发操作寄存器之前来学习。
内存为什么需要内存?程序= 代码 + 数据
程序运行的目的要么重在数据结果(有返回值),要么重在过程(无返回值),要么即重于结果又重过程。
计算机程序的运行过程,其实就是程序中很多个函数相继运行的过程。程序是由很多个函数组成的,程序的本质就是函数,函数的本质就是加工数据的动作。
哈佛结构:将程序的代码和数据分开存放的一种结构,但是存放的位置可以是相同的也可以是不同的(ROM&RAM或RAM),总之只要是分成两个部分单独访问的结构都是哈佛结构。
哈佛结构的特点就是代码和数据单独存放,使之不会互相干扰,进而当程序出 BUG 时,最多只会修改数据的值(因为代码部分是只读的,不可改写),而不会修改程序的执行顺序。因此,这种结构大量应用在嵌入式编程 。
冯诺依曼结构:将代码和数据统一放在RAM(随机存取存储器)中,数据和代码之间一般是按照程序的执行顺序依次存储。
这样就会导致一个问题,如果程序出 BUG,由于程序没有对代码段的读写限定,因此,它将拥有和数据一样的读写操作权限。于是就会很容易的死机,一旦代码执行出现一点改变就会 ...
上位机控制激光器
这个工程是假期前完成的,延期更新了。
激光器的IO
所以说需要使用的是PWM,GPIO控制IO口,adc这三个知识点。
首先是要给设备加上pwm的驱动和adc的驱动。
pwm驱动首先是imx6ull有8路PWM输出,对应这8个PWM的控制器,在设备树下有相对应的8个控制器节点。
查看手册可以看到:
• 16-bit up-counter with clock source selection• 4 x 16 FIFO to minimize interrupt overhead• 12-bit prescaler for division of clock• Sound and melody generation• Active high or active low configured output• Can be programmed to be active in low-power mode• Can be programmed to be active in debug mode• Interrupts at compare and rollover
使用GPIO1_ ...
Qt控制gpio(sysfs控制gpio)
使用sysfs方式控制gpiosysfs文件系统sysfs 是一个基于内存的文件系统, 同 devfs、 proc 文件系统一样,称为虚拟文件系统; 它的作用是将内核信息以文件的方式提供给应用层使用。 sysfs 文件系统的主要功能便是对系统设备进行管理,它可以产生一个包含所有系统硬件层次的视图。sysfs 文件系统把连接在系统上的设备和总线组织成为一个分级的文件、 展示设备驱动模型中各组件的层次关系。 sysfs 提供了一种机制,可以显式的描述内核对象、对象属性及对象间关系, 用来导出内核对象(kernel object,譬如一个硬件设备)的数据、属性到用户空间,以文件目录结构的形式为用户空间提供对这些数据、属性的访问支持。
sysfs 文件系统中的目录,包括 block、 bus、 class、 dev、 devices、firmware、 fs、kernel、modules、 power 等,每个目录下又有许多文件或子目录 。
/sys 下的子目录
说明
/sys/devices
这是系统中所有设备存放的目录,也就是系统中所有设备在sy ...
Qt控制LED
Qt控制LED自己搭建的根文件系统,要确保加载了LED的驱动,以及系统的设备树也是支持LED的。
主要关注便是 brightness、 max_brightness 以及 trigger 三个文件,这三个文件都是 LED 设备的属性文件:⚫ brightness: 翻译过来就是亮度的意思, 该属性文件可读可写; 所以这个属性文件是用于设置 LED的亮度等级或者获取当前 LED 的亮度等级,譬如 brightness 等于 0 表示 LED 灭, brightness 为正整数表示 LED 亮,其值越大、 LED 越亮; 对于 PWM 控制的 LED 来说, 这通常是适用的,因为它存在亮度等级的问题,不同的亮度等级对应不同的占空比,自然 LED 的亮度也是不同的; 但对于 GPIO控制(控制 GPIO 输出高低电平)的 LED 来说,通常不存在亮度等级这样的说法,只有 LED 亮(brightness 等于 0)和 LED 灭(brightness 为非 0 值的正整数)两种状态。⚫ max_brightness: 该属性文件只能被读取,不能写,用于获取 LED 设备的最大亮度等级。⚫ ...
Git分支
Git分支在 Git 中提交时,会保存一个提交(commit)对象,该对象包含一个指向暂存内容快照的指针,包含本次提交的作者等相关附属信息,包含零个或多个指向该提交对象的父对象指针:首次提交是没有直接祖先的,普通提交有一个祖先,由两个或多个分支合并产生的提交则有多个祖先。
当使用 git commit 新建一个提交对象前,Git 会先计算每一个子目录(本例中就是项目根目录)的校验和,然后在 Git 仓库中将这些目录保存为树(tree)对象。之后 Git 创建的提交对象,除了包含相关提交信息以外,还包含着指向这个树对象(项目根目录)的指针,如此它就可以在将来需要的时候,重现此次快照的内容了。
现在,Git 仓库中有五个对象:三个表示文件快照内容的 blob 对象;一个记录着目录树内容及其中各个文件对应 blob 对象索引的 tree 对象;以及一个包含指向 tree 对象(根目录)的索引和其他提交信息元数据的 commit 对象。
单个提交对象在仓库中的数据结构
Git 中的分支,其实本质上仅仅是个指向 commit 对象的可 ...
SQL数据库
数据库数据库,是数据的集合,由一张张数据表组成,用来存放数据。
每一张表都有一个唯一标识,即主键,标识数据的唯一性。表与表之间可以 通过主键来互相联系,就是数据能够对应匹配,称之为联结。
什么是SQLiteSQLite是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite是一个增长最快的数据库引擎。
SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite 直接访问其存储文件。
为什么要用SQLite
不需要一个单独的服务器进程或操作的系统(无服务器的)。
SQLite 不需要配置,这意味着不需要安装或管理。
一个完整的 SQLite 数据库是存储在一个单一的跨平台的磁盘文件。
SQLite 是非常小的,是轻量级的,完全配置时小于 400KiB,省略可选功能配置时小于250KiB。
SQLite 是自给自足的,这意味着不需要任何外部的依赖。
SQLite 事务是完全兼容 ACID 的,允许从多个进程或线程安全访问。
SQLite 支持 SQL92(SQL2)标准的大多数查询语言的功能。
SQLite 使用 ANS ...