嵌入式开发
文章平均质量分 89
我不叫小海南
这个作者很懒,什么都没留下…
展开
-
学生管理系统C语言实现
近期做了一个学生管理系统,巩固了下文件io的知识!虽然只是一个小项目,不管对项目开发的认识有了一个小的提升。下面贴出各部分工作的代码。在codeblocks上编译完美运行。先上图,程序运行后的菜单界面:有基本的增删改查功能,还多了排序和统计的辅助功能。接下来分头文件和各个函数说明程序实现原理。1.结构体头文件Studen.h(注意:头文件和.c文件不在同一个目录下,所以导入头文原创 2017-06-20 13:14:41 · 2352 阅读 · 0 评论 -
进程间通信——信号量
信号量信号量的作用主要是用来保护共享资源,使得资源在一个时刻只有一个进程(线程)所拥有。信号量的值为正的时候,说明它空闲。所测试的线程可以锁定而使用它。若为0,说明它被占用,测试的线程要进入睡眠队列中,等待被唤醒。为什么要使用信号量?因为共享内存是可以由多个进程同时访问,假如有多个进程同时访问同一块地址的话,内存就会出错,或者是运算错误,所以当某个进程访问共享内原创 2017-08-05 23:37:55 · 261 阅读 · 0 评论 -
进程间通信——信号
信号 软中断信号(signal,又简称为信号)用来通知进程发生了异步事件。在软件层次上是对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是进程间通信机制中唯一的异步通信机制,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。进程之间可以互相通过系统调用kill发送软中断信号。内核也可以因为内部事件而原创 2017-08-05 23:52:24 · 281 阅读 · 0 评论 -
线程的简单介绍与实现
线程和进程 线程:是系统调度的基本单位 进程:是系统分配资源的基本单位为了任务处理linux系统引入了进程的概念去实现多任务处理: 进程的特点:1.进程间的内存空间是互相独立的。 2.进程是系统分配资源的最少单位 -》每创建一个进程系统都会进行一次资源分配原创 2017-08-05 23:57:01 · 205 阅读 · 0 评论 -
mplayer解码库的移植
---------linux系统的多媒体处理---------音频解码库:madplay 视屏解码:mplayer 音频录制:alsa-----------------------------------开源免费-------------------------------------1.解压源码把所有的源码包复制到/home/ge原创 2017-08-06 23:20:11 · 1295 阅读 · 0 评论 -
TCP服务器、客户端的简单实现
1. IP地址(IPV4 IPV6) 以一个32位的整形表示:172.166.111.110 -》点分10进程 地址 255.255.255.255 表示为 FF FF FF FF ->二进程 2.IP地址分类A类地址:0.0.0.0 -- 127.255.255.2原创 2017-08-06 23:24:13 · 513 阅读 · 0 评论 -
UDP服务器、客户端的简单实现
TCP协议和UDP协议的区别:TCP:面向连接,传输可靠(保证数据正确性,保证数据顺序),用于传输大量数据(流模式),速度慢,建立连接需要开销较多。UDP:面向非连接,传输不可靠,用于传输少量数据(数据包模式),速度快。UDP协议的搭建流程---------------------------UDP通信接收端-----------原创 2017-08-06 23:27:15 · 1226 阅读 · 0 评论 -
套接字选项&UDP广播
套接字选项(socket options)每个套接字在不同的协议层次(级别)上有不同的行为属性(选项),有两个函数用来设置或获取这些套接字选项getsockoptsetsockoptNAME getsockopt, setsockopt - get and set options on socketsSYNOPSIS #inc原创 2017-08-06 23:31:16 · 1042 阅读 · 0 评论 -
IO多路复用
读写IO 阻塞I/O: 读::read一个文件,假如文件没有数据则读取会阻塞直到有数据时,返回数据的大小或读错误 写: write一个文件,写一般不会阻塞,但是当要写入的空间写满时,写就会阻塞,等待空间中有地方可写时,才再次写入,或写失败。 非阻塞I/O: O_NONBLOCK原创 2017-08-06 23:33:00 · 286 阅读 · 0 评论 -
UDP组播
UDP组播的搭建流程-----------------------------------------------------------------------------------------------------------------------------【murecv.c】#include #include原创 2017-08-06 23:35:02 · 411 阅读 · 0 评论 -
alsa库的移植
1.下载alsa-1.0.tar.gz 到开发板下载地址2.解压alsa-1.0.tar.gz库tar -xzvf alsa-1.0.tar.gz3.把alsa库中的所有工具下载到/bin目录 cd /alsa-1.0.22/bin cp * /bin -R 4.把alsa库中的所有库下载到/原创 2017-08-06 23:36:25 · 576 阅读 · 0 评论 -
数据库介绍
数据库:基础接口---------------1.数据 data描述事件的符号记录,包括数字、字符串、图像、音频、影像等,它们都可经过数字化存入计算机2.数据库 database存储数据的仓库,有组织、可共享的数据集合,按照数据结构来组织、存储和管理数据3.数据库管理系统 DBMSDBMS应该提供如下功原创 2017-08-06 23:49:16 · 300 阅读 · 0 评论 -
sqlite3数据库命令
SQL:结构化查询语言 Structrue Query Language是所有关系型数据库管理系统的标准语言 非过程化语言只需要去定义期望结果,将产生结果的过程交给外部代理(数据库引擎)来定义根据SQL语言的功能可以这样分类:数据定义语言:DDL创建表:CREATE TABLE IF NOT EXISTS 表名(原创 2017-08-06 23:50:50 · 427 阅读 · 0 评论 -
进程间通信——共享内存
共享内存共享内存是被多个进程共享的一部分物理内存。共享内存是进程间共享数据的一种最快的方法,一个进程向共享内存区域写入了数据,共享这个内存区域的所有进程就可以立刻看到其中的内容。原理图如下:为什么要使用共享内存?因为管道通信,每次都要调用系统IO,调用系统IO是很损耗系统资源的,假如有某些数据,进程之间是频繁访问的,我们就可以在系统中申请一片内存让他们共同访原创 2017-08-05 23:35:44 · 212 阅读 · 0 评论 -
进程间通信——消息队列
什么是消息队列?消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。 每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型的数据结构。我们可以通过发送消息来避免命名管道的同步和阻塞问题。但是消息队列与命名管道一样,每个数据块都有一个最大长度的限制。查看系统中ipc的数量:ipcs -m shared memory segments原创 2017-08-05 23:32:48 · 201 阅读 · 0 评论 -
进程间通信——管道
为什么要学习进程通信?因为复杂程序都是多任务的,进程间需要相互协作,但进程间的内存空间又是独立的,所以需要掌握进程的通信让他们相互协作。管道的概念:管道是一种最基本的IPC机制,作用于有血缘关系的进程之间,完成数据传递。调用pipe系统函数即可创建一个管道。有如下特质:1. 其本质是一个伪文件(实为内核缓冲区)2. 由两个文件描述符引用,一个表示原创 2017-08-05 23:30:59 · 248 阅读 · 0 评论 -
linux系统网络配置
1、设置虚拟机为桥接模式:虚拟机---》设置-》》硬件-网络适配器---》桥接模式查看ip地址:ifconfig启动网络服务:sudo ifconfig eth0 up关闭网络服务:sudo ifconfig eth0 down修改ip地址:ifconfig eth0 192.168.3.xxx(注意防止ip冲突)测试网络是否联通:ping 192.原创 2017-07-16 10:17:16 · 412 阅读 · 0 评论 -
tftp工具的使用和烧写
current dir ---》传输文件的所在路径(用browse选择)server inter ---》服务器ip地址进入uboot命令模式(开机倒数3秒时按enter,再按e)查看网络服务信息:pri修改网关ip地址:setenv ethaddr 00:40:5c:26:0a:XX (修改网关成自己唯一个网关)修改本地ip地址:setenv原创 2017-07-16 10:23:29 · 2660 阅读 · 0 评论 -
NFS服务器安转和使用
NFS服务器:用于挂载linux的文件---------------------------------------------------------------------------------------1.NFS服务器的安装(linux系统需要能上外网下载)sudo apt-get install nfs-kernel-server2.配置NF原创 2017-07-16 10:25:53 · 223 阅读 · 0 评论 -
TFTP服务器的安装和使用
1.下载TFTP服务器的安装包sudo apt-get install tftpd xinetd2.建立配置文件在/etc/xinetd.d目录下建立一个配置文件tftpsudo gedit /etc/xinetd,d/tftp添加内容如下:service tftp { socket_type = dgra原创 2017-07-16 17:14:26 · 419 阅读 · 0 评论 -
SSH远程登录服务器的安装与使用
1.SSH服务器的安装sudo apt-get install openssh-server2.启动SSH服务器sudo /usr/sbin/sshd----------------------------------SSH的使用----------------------------------3.登录SSH服务器ssh原创 2017-07-16 17:15:50 · 282 阅读 · 0 评论 -
samba服务器的安装与使用
1.安装samba服务器sudo apt-get install samba2.配置samba服务器脚本文件sudo /etc/samba/smb.conf添加如下内容:[Ubuntu14.04LTS] --->共享文件夹名称comment = gec 备注(告诉用户是谁的共享文件夹)path = /home/gec (共享文原创 2017-07-16 17:16:37 · 317 阅读 · 0 评论 -
linux链接库的制作与使用
gcc工具的使用:预处理:i ---》file main.i :C source,ASCII textgcc main.c -E -o main.i编译:.s --->file main.s: assembler source text --->汇编代码gcc main.c -S -o main.s 汇编:.o --->原创 2017-07-16 17:17:26 · 235 阅读 · 0 评论 -
linux中makefile编写
makefile :文件编译管理脚本,linux系统提供的一套编译管理工具。1.执行make命令会自动调用makefile文件的内容。2.自动检查代码是否更改,提高编译效率。3.规则(注意按tab对齐)目标文件 : 源文件clean: rm -rf xxxx调用make clean时会执行clean:下的内容原创 2017-07-16 17:18:13 · 222 阅读 · 0 评论 -
GDB调试工具
GDB 调试gcc -g hello.c -o hello (-g表示生成一个带调试信息的可执行文件)gdb hello ●gdb类似一个虚拟机gdb 调试命令(gdb) b 6 //设置第6行为一个断点 ●b:breakpoint 断点 b main //设置main为一个断点(breakpoi原创 2017-07-17 20:28:21 · 440 阅读 · 0 评论 -
sqlite3数据库函数
数据库操作的基本步骤:0.连接数据库1.打开数据库2.操作数据库3.关闭数据库sqlite3的基本元素:两个对象与八个方法一.封装系列1.建立连接、打开数据库int sqlite3_open( const char *filename, /* 字符串形式的数据库名(UTF-8),存在则打开,不原创 2017-08-11 18:09:26 · 2674 阅读 · 1 评论 -
shell脚本实用知识点
----------------------------------------------------------------------------------------------------1.什么是shell?shell本意为壳,用于保护内核shell是用C语言编写的程序shell是普通用户与内核沟通的桥梁,是命令解释器shell原创 2017-08-11 18:45:49 · 284 阅读 · 0 评论 -
进程的简单介绍与实现
什么是进程?什么是程序?进程在系统中能够独立运行,并分配资源的基本单位。而程序由多个进程组成,一个程序最少有一个进程。进程是动态的,程序是静态的。进程控制块(PCB)在Linux中task_struct结构体即是PCB。PCB是进程的唯一标识,PCB由链表实现(为了动态插入和删除)。进程创建时,为该进程生成一个PCB;进程终止时,回收PCB。PCB包含信息:原创 2017-08-05 23:19:38 · 326 阅读 · 0 评论 -
sqlite3数据库ubuntu移植&arm开发板移植
sqlite3数据库下载地址PC版:1.解压tar xvf sqlite-autoconf-3190300.tar.gzcd sqlite-autoconf-31903002.检查、配置(如果成功,会生成Makefile) --prefix=PREFIX:指定安装目录./configure --prefix=/home/csgec/bui原创 2017-08-06 23:47:19 · 791 阅读 · 0 评论