自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(331)
  • 资源 (8)
  • 收藏
  • 关注

原创 如何在ubuntu 18.04中升级python 3.6到3.7

这意味着当我们运行python3时,它将作为python3.6执行,但我们希望将其作为python3.7执行。请记住,选择号可能会有所不同,因此请选择适用于Python 3.7的选择号。使用命令python3 -V,可发现输出为python 3.6.8, 使用以下步骤升级python3 至python 3.7。4)至此,Python 3.7已安装在您的Ubuntu系统上,可以使用了。5)将Python 3.6和Python 3.7添加到更新替代项。6)更新Python 3以指向Python 3.7。

2024-03-20 23:11:08 594

原创 ubuntu root登陆桌面及ssh失败

1,在终端中输入如下命令,打开文件将打开的文件中第三行语句前加#,如下注释掉语句 “#auth required pam_succeed_if.so user!2,保存并退出,继续在终端执行将打开的文件中第三行语句前加#, 如下注释掉语句 “#auth required pam_succeed_if.so user!3,保存并退出。在终端继续执行将打开的文件中“mesg n 2> /dev/null || true” 改为4,保存并退出。5,重启电脑,即可以root用户登录。

2024-03-09 10:44:20 436

原创 博客摘录「 Nginx—Linux系统配置Nginx代理服务器的详细步骤(一)」2023年12月1日

设置正向代理服务器,当然前提是要知道正向代理服务器的。

2024-02-25 20:36:31 365

原创 Linux的expect工具完成命令行参数传递及可执行文件注入shell脚本

a.out每次只能得出一个结果,且需要根据提示,手动输入不同的参数。注:__EOF__需要顶头编写。

2024-02-20 20:56:00 528

原创 gdb调试std::list和std::vector等容器的方法

GDB中print方法并不能直接打印STL容器中保存的变量,其实只要http://www.yolinux.com/TUTORIALS/src/dbinit_stl_views-1.03.txt这个文件保存为~/.gdbinit 就可以使用它提供的方法方便调试容器。2.3、添加“set auto-load safe-path ./”到./.gdbinit文件中,相当于禁用了安全路径的保护;指定启动文件:~/.gdbinit,下面的方法任选其一。/.gdbinit文件中,使该文件可以被加载;

2024-01-27 14:37:49 867

原创 多进程的共享内存中使用互斥量同步数据

功能:父子进程在共享内存中互斥累加数据(counter)。

2023-12-22 18:14:41 411

原创 Linux的ps简单实现

原理:遍历下的/proc/%s/task/%s/status所有文件,两个%s都为pid号。注:多线程下,只打印一个pid/task下的所有目录,即可收集各个线程对应的信息。

2023-12-11 22:24:03 266

原创 __attribute__((__used__)) 和 __attribute__((__section__(“*“ “*“)))的使用

C语言注册函数和调用函数。见:haproxy代码。

2023-11-06 20:23:35 376

原创 Docker容器内用户与宿主机用户同名不同ID的问题

注:在Docker容器中,ubuntu用户登陆,不要使用sudo去修改ubuntu的uid和gid,会提示:“sudo: unknown uid 1000: who are you?”,发生骑驴找驴的问题。使用宿主机的同名用户登陆Docker容器,执行文件修改操作,提示:Permission denied.影响:会导致使用ubuntu的同名用户进入Docker容器后,修改文件和创建目录等操作没有权限。(1)在Docker容器中,使用root账户,修改ubuntu用户的uid和gid。

2023-10-24 20:17:33 487

原创 Qt Creator使用Clang Format方法

习惯性的想格式化代码,发现Qt Creator默认居然是没有代码格式化的,只有一个缩进。Qt Creater中有个插件:beautifier,在"帮助->关于"插件中,开启“Beautifier”即可(会提醒需要重启Qt creator)。注:Qt Creator安装包中不包含这个格式化工具,它的作用是调用格式化工具进行格式化。官方的说支持三种外部格式化工具:Artistic Style、ClangFormat、Uncrustify 。这里仅以 ClangFormat 来说明:ClangFormat

2023-08-31 12:45:19 966

原创 ubuntu freeradius 3.0 + mariadb

【代码】ubuntu freeradius 3.0 + mariadb。

2023-07-14 22:56:08 300

原创 ubuntu 18.04 radius 服务安装配置

缺点:每次新增用户都需要重启服务端服务,且用户新增用户方式不友好,需要修改/etc/freeradius/3.0/users文件。解决方案:radius + 数据库。注:注意tab对齐。

2023-07-09 16:59:22 1223

原创 在Ubuntu中安装和设置samba

1、安装Samba服务2、配置samba2.1 先备份sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak,以防改错,修改配置文件时建议养成备份的好习惯,改错了还能恢复.2.2 sudo vim /etc/samba/smb.conf 修改配置,添加共享,可直接加到文件尾4、添加samba用户添加samba用户,用于其他人或设备认证,这里添加的用户需要在系统账号中存在,否则添加失败。

2023-06-11 08:12:52 7269

原创 关于python的第一行代码的理解

usr/bin/env python3 这种用法是为了防止操作系统用户没有将 python3 装在默认的 /usr/bin 路径里。/usr/bin/python3 是告诉操作系统执行这个脚本的时候,调用 /usr/bin 下的 python3 解释器;/usr/bin/env python3 会去环境设置寻找 python3 目录,推荐这种写法。/usr/bin/python 被忽略,等同于注释。/usr/bin/python 指定解释器的路径。

2023-05-08 15:39:09 1024 1

原创 centos 7修改用户名

1、使用root用户进行修改devel用户名为test。2、修改sudoers中,devel为test。3、修改设备的用户名dev-1为tst-1。

2023-04-15 17:04:14 2596

原创 linux下统计网络字节数

linux下统计网络字节数。

2022-12-08 14:44:18 216

原创 Qt has modification time xxx s in the future

现象:编译Qt程序时,提示warning: File ‘/opt/Qt5.12.8/5.12.8/gcc_64/mkspecs/linux-g++/qmake.conf’ has modification time 716043631 s in the future。发现设备上的Qt目录的时间戳都是2045年,由于安装Qt时,系统没有安装ntp,导致系统没有同步时间,因此安装后的Qt文件都是2045年。(1)在unbuntu上安装ntp,获取正确的时间。(2)批量更新目录的时间戳。

2022-10-15 21:18:54 933

原创 error: ‘make_unique‘ is not a member of ‘std‘

【代码】error: 'make_unique' is not a member of 'std'

2022-09-21 21:12:25 1744

原创 ubuntu程序崩溃时没有生成coredump文件的解决办法

ubuntu程序崩溃但没有生成core文件1、下载工具:2、开启产生core3、如果程序发生了core dump,使用coredumpctl list查看有没有产生core文件。4、查看core文件的压缩包5、使用liblz4-tool提供的命令解压lz4文件。

2022-06-01 09:28:50 2272

原创 c++ priority_queue的简单使用

1、priority_queue<float, vector< float>, less< float>> 注:默认是less#include <iostream>#include <queue>#include <vector>using namespace std;void test_1(void){ cout << endl << "test_1: " << endl;

2022-04-19 10:20:25 885

原创 【shell】 =~的使用

如下:read -p "need compile OEM installatoin package?yes/[no]" IS_OEMif [[ "Yes" =~ $IS_OEM || "yes" =~ $IS_OEM ]]then ...fineed compile OEM installatoin package?yes/[no]yneed compile OEM installatoin package?yes/[no]Yneed compile OEM install

2022-03-31 16:23:33 13326 2

原创 Linux系统中通过流量定位进程

问题:系统的虚拟网卡有一个莫名的流量一直存在,不知道是系统中的什么进程发出的?目标:根据流量的dst+dport查找对应的进程。1、在系统中,使用tcpdump工具,锁定流量的目的IP地址(11.178.11.150:80)。#sudo tcpdump -i tun0 -n09:04:47.452332 IP 111.111.111.100.32980 > 111.178.11.150.80: Flags [S], seq 2183603593, win 64240, options [mss

2022-03-22 09:45:55 959

原创 c++ 移动语义与拷贝

移动语义:传统 C++ 通过拷贝构造函数和赋值操作符为类对象设计了拷贝/复制的概念,但为了实现对资源的移动操作, 调用者必须使用先复制、再析构的方式,否则就需要自己实现移动对象的接口。 试想,搬家的时候是把家里的东西直接搬到新家去,而不是将所有东西复制一份(重买)再放到新家、 再把原来的东西全部扔掉(销毁),这是非常反人类的一件事情。传统的 C++ 没有区分『移动』和『拷贝』的概念,造成了大量的数据拷贝,浪费时间和空间。 右值引用的出现恰好就解决了这两个概念的混淆问题,例如:移动语义:~/tes

2022-03-09 10:53:42 867

原创 c++ lambda的按值访问和按引用访问

$ cat test2.cpp#include <iostream>using namespace std;void lambda_test(void){ int x = 2; int y = 10; auto lambda = [x, &y] { //此处x = 2,会影响测试1和测试2中的x。 cout << "x: " << x << endl; cout <&l

2022-03-02 09:52:27 661

原创 c++中关于默认值的设置

测试代码:$ cat test4.cpp#include <iostream>using namespace std;void func(int a, int b, int c = 10);void func2(int a, int b, int c);int main(int argc, char *const argv[]){ func(1, 2); func(1, 2, 3); func2(1, 2); //oops !!!!! fun

2022-02-28 10:30:42 1559

原创 cmake CMAKE_CXX_COMPILER_VERSION 检查失败

1、CMakeLists.txt文件:$ cat ../CMakeLists.txtcmake_minimum_required(VERSION 2.8)project(MyTinySTL)# versionset(MyTinySTL_VERSION_MAJOR 2)set(MyTinySTL_VERSION_MINOR 0)set(MyTinySTL_VERSION_PATCH 0)set(MyTinySTL_VERSION "${MyTinySTL_VERSION_MAJOR}.${

2022-02-19 12:54:39 3015

原创 c++ map用法

#include <iostream>#include <map>using namespace std;class Test_t { private: int a; public: Test_t(int a) { this->a = a; } ~Test_t() { cout << "des

2022-02-16 10:45:21 310

原创 Qt使用命令行编译pro

1、无pro文件的情况下:该情况下,一般是纯代码编写程序,写好程序后,需要生成pro文件后,才能编译。生成pro文件的方法:$ qmake -project注: 生成pro文件后,需要手动在pro文件的最后添加一行代码:greaterThan(QT_MAJOR_VERSION, 4):QT +=widgets2、有pro文件的情况下:该情况下,是已经根据代码((纯命令行程序或带图形化界面程序))生成pro文件,使用Qtcreator可正常编译,但想通过shell脚本替代Qtcreator进

2022-01-21 10:12:28 3313

原创 多线程的条件变量使用

上面的例子来自《Linux环境高级程序设计》- 黄茹,会出现死锁等待的情况,如下两个例子中,一个是对上面的问题的优化,另一个用于熟悉条件变量的使用。#include <stdio.h>#include <stdlib.h>#include <pthread.h>#include <string.h>#include <unistd.h>pthread_mutex_t mutex;pthread_cond_t empty;pthr.

2021-10-20 11:18:04 150

原创 centos7安装mariadb

参考:https://www.cnblogs.com/yhongji/p/9783065.html# yum install mariadb-server# yum install mariadb-devel问题:cannot find -lmysqlclient;(1)先确认一下是否已安装mariadb-devel,执行:# rpm -qa | grep mariadbmariadb-server-5.5.68-1.el7.x86_64mariadb-5.5.68-1.el7.x86_64

2021-10-11 20:10:38 271

原创 c++从一个map复制到另一个map

$ cat test_map.cpp#include <iostream>#include <map>using namespace std;class Test { public: int a; int b; Test(int a, int b) { this->a = a; this->b = b; }

2021-08-09 17:04:43 10206

原创 使用PuTTY上传和下载文件

使用PuTTY(C:\Program Files\PuTTY)上传或下载文件;双击运行该psftp.exe,可使用open打开远程主机、cd改变远程目录、lcd改变本地目录、ls查看远程文件列表、put上传文件、get下载文件等命令login in and upload file:psftp> open 192.168.3.13login as: [email protected]'s password:Remote working directory is /home/user

2021-08-07 10:05:18 10411

原创 Linux下Perf的使用

Perf安装:Perf的源代码,一般都是内置在linux内核源码的tool目录下的。一般如下是可以的:sudo apt-get install linux-sourcecd /usr/srccd tools/perfmake && make install

2021-07-25 23:25:43 221

原创 centos8安装汇编环境

nasm安装官网:https://www.nasm.us/su -c 'curl https://www.nasm.us/nasm.repo | tee /etc/yum.repos.d/nasm.repo'yum install nasm注:su -c command : 切换到root用户并执行command。tee: 用于重定向到文件

2021-07-25 10:30:59 284

原创 Linux 配置6rd过程

3.2 Linux的配置步骤:三台Linux虚拟构建网络拓扑。#配置CE设备ip address add 192.168.110.27 dev eth0ip link set eth0 upip tunnel add kali006rd mode sit local 192.168.110.27ip tunnel 6rd dev kali006rd 6rd-prefix 2012:db8::/32 6rd-relay_prefix 192.168.147.136/32ip link set k

2021-05-13 14:45:11 568

原创 vim之vundle

1、vim: Vundlehttps://linux.cn/article-9416-1.html如何在 Linux 上使用 Vundle 管理 Vim 插件1.1 添加插件,以vim-dasm为例:#vim ~/.vimrc添加这一行:[…]Plugin ‘vim-dasm’[…]1.2 安装插件::PluginInstall1.3 安装完毕之后,键入下列命令,可以删除高速缓存区缓存并关闭窗口::bdelete1.4 搜索可以使用的插件::PluginSearch1.5 要

2021-03-31 09:55:53 613

原创 Linux 读写锁,自旋锁、互斥锁

读写锁:分为读锁和写锁。当一个进程获取到写锁时,其它进程就不能获取到读锁和写锁,并一致等待。当一个进程获取到读锁时,其它进程也可以获取到读锁。自旋锁:当一个进程获取到自旋锁时,同一时间其它没有抢到自旋锁的进程一致等待,且其cpu一直被占用。由于某些进程一直占有CPU,处理性能会高。互斥锁:当一个进程获取到自旋锁时,同一时间其它没有抢到互斥锁的进程将sleep,释放cpu资源。消耗CPU资源较少。...

2021-02-01 19:25:09 263

原创 TAILQ练习的一个例子

queue.h:/* * List definitions. */#define LIST_HEAD(name, type) \struct name { \ struct type *lh_first; /* first element */

2021-01-30 17:25:27 188

原创 使用函数发送命令行

$ cat test.c#include <stdio.h>#include <string.h>int run_and_get_output(const char* cmd, char *output, int max_len){ char buffer[1000] = {0}; int len = 0; int copy_len = 0; FILE *pipe = NULL; pipe = popen(cmd, "r");

2020-11-13 21:21:49 353 1

原创 在Linux上创建tun/tap设备

tun/tap的作用及区别TUN 设备是一种虚拟网络设备,通过此设备,程序可以方便地模拟网络行为。TUN 模拟的是一个三层设备,通过它可以处理来自网络层的数据,更通俗一点的说,通过它,我们可以处理 IP 数据包。TAP 设备是一个二层设备,它比 TUN 更加深入,通过 /dev/tapX 文件可以收发 MAC 层数据包,即数据链路层,拥有 MAC 层功能,可以与物理网卡做 bridge,支持 MAC 层广播。TAP 设备与 TUN 设备工作方式完全相同,区别在于:(1)TUN 设备是一个三层设备,它

2020-10-06 08:32:05 6595

Flex_&_Bison.zip

介绍Flex及Bison使用的高清pdf。

2021-04-21

Linux’s IPsec implementation.pdf

描述IPsec 在Linux下的实现及背景内容,包含Linux下IPsec工具,内核IPsec支持等内容。

2021-04-21

the java programming language fourth editionArnoldGoslingHolmes06

the java programming language fourth editionArnoldGoslingHolmes06 Direct from the creators of the Java™ programming language, the completely revised fourth edition of The Java™ Programming Language is an indispensable resource for novice and advanced programmers alike. <br/> <br/>Developers around the world have used previous editions to quickly gain a deep understanding of the Java programming language, its design goals, and how to use it most effectively in real-world development. Now, Ken Arnold, James Gosling, and David Holmes have updated this classic to reflect the major enhancements in Java™ 2 Standard Edition 5.0 (J2SE™ 5.0). <br/> <br/>The authors systematically cover most classes in Java's main packages, java.lang.*, java.util, and java.io, presenting in-depth explanations of why these classes work as they do, with informative examples. Several new chapters and major sections have been added, and every chapter has been updated to reflect today's best practices for building robust, efficient, and maintainable Java software.

2014-08-30

vivi-boot loader

初始化本阶段要使用到的硬件设备。 检测系统内存映射(memory map)。 将 kernel 映像和根文件系统映像从 flash 上读到 RAM 空间中。 为内核设置启动参数。 调用内核。 1.1 Boot Loader 的 stage1 1.1.1 基本的硬件初始化 这是 Boot Loader 一开始就执行的操作,其目的是为 stage2 的执行以及随后的 kernel 的执行准备好一些基本的硬件环境。它通常包括以下步骤(以执行的先后顺序): 1. 屏蔽所有的中断。为中断提供服务通常是 OS 设备驱动程序的责任,因此在 Boot Loader 的执行全过程中可以不必响应任何中断。中断屏蔽可以通过写 CPU 的中断屏蔽寄存器或状态寄存器(比如 ARM 的 CPSR 寄存器)来完成。 2. 设置 CPU 的速度和时钟频率。 3. RAM 初始化。包括正确地设置系统的内存控制器的功能寄存器以及各内存库控制寄存器等。 4. 初始化 LED。典型地,通过 GPIO 来驱动 LED,其目的是表明系统的状态是 OK 还是 Error。如果板子上没有 LED,那么也可以通过初始化 UART 向串口打印 Boot Loader 的 Logo 字符信息来完成这一点。 5. 关闭 CPU 内部指令/数据 cache。 VIVI在第一阶段完成以下任务

2014-08-30

BootLoader技术内幕

本文详细地介绍了基于嵌入式系统中的 OS 启动加载程序 ―― Boot Loader 的概念、软 件设计的主要任务以及结构框架等内容。 一、引言 在专用的嵌入式板子运行 GNU/Linux 系统已经变得越来越流行。一个嵌入式 Linux 系统 从软件的角度看通常可以分为四个层次: 1. 引导加载程序。包括固化在固件(firmware)中的 boot 代码(可选),和 Boot Loader 两大部分。 2. Linux 内核。特定于嵌入式板子的定制内核以及内核的启动参数。 3. 文件系统。包括根文件系统和建立于 Flash 内存设备之上文件系统。通常用 ram disk 来作为 root fs。 4. 用户应用程序。特定于用户的应用程序。有时在用户应用程序和内核层之间可能还会包 括一个嵌入式图形用户界面。常用的嵌入式 GUI 有:MicroWindows 和 MiniGUI 懂。 引导加载程序是系统加电后运行的第一段软件代码。回忆一下 PC 的体系结构我们可以知 道,PC 机中的引导加载程序由 BIOS(其本质就是一段固件程序)和位于硬盘 MBR 中的 OS Boot Loader(比如,LILO 和 GRUB 等)一起组成。BIOS 在完成硬件检测和资源分配后 ,将硬盘 MBR 中的 Boot Loader 读到系统的 RAM 中,然后将控制权交给 OS Boot Load er。Boot Loader 的主要运行任务就是将内核映象从硬盘上读到 RAM 中,然后跳转到内核 的入口点去运行,也即开始启动操作系统。

2014-08-30

ascii-码表

ASCII码使用指定的7位或8位二进制数组合来表示128或256种可能的字符。标准ASCII码也叫基础ASCII码,使用7位二进制数来表示所有的大写和小写字母,数字0到9、标点符号,以及在美式英语中使用的特殊控制字符(这里需要特别注意:ASCII码与标准ASCII码的位数上的区分,标准ASCII码是7位二进制表示)。 十进制编码 (对应)缩写字符(或功能/解释) 0 NUL(null) 空字符 1 SOH(start of headline) 标题开始 2 STX (start of text) 正文开始 3 ETX(end of text) 正文结束 4 EOT (end of transmission) 传输结束 5 ENQ (enquiry) 请求 6 ACK (acknowledge) 收到通知 7 BEL (bell) 响铃 8 BS (backspace) 退格 9 HT (horizontal tab) 水平制表符 10 LF (NL line feed, new line) 换行键 11 VT (vertical tab) 垂直制表符 12 FF (NP form feed, new page) 换页键 13 CR (carriage return) 回车键 14 SO (shift out) 不用切换 15 SI (shift in) 启用切换 16 DLE (data link escape) 数据链路转义 17 DC1 (device control 1) 设备控制1 18 DC2 (device control 2) 设备控制2 19 DC3 (device control 3) 设备控制3 20 DC4 (device control 4) 设备控制4 21 NAK (negative acknowledge) 拒绝接收 22 SYN (synchronous idle) 同步空闲 23 ETB (end of trans. block) 传输块结束 24 CAN (cancel) 取消 25 EM (end of medium) 介质中断 26 SUB (substitute) 替补 27 ESC (escape) 换码(溢出) 28 FS (file separator) 文件分割符 29 GS (group separator) 分组符 30 RS (record separator) 记录分离符 31 US (unit separator) 单元分隔符 32 space 空格 33 ! 34 " 35 # 36 $ 37 %

2014-08-30

国嵌_嵌入式Linux入门班实验手册

l 实验1(1-1-1):Linux定制安装 l 实验2(1-1-2):Linux常见命令使用 l 实验3(1-1-3):Vi使用 l 实验4(1-2-1):tftp服务器 l 实验5(1-2-2):NFS服务器 l 实验6(1-2-3):Samba服务器 l 实验7(1-2-4):防火墙设置 l 实验8(1-2-5):wireshark网络分析 l 实验9(1-2-6):脚本编程-脚本参数 l 实验10(1-2-7):脚本编程-统计文件 l 实验11(1-2-8):脚本编程-倒序输出 l 实验12(1-2-9):脚本编程-监视文件 l 实验13(1-2-10):脚本编程-qcd l 实验14(1-3-1):Gcc程序编译 l 实验15(1-3-2):GDB程序调试 l 实验16(1-3-3):Makefile 第二阶段 应用程序设计 l 实验17(2-1-1):文件编程-文件创建 l 实验18(2-1-2):文件编程综合实例-文件拷贝 l 实验19(2-1-3):时间编程-获取本地时间 l 实验20(2-2-1):fork创建子进程 l 实验21(2-2-2):vfork创建子进程 l 实验22(2-2-3):exec函数族 l 实验23(2-2-4):进程等待 l 实验24(2-3-1):无名管道 l 实验25(2-3-2):有名管道 l 实验26(2-3-3):信号处理 l 实验27(2-3-4):共享内存 l 实验28(2-4-1):消息队列 l 实验29(2-5-1):创建线程 l 实验30(2-5-2):线程等待 l 实验31(2-5-3):线程退出保护设计 l 实验32(2-6-1):TCP程序设计 l 实验33(2-6-2):UDP程序设计 l 实验34(2-6-3):并发服务器设计 第三阶段 ARM程序设计 l 实验35(3-1-1):ARM汇编编程-寄存器访问 l 实验36(3-1-2):ARM汇编编程-算术运算 l 实验37(3-1-3):ARM汇编编程-寻址方式 l 实验38(3-1-4):ARM汇编编程-逻辑控制 l 实验39(3-1-5):ARM汇编编程-模式切换 l 实验40(3-1-6):ARM/C混合编程 l 实验41(3-2-1):ARM综合实验-跑马灯设计 l 实验42(3-2-2):ARM综合实验-控制LED 第四阶段 Linux内核开发 l 实验43(4-1-1):内核裁剪与安装 l 实验44(4-1-2):内核模块设计 l 实验45(4-1-3):内核模块参数 l 实验46(4-1-4):内核符号输出 l 实验47(4-2-1):交叉工具链 l 实验48(4-2-2):U-Boot编译 l 实验49(4-2-3):U-Boot命令 l 实验50(4-2-4):U-Boot芯片级移植 l 实验51(4-2-5):U-Boot网卡驱动设计 l 实验52(4-2-6):U-Boot Flash驱动设计 l 实验53(4-3-1):嵌入式内核制作 l 实验54(4-3-2):根文件系统制作 l 实验55(4-3-3):NFS启动内核 l 实验56(4-3-4):Ramdisk启动内核 l 实验57(4-3-5):InitRamFS启动内核 l 实验58(4-3-6):U-Boot自主启动 l 实验59(4-4-1):内核内存分配 l 实验60(4-4-2):内核链表 l 实验61(4-4-3):内核定时器 l 实验62(4-5-1):实现系统调用 l 实验63(4-5-2):Proc文件系统 l 实验64(4-5-3):Oops 异常分析 第五阶段 Linux驱动程序设计 l 实验65(5-1-1):字符设备驱动程序设计 l 实验66(5-1-2):竞争控制 l 实验67(5-2-1):Ioctl设备控制 l 实验68(5-2-3):阻塞型设备驱动 l 实验69(5-2-3):Poll设备操作 l 实验70(5-2-4):自动创建设备文件 l 实验71(5-3-1):Mmap设备操作 l 实验72(5-3-2):LED驱动程序设计 l 实验73(5-4-1):Sys 文件系统 l 实验74(5-4-2):总线设备驱动模型-总线操作 l 实验75(5-4-2):总线设备驱动模型-设备操作 l 实验76(5-4-3):总线设备驱动模型-驱动操作 l 实验77(5-4-4):platform模式按键驱动设计 l 实验78(5-5-1):DM9000网卡驱动分析 l 实验79(5-5-2):回环网卡驱动设计 l 实验80(5-5-3):输入型(input)按键驱动 l 实验81(5-5-4):触摸屏驱动设计 l 实验82(5-6-1):RTL-8139 PCI网卡驱动设计

2014-08-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除