精华内容
下载资源
问答
  • 华清远见 嵌入式 Linux 课程 学嵌入式的计划和基本路线
  • 华清远见 嵌入式Linux实验教程 有简入难
  • 华清远见嵌入式教程《嵌入式linux应用程序开发》的源码。是非常实用的例程代码。
  • Linux应用程序开发标准教程——华清远见嵌入式培训教材!
  • 华清远见嵌入式Linux实验指导书2017版,基于A9实验箱,课程安排和实验步骤可以在其他版本的实验板上实现。后续还会持续更新!
  • 17年的整套视频,华清远见嵌入式视频方面还是很好的,如果视频都看的不过瘾,可以去报班学习,老师都很认真负责,这个视频希望对你们有帮助,在这里要帮华清打一波广告,毕竟分享了他们的视频。
  • Linux系统开发 包含 usb sd wifi 很强大的 2012年华清远见的ppt 哦 2012华清远见嵌入式Linux系统开发培训资料 600多页
  • 华清远见嵌入式培训:所言非虚!

    千次阅读 2018-12-27 10:12:46
    四个月在华清远见嵌入式班培训的过程中,我找到了方向,找到了目标,知道了我以后要做什么,要学什么,最为重要的是怎么去学。 我起先也是不信的,但是最后的相信却让我在2019年的就业洪流中站稳了脚跟。 不得不说...

    对于嵌入式培训机构,不论是不是华清远见,我起先都是不信的。不信培训机构“年薪10万”的红绿广告,不信百度的“头条”。可种种的不信,并不能保证我在19年就业浪潮中独善其身。但现在我很庆幸。四个月在华清远见嵌入式班培训的过程中,我找到了方向,找到了目标,知道了我以后要做什么,要学什么,最为重要的是怎么去学。

    我起先也是不信的,但是最后的相信却让我在2019年的就业洪流中站稳了脚跟。

    不得不说,嵌入式培训的学习过程,就像一条又一条正太曲线的首尾无缝链接。从没有兴趣到兴趣盎然。大部分同学,在这苦闷的房间里都找到了一点知识的趣味性。

    学了这个面试能不能底气足一些?能的!几近全部同学在四个月苦闷但是有趣的学习时间过后,收到了以前都不敢想象的丰厚报酬。而正是如此,我也才愿意在学习感言上不吝啬时间,说一些大实话。

    在华清远见,班主任的可爱超乎你想象。我是一个害怕老师的人,尤其是在掌握“生杀大权”的班主任面前,更是风雨飘摇,恍惚不定。但是华清的班主任确实是在华清学习这段时间里的又一道阳光,班上每天会有活泼的同学和班主任开着玩笑,这是每天早上的必修课,所以苦闷的一天往往开始于早上的欢声。而后是课程老师进入教室,讲课->敲键盘->讲课->敲键盘,周而复始,乐此不疲。进入学习状态后的同学们是不会觉得如何苦闷如何痛苦的,更多的是真真切切的思考,仔仔细细的纠错,这种苦闷到有趣的循环,我心神往。

    和在学校的区别,主要体现在你在华清远见培训的话会比在学校学习更有紧迫感。因为周边的同学都在努力的学习,你追我赶,害怕落后。头脑间的竞争常常比体力间的对抗有趣得多。所以觉得自己学习习惯不太好或者干脆没有的随性同学,不妨来试试?

    谢谢华清远见嵌入式学院四个月的培养,我起先也是不信的,但是我很庆幸最后的我选择相信,我所言非虚,华清远见所言非虚!

    展开全文
  • 课程名称嵌入式学院嵌入式 LINUX 工程师就业培训班 上课时间为 上午 9:00 12:00 下午 13:30 17:30 每天 7 小时正式上课时间 晚自习 18:00 21:00 第一阶段嵌入式 Linux 软件工程师 ? 职场定位 Linux Development ...
  • 嵌入式工程师方面的内容
  • 华清远见嵌入式培训

    2013-10-13 14:03:07
    嵌入式linux应用程序开发标准教程 随书PPT讲义
  • 专注 课程名称嵌入式学院一嵌入式 LINUX工程师就业培训班 上课时间为上午18:00 21:009:00 12:00 下午 13:30 17:30 上课时间为上午 18:00 21:00 第一阶段嵌入式Linux软件工程师 职场定位 Li nux Developme nt Engin ...
  • 课程名称嵌入式学院嵌入式 LINUX 工程师就业培训班 上课时间为 上午 9:00 12:00 下午 13:30 17:30 每天 7 小时正式上课时间 晚自习 18:00 21:00 第一阶段嵌入式 Linux 软件工程师 职场定位 Linux Development ...
  • 华清远见培训期间驱动学习教程欢迎下载学习,包括流程图说明方便理解
  • 作者:王姗姗,华清远见嵌入式学院讲师。 先来了解下什么是标准IO以及文件IO。 标准IO:标准I/O是ANSI C建立的一个标准I/O模型,是一个标准函数包和stdio.h头文件中的定义,具有一定的可移植性。标准IO...

    作者:王姗姗,华清远见嵌入式学院讲师。

    先来了解下什么是标准IO以及文件IO。

    标准IO:标准I/O是ANSI C建立的一个标准I/O模型,是一个标准函数包和stdio.h头文件中的定义,具有一定的可移植性。标准IO库处理很多细节。例如缓存分配,以优化长度执行IO等。标准的IO提供了三种类型的缓存。

    (1)全缓存:当填满标准IO缓存后才进行实际的IO操作。 (2)行缓存:当输入或输出中遇到新行符时,标准IO库执行IO操作。 (3)不带缓存:stderr就是了。

    文件IO:文件IO称之为不带缓存的IO(unbuffered I/O)。不带缓存指的是每个read,write都调用内核中的一个系统调用。也就是一般所说的低级I/O——操作系统提供的基本IO服务,与os绑定,特定于linix或unix平台。

    2区别

    首先:两者一个显著的不同点在于,标准I/O默认采用了缓冲机制,比如调用fopen函数,不仅打开一个文件,而且建立了一个缓冲区(读写模式下将建立两个缓冲区),还创建了一个包含文件和缓冲区相关数据的数据结构。低级I/O一般没有采用缓冲,需要自己创建缓冲区,不过其实在linix或unix系统中,都是有使用称为内核缓冲的技术用于提高效率,读写调用是在内核缓冲区和进程缓冲区之间进行的数据复制。

    其次从操作的设备上来区分,文件I/O主要针对文件操作,读写硬盘等,它操作的是文件描述符,标准I/O针对的是控制台,打印输出到屏幕等,它操作的是字符流。对于不同设备得特性不一样,必须有不同api访问才最高效。

    最后来看下他们使用的函数

     

    标准IO

    文件IO(低级IO)

    打开

    fopen,freopen,fdopen

    open

    关闭

    fclose

    close

    getc,fgetc,getcharfgets,getsfread

    read

    putc,fputc,putcharfputs,puts,fwrite

    write

    1.fopen与open

    标准I/O使用fopen函数打开一个文件:

    FILE fp=fopen(const char path,const char mod)

    其中path是文件名,mod用于指定文件打开的模式的字符串,比如"r","w","w+","a"等等,可以加上字母b用以指定以二进制模式打开(对于 NULL,这里的文件指针并不是指向实际的文 件,而是一个关于文件信息的数据包,其中包括文件使用的缓冲区信息。

    文件IO使用open函数用于打开一个文件:

    int fd=open(char name,int how);

    与fopen类似,name表示文件名字符串,而how指定打开的模式:O_RDONLY(只读),O_WRONLY(只写),O_RDWR (可读可写),还有其他模式请man 2 open。成功返回一个正整数称为文件描述符,这与标准I/O显著不同,失败的话返回-1,与标准I/O返回NULL也是不同的。

    2.fclose与close

    与打开文件相对的,标准I/O使用fclose关闭文件,将文件指针传入即可,如果成功关闭,返回0,否则返回EOF比如:

    if(fclose(fp)!=0) printf("Error in closing file");

    而文件IO使用close用于关闭open打开的文件,与fclose类似,只不过当错误发生时返回的是-1,而不是EOF,成功关闭同样是返回0。C语言用error code来进行错误处理的传统做法。

    3. 读文件getc,fscanf,fgets和read

    标 准I/O中进行文件读取可以使用getc,一个字符一个字符的读取,也可以使用gets(读取标准io读入的)、fgets以字符串单位进行读取(读到遇 到的第一个换行字符的后面),gets(接受一个参数,文件指针)不判断目标数组是否能够容纳读入的字符,可能导致存储溢出(不建议使用),而fgets使用三个参数: char fgets(char s, int size, FILE stream);

    第一个参数和gets一样,用于存储输入的地址,第二个参数为整数,表示输入字符串的最大长度,最后一个参数就是文件指针,指向要读取的文件。最 后是fscanf,与scanf类似,只不过增加了一个参数用于指定操作的文件,比如fscanf(fp,"%s",words)文件IO中使用read函数用于读取open函数打开的文件,函数原型如下:

    ssize_t numread=read(int fd,void buf,size_t qty);

    其中fd就是open返回的文件描述符,buf用于存储数据的目的缓冲区,而qty指定要读取的字节数。如果成功读取,就返回读取的字节数目(小于等于qty)

    4. 判断文件结尾

    如果尝试读取达到文件结尾,标准IO的getc会返回特殊值EOF,而fgets碰到EOF会返回NULL,而对于nix的read函数,情况有所不 同。read读取qty指定的字节数,最终读取的数据可能没有你所要求的那么多(qty),而当读到结尾再要读的话,read函数将返回0.

    5. 写文件putc,fputs,fprintf和write

    与读文件相对应的,标准C语言I/O使用putc写入字符,比如:

    putc(ch,fp);

    第一个参数是字符,第二个是文件指针。而fputs与此类似:

    fputs(buf,fp);

    仅仅是第一个参数换成了字符串地址。而fprintf与printf类似,增加了一个参数用于指定写入的文件,比如:

    fprintf(stdout,"Hello %s.\n","dennis");

    切记fscanf和fprintf将FILE指针作为第一个参数,而putc,fputs则是作为第二个参数。

    在文件IO中提供write函数用于写入文件,原型与read类似:

    ssize_t result=write(int fd,void buf ,size_t amt);

    fd是文件描述符,buf是将要写入的内存数据,amt是要写的字节数。如果写入成功返回写入的字节数,通过result与amt的比较可以判断是否写入正常,如果写入失败返回-1

    6. 随机存取fseek()、ftell()和lseek()

    标准I/O使用fseek和ftell用于文件的随机存取,先看看fseek函数原型

    int fseek(FILE stream, long offset, int whence);

    第一个参数是文件指针,第二个参数是一个long类型的偏移量(offset),表示从起始点开始移动的距离。第三个参数就是用于指定起始点的模式,stdio.h指定了下列模式常量:

    SEEK_SET 文件开始处 SEEK_CUR 当前位置 SEEK_END 文件结尾处

    看几个调用例子: fseek(fp,0L,SEEK_SET); //找到文件的开始处 fseek(fp,0L,SEEK_END); //定位到文件结尾处 fseek(fp,2L,SEEK_CUR); //文件当前位置向前移动2个字节数

    而ftell函数用于返回文件的当前位置,返回类型是一个long类型,比如下面的调用:

    fseek(fp,0L,SEEK_END);//定位到结尾 long last=ftell(fp); //返回当前位置

    那么此时的last就是文件指针fp指向的文件的字节数。

    与标准I/O类似,nix系统提供了lseek来完成fseek的功能,原型如下:

    off_t lseek(int fildes, off_t offset, int whence);

    fildes是文件描述符,而offset也是偏移量,whence同样是指定起始点模式,唯一的不同是lseek有返回值,如果成功就 返回指针变化前的位置,否则返回-1。whence的取值与fseek相同:SEEK_SET,SEEK_CUR,SEEK_END,但也可以用整数 0,1,2相应代替。“本文由华清远见http://www.embedu.org/index.htm提供”

    展开全文
  • 此为华清远见的课件,讲嵌入式linux开发,课件很好很详细,对想学嵌入式开发的同学有很大的帮助!
  • 包括嵌入式Linux应用程序开发与Linux设备驱动开发详解 入手方便容易,可以深入学习
  • 作者:曾宏安,华清远见嵌入式学院高级讲师。 运算符sizeof可以计算出给定类型的大小,对于32位系统来说,sizeof(char) = 1; sizeof(int) = 4。基本数 据类型的大小很好计算,我们来看一下如何计算构造数据类型...

    如何计算结构体的大小

    作者:曾宏安,华清远见嵌入式学院高级讲师。

    运算符sizeof可以计算出给定类型的大小,对于32位系统来说,sizeof(char) = 1; sizeof(int) = 4。基本数

    据类型的大小很好计算,我们来看一下如何计算构造数据类型的大小。C语言中的构造数据类型有三种:数

    组、结构体和共用体。数组是相同类型的元素的集合,只要会计算单个元素的大小,整个数组所占空间等于

    基础元素大小乘上元素的个数。


    结构体中的成员可以是不同的数据类型,成员按照定义时的顺序依次存储在连续的内存空间。和数组不

    一样的是,结构体的大小不是所有成员大小简单的相加,需要考虑到系统在存储结构体变量时的地址对齐问

    题。看下面这样的一个结构体:

    struct stu1
    {
    int i;
    char c;
    int j;
    };

    先介绍一个相关的概念——偏移量。偏移量指的是结构体变量中成员的地址和结构体变量地址的差。结

    构体大小等于最后一个成员的偏移量加上最后一个成员的大小。显然,结构体变量中第一个成员的地址就是

    结构体变量的首地址。因此,第一个成员i的偏移量为0。第二个成员c的偏移量是第一个成员的偏移量加上第

    一个成员的大小(0+4),其值为4;第三个成员j的偏移量是第二个成员的偏移量加上第二个成员的大小

    (4+1),其值为5。

    实际上,由于存储变量时地址对齐的要求,编译器在编译程序时会遵循两条原则:一、结构体变量中成

    员的偏移量必须是成员大小的整数倍(0被认为是任何数的整数倍) 二、结构体大小必须是所有成员大小的

    整数倍。

    对照第一条,上面的例子中前两个成员的偏移量都满足要求,但第三个成员的偏移量为5,并不是自身

    (int)大的整数倍。编译器在处理时会在第二个成员后面补上3个空字节,使得第三个成员的偏移量变成8。

    对照第二条,结构体大小等于最后一个成员的偏移量加上其大小,上面的例子中计算出来的大小为12,

    满足要求

    再看一个满足第一条,不满足第二条的情况

    struct stu2
    {
    int k;
    short t;
    };

    成员k的偏移量为0;成员t的偏移量为4,都不需要调整。但计算出来的大小为6,显然不是成员k大小的

    整数倍。因此,编译器会在成员t后面补上2个字节,使得结构体的大小变成8从而满足第二个要求。由此可

    见,大家在定义结构体类型时需要考虑到字节对齐的情况,不同的顺序会影响到结构体的大小。对比下面两

    种定义顺序

    struct stu3
    {
    char c1;
    int i;
    char c2;
    };

    struct stu4
    {
    char c1;
    char c2;
    int i;
    };

    虽然结构体stu3和stu4中成员都一样,但sizeof(struct stu3)的值为12而sizeof(struct stu4)的值为8。

    如果结构体中的成员又是另外一种结构体类型时应该怎么计算呢?只需把其展开即可。但有一点需要注

    意,展开后的结构体的第一个成员的偏移量应当是被展开的结构体中最大的成员的整数倍。看下面的例子:

    struct stu5
    {
    short i;
    struct
    {
    char c;
    int j;
    } ss;
    int k;
    };

    结构体stu5的成员ss.c的偏移量应该是4,而不是2。整个结构体大小应该是16。

    如何给结构体变量分配空间由编译器决定,以上情况针对的是Linux下的GCC。其他平台的C编译器可能

    会有不同的处理。

    本文来自CSDN博客,转载请标明出处:

    http://blog.csdn.net/farsight2009/archive/2011/04/11/6315062.aspx

    展开全文
  • 1. 嵌入式系统 软硬件组成 bootloader kernel window linux vxwork rootfs 挂载根文件系统 2. 编译工具 nm 符号表 addr2line 根据地址 定位到行号 size 读取段大小 readelf objdump objcopy ...

    复习:

    1. 嵌入式系统 软硬件组成
        bootloader 
        kernel  window linux vxwork 
        rootfs    挂载根文件系统 
    2. 编译工具
        nm  符号表
        addr2line   根据地址 定位到行号
        size     读取段大小
        readelf
        objdump    
        objcopy
        strip 
        strings


    ***********************************

    1. uboot常用命令的使用
        
        1、pri print  printenv
            打印环境变量
          save  saveenv   保存环境便令
            
        2、set  setenv
            设置环境变量 
            set xxxx  "value"    设置环境变量值
            set xxxx        删除环境变量
        
        3、help 帮助信息
            uboot 支持哪些命令
            help go    go 命令使用说明

        4、loadb   loady  loadx
            通过串口 传输数据 
            
        5、tftp
            网络方式下载 数据 
            
        6、go 
            执行 程序
        7、ping
            icmp 
            测试 开发板 和 Ubuntu 是否连通

        8、bootm
            启动 kernel 
            bootm  内核地址  文件系统地址  
            bootm 41000000 
        
        9、mmc
            
            烧写 eMMC
            1. FS6818# tftp 41000000  win-uboot.bin
            2. FS6818# mmc dev 2
            3. FS6818# mmc write 41000000 0 300
            4. FS6818# saveenv    不用 save 
            
            烧写 SD卡
            1. FS6818# tftp 41000000  win-uboot.bin
            2. FS6818# mmc dev 0
            3. FS6818# mmc write 41000000 0 300
            4. FS6818# saveenv    不用 save 
            
            出现 bl1 就可以了  
                bl2 是 uboot
            
            uboot 烧写
            
            mmc info 
            mmc dev [0  2]
            mmc write  内存地址  起始块  块儿个数
            mmc read 内存地址  起始块  块儿个数
            mmc erase   起始块  块儿个数
            mmc list  列出 soc 上 mmc 的适配器个数
        10 环境变量
            set bootcmd "tftp 41000000 uImage;  bootm 41000000"
            
        11 boot 命令 
            让uboot 解析执行 bootcmd 中的命令
        12 reset   re
            重启uboot

    2. bootloader作用
        1. 对应硬件有 强依赖 
        2. 初始化硬件 
        3. 引导内核 启动
        当内核启动起来, 它就功成身退, 所占用的内存
        资源, 被内核回收

    3. bootloader的种类
        vivi 韩国   redboot 美国  uboot 德国

    4. uboot特点
        1、 开源免费软件
        2、 代码框架清晰,容易移植维护
        3、 支持多种架构处理器
        4、 支持开发板种类很多
        5、 含有丰富的命令
        6、 支持多种网络协议
        7、 多种文件系统类型,USB,SD的驱动
        8、 更新活跃,使用者多,有助于解决问题

    5. 两种模式
        1. 自启动模式
        2. 交互模式

    6. uboot源码获取方式
        1. 通过官方网站 获取 uboot 源码
            http://ftp.denx.de/pub/u-boot/
        2. 从厂商获取 核心板 uboot
            gcc 编译工具, uboot, kernel 

    7. uboot 版本选择
        1. 不选择老版本, 维护不方便
        2. 不要 选择 太新的
            不稳定, 新功能知道的人少
        带 rc 公测的,测试
        选择 不带 rc

    8. uboot源码,配置与编译
        
        1. 拷贝大 Ubuntu 用 tar -xvf 解压

        2. 交叉 编译工具 配置 
            $ vi Makefile 
            修改顶层Makefile 
             198 ifeq (arm , arm)
             199 CROSS_COMPILE ?= arm-none-linux-gnueabi-                                                                          
             200 endif
        3. 配置  指定 开发板
            $ make fs6818_config
            $ make fs6818_config O=../output
        4. 编译 uboot  必须在 顶层目录 执行 make 
            $ make   /  make all 
            make all -j4   多核编译
            make all V=1

        5. 清除
            $ make clean        # 清除 .o .bin 
            $ make mrproper        # 清除 .o .bin + 配置文件 + 
            $ make distclean    # 清除 .o .bin + 配置文件 +  rm .bak ....

    9. 移植的准备工作,获取硬件处理器器信息
        board   fs6818
        SoC     s5p6818
        cpu     armv8     ----  cortex-a53
        arch    arm         架构
        vender  samsung 

    10. u-boot 源码目录结构介绍
        arch:     cpu架构相关代码
        arch/arm/
        arch/arm/cpu/
        arch/arm/cpu/arm11  arm9 armv8 armv7
        board:    不同厂商板子相关代码
        board/samsung/:  三星厂商的板子
        driver: 设备驱动代码
        fs:   文件系统
        lib:  解压缩代码,字符串处理,校验代码, 红黑树,快速排序
        net:  网络协议
        common:    命令相关代码
        doc:      文档, 相比Linux内核 的文档太少了
        include:  头文件
        include/configs/   各个开发板的配置头文件  .h 
        scripts:     编译时使用的 Makefile shell 脚本
        dts:     以后的uboot版本也将使用设备树
        disk:    硬盘分区相关代码
        CREDITS:  对uboot的主要贡献者
        boards.cfg:  uboot 都支持哪些板子

    11. 配置流程详解
        468 %_config:: outputmakefile
        469     @$(MKCONFIG) -A $(@:_config=)  
        
        @/home/sky/share/u-boot-2014.07/mkconfig -A $(@:_config=) 
        @/home/sky/share/u-boot-2014.07/mkconfig -A fs6818
        
        生成  
            include/config.h
            include/config.mk

    12. 动手移植 uboot 
        1. $ vi ./boards.cfg  添加一行
            1146 Active  arm   armv8   s5p6818  hqyj  s5p6818      x6818   -
        2. $ mkdir ./board/hqyj 
        2. $ cp ./board/samsung/s5p6818/ ./board/samsung/common/ ./board/hqyj/  -r
        3. $ cp ./include/configs/fs6818.h ./include/configs/x6818.h 

        4. $ make x6818_config   // 到顶层目录 配置
        5. $ make                  // 到顶层目录 编译

    13. 编译流程详解
        见 文档 -->  u-boot配置流程-编译流程详细分析.txt 

    14. 芯片的启动流程
        1、BL0 IROM 20K         norflash 
            代码由三星芯片出厂时固化的
            1. 内存地址 0x34000000
            2. 时钟, 初始化ISRAM,SD/eMMC的控制器, 
            3. 读取拨码开关
            4. 跳过SD卡第0块,从第一块读取56k到ISRAM  读到0xFFFF_0000
            5. PC打到ISRAM运行BL1代码 0xFFFF_0000
        2、BL1 ISRAM  64K        
            代码由三星提供bin文件  nsih.txt + S6818_N.bl1 组成bl1
            1. 内存地址 0xFFFF_0000
            2. DDR 初始化 0x40000000 ~ 0x80000000 1G 内存
            3. 从SD卡或者eMMC 读取 自己的代码(蜂鸣器,或者led,uboot)
                从哪里(SD卡 还是eMMC)读,由bl1代码决定
            4. 读到0x43C00000

    15. 点亮第一盏LED灯
        1. $ mk6818 pwm.bin nsih.txt S6818_N.bl1 interface.bin
        2. $ cat 512B   pwm.bin  >  win-pwm.bin
        3. FS6818# tftp 41000000 pwm.bin
        4. FS6818# mmc dev 0
        5. FS6818# mmc write 41000000 1 55
        


     

    展开全文
  • 华清远见嵌入式linux应用程序开发技术详解(内部资料) 第1章 Linux快速入门   1.1 嵌入式Linux基础   1.2 Linux安装   1.3 Linux文件及文件系统   1.4 实验内容——安装Linux操作系统   本章小结 ...
  • 复习 1. uboot 命令 reset tftp mmc dev mmc info mmc write mmc read mmc erase uboot 配置交叉编译工具 Makefile uboot 配置 make boardname_config in...
  • 人工智能概念: AI,英文的直译就是人工智能,... 华清远见专注于嵌入式行业培训16年,有多位大神级的老师授课,现在提供嵌入式AI课程,python AI课程,给广大想转行的或者想做AI相关工作的学员一个很好的学习机会。
  • 【1】 atoi() 将字符串转化为整数 【2】 struct sockaddr_in serveraddr = { .sin_family = AF_INET, .sin_port = htons(atoi(argv[2])), .sin_addr.s_addr = inet_addr(argv[1]), }...
  • 【线性表】 线性表的特征: 1) 对非空表,a0是表头,无前驱; 2) an-1是表尾,无后继; 3) 其它的每个元素ai有且仅有一个直接前驱(ai-1)和一个直接后继(ai+1)。 【顺序存储结构】 数组 空间先固定好, 连续存储 ...
  • 使用一种工具(仅一种工具)武装自己,您可以在下一个嵌入式项目的质量和交付时间上做出巨大的改进。 该工具是:绝对承诺对开发代码的方式进行一些小而基本的更改 。 有了改变的意志,今天您应该做的是: 购买并...
  • 加盟朝阳产业,成就辉煌事业——————“华清远见嵌入式学院”诚招全国代理 一、最有发展前途的产业———教育业据2008年中国教育与培训业研究报告显示,中国的教育培训市场尚处于朝阳阶段,尤其是职业技能教育...
  • 作者:李强,华清远见嵌入式学院讲师。 有这么几个问题,在上驱动课程的时候,我感觉一直困扰着同学们: ● 用户程序编译连接形成的地址空间在什么范围内?  ● 内核编译后地址空间在什么范围内?  ●
  • 【1】复习 1. led驱动 readl & writel 2. regster_chrdev & unregister_chrdev 3. kmalloc kzalloc kfree vmalloc vzalloc vfree ...
  • JAVA基础 方法 方法重载 掌握数组的声明 掌握数组的初始化 掌握数据的冒泡 拷贝和排序 面向对象 类和对象 成员变量 成员方法 构造方法 ...1简单的说:方法就是完成特定功能的代码块 ...修饰符 返回值类型 方法名...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,141
精华内容 856
关键字:

华清远见嵌入式