
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
说明文件上传是http服务器的基本功能,goahead当然也支持,但是其设计的使用场景为嵌入式平台,需要节约硬件资源,goahead的实现和其它服务器有些不一样。异常在研究代码之前,先搭建环境测试下文件上传功能,测试时会发现上传成功但是上传的文件不存在。代码解析文件上传相关代码大部分在upload.c中,代码流程如下:解析request头,判断是否upload。* 文件:http.c,函数:par
说明在嵌入式开发中,SD卡是比较常用的器件,记录下其使用方法。底层配置驱动调试。内核配置。Linux内核选项device deivers-> mmc/sd card support-> Samsung s3c sd/mmc card interface support应用层使用硬件识别和显示如果SD卡驱动和内核配置ok,插入SD卡后,内存文件系统目录/sys/bus/mmc/devic
说明在多个平台进行时区设置,发现有多种方式,有的组合设置能生效但是有些组合不能,有些不解,特记录一下。时区设置早期平台(gm8126平台)之前gm8126板子上时区设置只需要将相应的时区文件覆盖掉/etc/timezone即可。/etc/timezone是时区文件,里面内容是复杂不可读的时区信息。平台使用glibc。MTK8516平台MTK8516平台使用systemd系统为初始化进程(init)
什么是嵌入式研发嵌入式研发的标志是:软件研发和硬件研发相互配合。互联网是固定硬件平台,纯软件开发;机械是没有软件,纯硬件开发。当今的大部分电子,除去硬件部分就是软件,大到电冰箱,电视,小到遥控里面都是由软件来控制的,为了更通用和自由定制,交由软件控制会越来越多。工作划分一个电子产品的研发工作由四部分组成。硬件研发;主要将硬件平台设计出来。驱动研发;驱动研发主要工作是在不同系...
背景使用C语言开发时常会遇到以下问题:多次修改导致代码文件(.c)中的函数定义的参数个数/类型与头文件中的函数声明不一致,编译器无法检测出来,即使是开启了严格的编译选项(-Wall -Werror),如下:* test.hint test(int a);* test.c#include <stdio.h>int test(int a, int b){a = 1;b = 2;....}*
说明在工作(芯片设计公司开发)中,使用到的平台较多,交叉编译工具链有32位的也有64位的。所谓32位/64位是硬件层次的概念,是指处理单元的三大总线(数据总线,控制总线,地址总线)是32根导线还是64根导线,每一根导线可以传输1位数据,所以是32位和64位,64位的cpu可以在软件层次兼容32位程序,安装32位系统也能跑32位程序,但是32位的cpu当前无法兼容64位的程序,理论上软件也能实现兼容
数据结构的含义数据结构含义是:数据的结构,包括存储结构和逻辑结构。存储结构是:数据在内存中的存储结构,我认为只有两种,如下所示:线性结构 – 数组(数据呈线性排列的)链式结构 – 链表(数据呈链式排列)逻辑结构是:数据面对应用处理的逻辑结构。数组链表树图…数据结构课程数据结构课程主要学习:数据各种结构以及对数据各种结构的操作算法。存储结构底层内存中...
linux 性能分析工具 perf 和火焰图
说明学过编译原理可知,C语言程序中所有变量的逻辑地址编译后都是确定了的,但是在linux平台上实际使用中可以发现变量的地址不是固定的,如下:* 示例代码#include <stdio.h>int main(){int a;printf("%p\n", &a);return 0;}* 运行结果xxx@Lenovo-V110-15IKB:~/$ ./test0x7ffdd2ec01

说明初学数据结构时,对于链表定义一个空数据的头结点表示不理解,不明白其作用,甚至有时为了节省内存空间而去掉该节点,但是头结点是有意义的。头结点示意图:缺点多定义了一个结点,多占用了一个结点的内存。改善方式:可以采用linux kernel中的list实现方式(结点中只包含结点指针不包含结点数据),减少头节点的内存占用。优点单链表或双链表删除或插入节点时,如果没有头结点,处理有两种情况:操作的对象是








