2018-12-04 19:12
⁄ 工业·编程
⁄ 共 142字
D 不可中断的深度睡眠状态 Uninterruptible sleep(Usually IO)
R 正在运行或者在队列中的进程(就绪态)
S 处于休眠状态
T 暂停或被追踪
Z 退出状态,僵尸进程
X 退出状态,进程即将被销毁
< 高优先级
N 低优先级
L 有些页被锁进内存
s 包含子进程
+ 位于后台的进程组
I 多线程,克隆线程
linux阅读全文
2018-12-02 19:05
⁄ 工业·编程
⁄ 共 666字
受单片机和ARM7等小型CPU设备编程思维的影响,开始对嵌入式linux和PC中存在bootloader/BIOS的意义有了疑问
bootloader到底有没有必要存在呢?答案是:大部分情况下是有必要的。
首先,bootloader的作用是在硬件上电后运行的第一段软件代码,也叫引导加载程序,是在操作系统内核运行之前运行的一小段程序,这小段程序的作用一般是初始化硬件设备,比如内存啊,堆栈等等,从而将系统的硬件环境编程一种合适的状态,然后再引导加载...
Bootloader阅读全文
2018-11-30 19:02
⁄ 工业·编程
⁄ 共 287字
linux命令ln用来为文件创建链接,链接这一概念类似于windows中的“快捷方式”,链接类型分为硬链接和软链接,命令格式:
ln (参数) 源文件 链接
默认是创建硬链接,而参数-s为软链接。
所谓硬链接,就是在本目录中或者另外目录中增加了原文件的另外一个名字文件,其实是名字,因为对于linux来说,链接是名字,而数据才是真正占用物理存储的,修改源文件或者链接文件其一...
linux阅读全文
2018-11-25 18:01
⁄ 工业·编程
⁄ 共 210字
modules:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
这句是Makefile的规则:这里的$(MAKE)就相当于make,-C 选项的作用是指将当前工作目录转移到你所指定的位置。“M=”选项的作用是,当用户需要以某个内核为基础编译一个外部模块的话,需要在make modules 命令中加入“M=dir”,程序会自动到你所指定的dir目录中查找模块源码,将其编译,生成KO文件。
Makefile阅读全文
2018-11-23 17:54
⁄ 工业·编程
⁄ 共 1635字
在具体的设备驱动开发中,将驱动编译为内核模块也有很强的工程意义,因为如果将正在开发中的驱动直接编译入内核,而开发过程中会不断修改驱动的代码,则需要不断地编译内核并重启内核,但是如果编译为模块,则只需要rmmod并insmod即可,开发效率大为提高。下面说明如何添加、编译并允许LINUX模块。
除此之外还有好多有用的功能比如KVM虚拟化,都是以内核模块的方式动态地添加到内核中的。
LINUX...
内核阅读全文
2018-11-21 17:20
⁄ 工业·编程
⁄ 共 613字
在学习Qt开发之前,需要区分一些概念,这些概念由于名字太过相似,功能也太难懂,所以容易混淆。
Qt是一个完整的C++应用程序开发框架(库或架构),它的API在所有的平台上(Linux,Windows等)是相同的,这就表示Qt工具在所有平台上的使用方式是一致的,因而Qt的应用程序开发和平台是无关的。
Qt:泛指Qt的所有版本的图形界面库,注意重点是“库”,由于Qt最早是在Linux中随着KDE流行的,所以通常所说的Qt都是指用于Linux/Unix的Q...
Qt阅读全文
2018-11-20 17:18
⁄ 工业·编程
⁄ 共 372字
在开始学习嵌入式Linux的时,由于Linux是一种全新的操作系统,跟我们曾经熟悉的Windows的学习思路完全不同,所以在学习的过程中看不到目的,不知道从何开始,不知道为什么学,不知道学什么,所以总结一下嵌入式Linux开发流程,举例,现在手上有一块开发板,那么我们应该怎么进行嵌入式Linux开发呢,流程如下:
1.移植bootloader,如u-boot,vivi等。
2.裁剪Linux。
3.移植Linux。
4.制作根文件系统。
5.移植文件系统。
6.开发LC...
linux编程, 嵌入式阅读全文
2018-11-17 16:58
⁄ 工业·编程
⁄ 共 1595字
1:如果函数的参数是一个指针,不要指望用该指针去申请动态内存。Test 函数的语句 GetMemory(str, 200)并没有使 str 获得期望的内存,str 依旧是 NULL,为什么?
void GetMemory(char *p, int num)
{
p = (char *)malloc(sizeof(char) * num);
}
void Test(void)
{
char *str = NULL;
GetMemory...
指针阅读全文
2018-11-16 16:41
⁄ 工业·编程
⁄ 共 517字
1,初始化链表头部指针需要用二级指针或者一级指针的引用。
2,销毁链表需要用到二级指针或者一级指针的引用。
3,插入、删除、遍历、清空结点用一级指针即可。
分析:
1,只要是修改头指针则必须传递头指针的地址,否则传递头指针值即可(即头指针本身)。这与普通变量类似,当需要修改普通变量的值,需传递其地址,否则传递普通变量的值即可(即这个变量的拷贝)。使用二级指针,很方便就修改了传入的结点一级指针的值。 如果...
指针阅读全文
2018-11-15 16:17
⁄ 工业·编程
⁄ 共 494字
void AddToTail(ListNode **head,int value){
ListNode *newNode = new ListNode();
newNode->data=value;
newNode->next=NULL;
if(*head==NULL)
*head=newNode;
else{
ListNode *tempNode = *head;
&...
c++, 指针阅读全文