嵌入式linux
威少123
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
tuxedo1
1、三层架构流程是:客户端向应用服务器 application server 发请求 request services ,应用服务器就执行业务逻辑程序 Business Logic , 当业务逻辑执行到需要和数据库打交道的时候,它会发出SQL语句,执行DBMS逻辑,然后数据库将执行后的数据返回到应用服务器,应用服务器再运行业务逻辑程序对返回的数据进行加工,加工完以后,返回到原创 2013-11-24 15:34:15 · 852 阅读 · 0 评论 -
C++&Qt 2
对象是在栈中分配的内存。对于类的数据成员,类的每个对象都有一份独立的拷贝;而对于类的函数成员,所有变量都共享一份成员函数的代码C++中类与结构的唯一区别:类(class)定义中默认情况下的成员访问级别是private。结构(struct)定义中默认情况下的成员访问级别是public原创 2013-11-04 18:07:11 · 592 阅读 · 0 评论 -
linux系统编程9
高级网络编程重点:IO复用,UDP编程阻塞IO:标准输入输出,socketIO非阻塞IO:普通文件信号IO:异步IO原创 2013-11-04 18:00:31 · 599 阅读 · 0 评论 -
linux系统编程6
一、消息队列是操作系统内核地址空间的一个内部链表。消息可以按顺序发送到队列中,也可以以不同方式从队列读取。每个消息队列用唯一的IPC标识符创建消息队列int msgget(key_t key,int msgflag)成功返回队列标识符,错误返回-1发送消息int msgsnd(int msqid,struct msgbuf *msgp,sizet msgsz,i原创 2013-11-04 17:58:55 · 706 阅读 · 0 评论 -
linux系统编程5
pstree:进程树ipcs:查看信号量,消息队列,共享内存ipcs -q:查看消息队列信号量用来完成线程同步(无名信号量)进程同步用的是system V信号量每个新建的信号量、消息队列、共享内存都有一个唯一的标识符,每个标识都有唯一的关键字,关键字的数据类型为key_t文件锁逻辑:一个文件在被A进程读,B进程不能写这个文件一个文件在被A进程读,B进原创 2013-11-04 17:58:28 · 803 阅读 · 0 评论 -
linux系统编程3
线程创建 ret=pthread_create(&id,NULL,(void*)thread,NULL);共享资源全局变量 文件操作某些硬件端口做法:定义好临界区(短小精悍)critical section定义锁pthread_mutex_t mutex初始化pthread_mutex_init(&mutex,null);申请加锁/解锁p原创 2013-11-04 17:57:43 · 543 阅读 · 0 评论 -
ARM汇编指令2
文件的打开与关闭打开文件:fopenFILE *fopen(char *filename,char *mode)字符输出:fputcint fputc(int ch,FILE *fp)把一个字符ch写入FP指向的文件字符输入fgetcint fgetc(FILE *fp)从FP指向的文件读取一个字符字符串输入fgetschar *fgets(原创 2013-11-03 20:39:24 · 548 阅读 · 0 评论 -
C++&Qt 3
静态数据成员static int a;在类以外做初始化int class::a=0;静态数据成员:实现对象之间的数据共享静态成员函数只能访问静态数据成员友元函数:非成员函数访问私有数据成员Friend void show(student &s);原创 2013-11-04 18:07:36 · 652 阅读 · 0 评论 -
linux驱动5
共享中断:同一个中断号对应不同的中断处理函数原创 2013-11-04 18:05:46 · 597 阅读 · 0 评论 -
C++&Qt 4
C++类型转换 int(3.1);1、基类访问基类2、派生类访问派生类新增成员3、基类访问派生类 不允许4、派生类访问基类 看继承方式5、派生类外面访问派生类成员 看访问级别6、派生类外面访问基类 看继承方式两个基类重名:编译错误基类和派生类重名:覆盖掉基类继承于同一个类(虚拟基类):隔代基类不会继承protected的作用:原创 2013-11-04 18:08:02 · 672 阅读 · 0 评论 -
C++&Qt 5
基类与派生类的赋值兼容Public:基类对象=派生类对象基类对象的引用=派生类对象基类对象的指针=派生类对象多态性:不同对象收到相同消息作出不同的反应函数重载、运算符重载就是静态多态性typeid:数据类型含有至少一个纯虚函数的类称为抽象类模板 迭代器容器类模板:向量(vector)双向列表(list)队列(q原创 2013-11-04 18:08:26 · 732 阅读 · 0 评论 -
linux系统编程7
一、管道:针对本地计算机两个进程之间通信。管道建立后获得两个文件描述符:一个用于读取另外一个用于写入特点:1、半双工2、父进程子进程3、不能修改4、只存在于内存中5、读端要关掉写端,写端关掉读[0]创建:int pipe(int filedes[2]);//文件描述符filedes[0]:为pipe的读出端filedes[1]:为pipe的写入端原创 2013-11-04 17:59:19 · 711 阅读 · 0 评论 -
C基础3
一个数组存储在一块连续内存单元中;数组名就是这块连续内存单元的首地址;第 (i + 1) 个数组元素的地址可表示为 &data[i] 或 (data+i)。可以通过以下方式为指向数组的指针赋值: int a[10]; pa=&a[0]; // 或者 pa=a;一个指针变量可以指向一个数组元素原创 2013-11-03 20:22:48 · 514 阅读 · 0 评论 -
linux驱动1
学习方法:一边写驱动一边分层次读内核代码基础需求:具有硬件知识了解内核基础知识了解内核中的并发控制和同步(例如声卡同时控制两种声音)复杂的软件结构框架特点:隐藏硬件细节,提高应用软件的可移植性提高安全性提高机制而不是策略加载入口点———>module_init(hello_init)加载函数卸载入口点———>mod原创 2013-11-04 18:03:56 · 520 阅读 · 0 评论 -
C基础4
每个函数都有一个栈按地址从低到高依次是:代码,数据(全局变量,常量),堆,栈软件开发层次结构:appUIFWSERVICEHWL oslinux内核scanf不能接受空格gets可以接收空格fgets(name,10,stdin);strlen:字符数组中有效字符的个数sizeof:所占内存的大小结构定义并不预留内原创 2013-11-03 20:24:47 · 468 阅读 · 0 评论 -
C++&Qt 1
C++源程序后缀名:.cpp编译器:g++coutcin>>提取运算符 //cin>>str; coutldd :查看动态库&只是起别名,内存地址没变。用来传值或地址原创 2013-11-04 18:06:30 · 571 阅读 · 0 评论 -
linux驱动4
汇编中的条件码EQ:Z=1NE:Z=0无符号:HI大于CS/HS大于等于CC/LO小于LS小于等于有符号:GTGELTLEs3c2410_gpio_cfgpin(S3C2410_GPB(0),S3C2410_GPIO_OUTPUT);s3c2410_gpio_setpin(S3C2410_GPB(0),0);s3c2410_gpi原创 2013-11-04 18:05:06 · 622 阅读 · 0 评论 -
linux驱动2
字符设备开发步骤确定主次设备号实现字符驱动程序file_operations结构体初始化函数,注册字符设备销毁函数,释放字符设备(卸载)创建设备文件节点(次设备号)主设备号与驱动一一对应(内核识别设备的标识)次设备号对应具体的设备手工分配主设备号(人工指定主设备号,次设备号则分配连续多个):int register_chrdev_regi原创 2013-11-04 18:04:20 · 538 阅读 · 0 评论 -
linux系统编程10
信号可以打断readwrite操作调试速度“按时”完成任务UDP编程模型客户端socketsendtorecvfromclose服务端socketbind recvfromsendtosockfd=socket(AF_INET,SOCK_DGRAM,0)ssize_t recvfrom(fd,b原创 2013-11-04 18:00:55 · 612 阅读 · 0 评论 -
linux系统编程8
arp -a:查看局域网mac地址为什么需要mac地址:一个确定最终目标一个确定临时目标加壳程序socket()创建套接字bind()捆绑端口listen()为客户端连接创建连接队列accept()接受这些连接,每接收一个连接便创建一个新的套接字,新的套接字完全只用于与特定的客户通信,而socket创建的套接字保留用于等待其他客户连接的到来readwrite原创 2013-11-04 17:59:45 · 702 阅读 · 0 评论 -
linux系统编程2
memcpy函数strncpysortstrcatstrdupstrstratoitime进程创建,调度fork()返回值0:子进程ID返回值>0:父进程ID进程退出条件:1、exit(0)/exit(1)2、cntrl+c信号杀死3、段错误4、代码跑完了5、主线程退出,子线程也退出6、return main函原创 2013-11-04 17:48:37 · 601 阅读 · 0 评论 -
系统移植3
bin sbin user liniurc->dev:设备文件lib:给应用程序用的库文件etc:启动脚本文件proc:sysroot:应用mnt temp构建根文件系统1、在/dev目录下静态创建各种节点即设备文件cd /root/myroot/rootfs/devmknod console c 5 1(输入输出错误)mknod nul原创 2013-11-03 20:41:29 · 926 阅读 · 0 评论 -
linux系统开发基础3
gcc编译器:gcc -c hello.c -o hellogdb调试:GDB主要完成下面四个方面的功能:1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。2、可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)3、当程序被停住时,可以检查此时你的程序中所发生的事。4、动态的改变你程序的执行环境。 查看代码:l设置断原创 2013-11-03 20:19:34 · 640 阅读 · 0 评论 -
C基础1
C语言:结构化,层次清晰,模块化方式组织程序,易调试易维护,语句简洁功能强大,移植性好程序:为让计算机完成某项任务而编写的逐条执行的指令序列就称为程序。算法:让计算机按人们指定的步骤有效的工作,这些具体的方法和步骤,其实就是解决一个问题的算法。流程图:流程图是算法的一种图形化表示方式。流程图直观、清晰,更有利于人们设计算法定义常量:#define PI 3.14原创 2013-11-03 20:20:40 · 582 阅读 · 0 评论 -
ARM汇编指令4
程序状态寄存器ARM指令集:1、跳转指令Bie2、数据处理指令:ORR:逻辑或BIC:位清除3、乘法与乘加指令4、PSR访问指令5、加载存储指令LDR:加载字数据(从内存到寄存器)STR:存储字数据(从寄存器到内存)6、批量数据加载存储指令LDM:加载多个寄存器STM:存储多个寄存器7、SWAP:数据交换指令8、移位指原创 2013-11-03 20:33:19 · 744 阅读 · 0 评论 -
C基础7
单向链表的创建,前插后插,按index,data查找,删除,排序;双向循环链表;栈与队列;树与二叉树哈希表原创 2013-11-03 20:29:05 · 516 阅读 · 0 评论 -
ARM汇编指令3
掌握ARM指令7种寻址方式原创 2013-11-03 20:31:07 · 564 阅读 · 0 评论 -
C基础6
按位与&:某些位置0,保留按位或|:1保留按位异或^:翻转,保留求反:~左移~(~0参数是指针则是值传递现实生活数据模型叫逻辑结构计算机表示叫物理结构或存储结构1、顺序存储结构(比如数组)优点:占用较少空间缺点;碎片现象2、链式存储(单链表,循环链表)3、索引存储4、散列存储时间复杂度:运行原创 2013-11-03 20:27:25 · 641 阅读 · 0 评论 -
C基础2
养成习惯:在写的过程中调格式关系运算表达式的计算结果是逻辑值(0假非0真)switch后面要求是整形表达式,case语句后面必须是常量表达式while循环是先判断后执行,所以,如果条件为假,则循环体一次也不会被执行。do-while 循环是先执行后判断,所以,即使开始条件为假,循环体也至少会被执行一次。break 语句用在循环中时,可以直接终止循环,将控原创 2013-11-03 20:22:27 · 526 阅读 · 0 评论 -
linux系统开发基础1
echo $HOME $PATH外置命令不一样,反应在path里内置命令与外置命令删除非空目录:rm -rwhich命令 查看命令从哪里来file type 查看文件类型touch 建立指定名称的文件或更新文件时间su 用户名:继承原来的环境变量值su - 用户名:全部改变ps -aux:显示子进程shutdown -r now 重启shutdo原创 2013-11-03 20:17:50 · 592 阅读 · 0 评论 -
C基础5
修饰符:全局变量在源文件的函数外部声明(不含extern),但若其它源文件要调用这个变量,就需要通过extern关键字来引用一下。静态变量用static来修饰; 存储地址:两者都是存储在静态存储区,非堆栈上,它们与局部变量的存储分开; 生命周期:两者都是在程序编译时或程序装入时由系统自动分配的,程序结束时消亡; 外部可访问性:全局变量在整个程序的任何地方均可访问,而静态变量相当于面向对原创 2013-11-03 20:26:29 · 605 阅读 · 0 评论 -
系统移植1
开发板的连接,驱动安装tar -jxvf uboot -C dircd u-boot-2010.0.03make mini2440_configmake生成u-boot.bin安装配置H-jtag其他说明:H-Tag:烧写supervivi创建连接文件:ln -s 目标 文件名创建设备文件:mknod原创 2013-11-03 20:40:01 · 699 阅读 · 0 评论 -
C基础9
ARM的两种状态ARM的七种用户模式ARM内部寄存器组织(R0-R15) 通用寄存器: 无对应影子:R0-R7 有对应影子:R8-R14 程序计数器:R15(或PC) 状态寄存器:CPSR,SPSR影子寄存器指该寄存器在不同模式下对应的用户模式codewarrior和AMD的编译汇编执行调试原创 2013-11-03 20:30:20 · 551 阅读 · 0 评论 -
ARM汇编指令1
选择排序:n个数:排序趟数 :n-1比较次数:n-1+n-2+.....+1=n(n-1)/2最大交换次数:n-1不稳定的排序算法适用于基本有序序列冒泡排序:n个数:最大排序趟数 :n-1比较次数:n-1+n-2+.....+1=n(n-1)/2最大交换次数:n(n-1)/2稳定的排序算法适用于基本有序序列直接原创 2013-11-03 20:32:50 · 716 阅读 · 0 评论 -
C基础8
项目生命周期:1、识别需求:风险分析(需求风险,时间风险,资金风险,项目管理风险),制定系统规范(系统功能,系统限制,系统开发资源)2、提出解决方案:系统规划(规划分析),系统设计3、执行项目:系统实现(硬件,驱动移植,现成平台),系统测试,系统调试4、结束项目:售后服务,项目讨论冯诺依曼结构 哈佛结构MCU:微控制器MPU:微处理器DSP芯片:原创 2013-11-03 20:29:54 · 559 阅读 · 0 评论 -
linux驱动3
SP LR PC CPSRgpbcon:0x56000010地址中的数据。管理GPB0-10共11个引脚,共占4个字节00输入:读取01输出:控制GPBDAT:0x56000014地址中的数据。控制高低电平。0-10分别控制GPB0-100:低电平 亮1:高电平 灭GPBUP:0x56000018地址中的数据 0-10分别控制GPBDAT0-10原创 2013-11-04 18:04:44 · 584 阅读 · 0 评论 -
linux系统编程11
套接字选项ps -ef|grep deamo:查看守护进程ssh cxc@192.168.7.240:远程登录数据包报头中:t:数据类型L:长度V:版本远程终端项目说明:1、发送接收数据包2、日志文件(记录事件时间)3、配置文件(记录端口,IP)4、链表保存连接的客户端OICQ:1、客户端之间UDP通讯,客户与服务端TCP通讯原创 2013-11-04 18:01:14 · 623 阅读 · 0 评论 -
linux系统编程4
kill -l查看所有信号信号:how to do1、分析信号的发送方和接收方是谁2、在接收方做好信号的安装注册3、发送方触发信号产生,事件发生了驱动了,接收方会跑应急准备的回调函数A.KILL (pid,signo)B.exit(0)原创 2013-11-04 17:58:06 · 570 阅读 · 0 评论 -
linux系统编程1
linux系统程序设计(理论课10天,项目7天)学习方法:1、交流 2、练习 3、不求甚解C库封装了系统调用函数第一章一、基本构成存储器地址寄存器MAR:确定下一次读写的存储器地址存储器缓冲寄存器MBR:包含要写入存储器的数据或从存储器中读取的数据输入输出地址寄存器i/o AR:确定一个特定的输入输出设备输入输出缓冲寄存器I/O BR:用于在原创 2013-11-03 20:42:31 · 728 阅读 · 0 评论 -
系统移植2
1-18页:SDRAMgcc -I指定头文件GCC -L指定库文件tar xzvftar xjvf-z:指gzip压缩/解压缩-j:调用bzip2压缩/解压缩-c:打包-x:解包-v:显示文件-C:解压到某个目录-f:普通文件.config:变量值保存文件,make menuconfig之后保存到其中ldd main:c查看库文件路径原创 2013-11-03 20:40:51 · 675 阅读 · 0 评论
分享