第六章--LCD驱动移植


6.1 认识LCD相关硬件原理
    LCD显示屏相关参数,如何设置参数,如何根据型号编写驱动
    6.1.1 概述
        0)    显示汉字,字符,图形
            低压,低功耗,体积小,重量轻,超薄
        1)  根据物理结构:扭曲向列型(TN-LCD),超扭曲向列型(STN-LCD),双层超扭曲向列型(DSTN-LCD)
                          薄膜晶体管型(TFT-LCD)
                          前三种显示原理相同,只是液晶分子扭曲角度不同,
                          TFT-LCD采用完全不同的显示方式
        2)  常用参数    
                    1]PPI(Pixel Per Inch)每平方英寸像素数目,PPI与显示密度,拟真度,显示效果正相关,目前市场TFT都是100PPI
                    2]分辨率 :VGA ,SVGA,UXGA SXGA+,SXVGA+为1400x1050
                              XGA:1280x1024
                              Quad-VGA:1280x960
                    3]BPP(Bit Per Pixel) 每个像素使用多少位表示颜色,例如黑白色只用1bit
                                         4阶灰度2bit(2BPP)表示一个点,对于256色要用8bit(8BPP)表示一个点
        3)  显示原理
                    内存显示完整图像,采用CRT显示器概念,一幅画像称为一帧,一帧由多行排列组成,每行由多个像素组成,每个像素色彩由若干位数据表示,单色显示器每个像素用1位即1BPP
                            256色显示器每个像素使用8位表示即8BPP
                    显示器从屏幕左上方开始一行一行取得单个像素数据并显示,显示到最右时,跳下一行知道现实所有重新调到左上方即Z字形扫描
                    同时使用帧扫描和行扫描信号
    6.1.2 控制器:
                  1.控制时序和信号,从而驱动LCD。
                  2.用户只需通过读写LCD控制器的一些列寄存器完成配置。
                  3.用户需要显示的内容都是LCD控制器从帧缓冲区读取,然后发送到LCD控制器进而显示在屏幕
                  4.新的处理器都集成了LCD控制器,如S3C2440等
                  5.S3C2440的LCD控制器由一个逻辑单元组成,它把LCD图像数据从系统内存的buffer传到外部LCD驱动器。LCD控制器使用基于时间的像素都懂算法和帧速率控制思想,支持单色,2-bit per pixel(4级灰度)或者
                    4-bit-pixel(16级灰度)屏,并可与256色(8BPP)和4096色(12BPP)彩色STN-LCD连接
                  6.LCD控制器还支持1BPP,2BPP,4BPP,8BPP的调色板TFT彩色屏,并支持64K色(16BPP)和16M(24BPP)非调色板真彩色显示,根据编程满足不同需求例如单向像素数,数据线宽度,接口时序,刷新速率等
    6.1.3 LCD控制器方块图
                ****************插入图像*******************

                 
                1.根据工作原理LCD控制器接口时序分为STN和TFT两种,根据实际需要对控制器进行不同设置产生不同时序
                2.LCD控制器中控制信号有VFRAME,VLINE,VCLK和VM等
                3.S3C2440作为视频数据的数据端口,是VD[23:0].
                4.LCD控制器由REGBANK,LCDCDMA,VIDPRCS,TIMEGEN和LPC3600等组成
                5.REGBANK:17个可编程寄存器组和一块256x16调色板内存组成,配置LCD控制器
                6.LCDCDMA:专用DMA,自动把内存中视频数据传到LCD驱动器,在CPU不干预情况下显示在LCD屏。
                7.VIDPRCS:接收LCDCDMA的数据,并转换为合适的数据格式,例如4/8位扫描,4位双扫显示模式,然后通过数据端口VD[23:0]传送数据到LCD驱动器
                8.TIMEGEN:1]可编程逻辑组成,支持不同LCD驱动器接口时序和速率需求
                          2]可产生VFRAME,VLINE,VCLK和VM等时钟信号
            
                9.数据流描述
                        LCDCDMA中存在FIFO存储器。如FIFO空或部分空,LCDCDMA请求从存储器取得数据,(每个突发请求,连续读4个字(16bytes),在总线传输中,不匀速总线控制权交给另一个总线)用突发的存储传输模式取得数据
                        传输请求被存储控制器总线仲裁器接收后,产生连续4个字数据传输control系统内存到内部的FIFO(12个FIFOL和16个FIFOH组成的28个字),
                        S3C2440用2个FIFO支持双扫显示模式,如单扫模式,只有一个FIFO会用到
                        
    6.1.4 控制器操作(STN和TFT两种)
                    视频数据在内存中存储方式:
                        RGB三色组成单个像素色彩。也就是三基色
                    1.24BPP显示使用24位表示一个像素点,每种颜色8比特,LCD控制器从内存获得某个像素的24位颜色值,然后通过VD[23:0]数据线发送LCD驱动器,像素值与VD[23:0]引脚的对应关系
                    ******************************插入图片像素值与VD映射关系***********************

                    
                    2.16BPP
                     3.8BPP
                    4.256色调色板
    6.1.5 LCD控制寄存器
                    17个控制寄存器,包括LCDCON1-LCDCOON5,LCDSADDR1-LCDSADDR3等
6.2 LCD参数设置
        根据LCD屏正确设置对应的LCD寄存器参数
        1]设置VFRAME,VLINE(根据液晶屏尺寸和显示木事设置),他们对应LCDCON2寄存器的HOZVAL和LINEVAL值
              HOZVAL=(水平尺寸/VD数据位)-1
              彩色液晶屏,水平尺寸=3x水平像素点数
              VD数据位=BBP数(不分单双扫描)
              LINVAL=垂直尺寸-1(单扫描)
              LINVAL=垂直尺寸/2-1(双扫描)
         2]设置VCLK:直接由系统总线(AHB)工作频率HCLK直接分频得到
              VCLK=HCLK/((CLKVAL+1)*2)
         3]帧速率:即VSYNC信号频率。帧速率与VSYNC,VBPD,VFPD,LINEVAL,HSYNC,HBPD,HFPD,HOZVAL和CLKVAL的域有关
              他们是LCDCON1/2/3/4。大多数LCD驱动器需要他们合适的帧速率。
              帧速率公式:
              Frame Rate = 1/[{(VSPW+1)+(VPBD+1)+(LINEVAL+1)+(VFPD+1)}*{(HSPW+1)+(HBPD+1)+(HFPD+1)+HOZVAL+1}*{2*(CLKVAL+1)/HCLK}]
               VSPW,VBPD,VFPD,HSPW,HBPD,HFPD参考LCD屏幕手册

6.3 内核LCD驱动机制
        Linux提供的驱动:帧缓冲(FrameBufer)设备驱动程序。实际工作只需在显示缓存中填写要显示的数据,屏幕即可显示
                        驱动得到显示缓存的地址,即可操作它
    6.3.1 FrameBufer概述
            1. 从Linux2.2.x提供的驱动程序接口
            2. 把显示设备抽象为帧缓冲区设备,为图像设备提供抽象化处理,代表了一些视频设备。
            3.允许APP通过定义明确界面访问图像硬件设备。软件无序了解任何硬件底层驱动内容
            4.FB允许app在图形模式下直接对显示缓冲区读写和IO控制等
            5.通过专门的设备结点对相应的设备进行访问,如/dev/fb0,app可将其视为显示内存的引用,将其映射到进程地址空间后,就可读写,读写可反映到具体的LCD设备
            6.FB驱动支持控制台的字符显示。linux2.4种与FB控制台相关的在fbcon和其他相关目录。linux2.6放在drivers/video/console中,涵盖各种格式显示缓冲的字符输出,字体定义文件,简化FB控制台驱动程序移植
    6.3.2 FB设备驱动结构
          FB设备驱动基于两个文件 linux/include/linux/fb.h和 linux/drivers/video/fbdev/core/fbmem.c 其中fb.h定义FB驱动所需的几乎所有结构体,
          包括struct fb_info,struct fb_var_screeninfo 和struct fb_fix_screeninfo。
            1.struct fb_info
                1]记录帧缓冲全部信息,包括设置参数、状态、操作函数指针等
                2]每个帧缓冲设备都由一个struct fb_info描述,所有参数都是面向特定设备,工程师就是填写这些数值。
                3]fb_info也是FB相关结构唯一在内核空间可见的,用户可通过ioctl()操作设备,这个结构体就是用于支持ioctl()的这些操作的
            2.fb_var_screeninfo:
                1]记录帧缓冲设备和指定显示模式的可修改信息。
                2]包括显示屏分辨率,像素比特数,一些时序变量。
                3]变量xres定义一行所占像素数目,yres定义一列所占像素数目,bits_per_pixel定义每个像素所需位数
                4]参数都可通过应用程序设置
                5]通过fb_opt实现
            3. fb_fix_screeninfo:
                1]定义硬件不可变属性,显示缓冲区映射地址的定义
                2]缓冲区不应该被APP改变
                
            4. fbmem.c linux/drivers/video/fbdev/core/fbmem.c
                1]是FB设备驱动关键,为上层应用提供系统调用,为下层特定硬件驱动提供编程接口
                2]底层硬件驱动乣用到这里的接口来向系统内核注册它们自己。
                3]fbmem.c为所有支持FB的设备驱动提供通用接口,避免重复的工作
                4]用户只需针对fbmem.c提供的底层驱动接口函数分别实现即可,也就是fb.h中的structfb_ops函数指针组
                5]fbmem.c实现register_framebuffer和unregister_framebuffer,提供给下层FB驱动的接口。底层设备驱动所要做的事情就是填充fb_info结构并想系统注册或注销
                
                
6.4 内核现有LCD驱动源码分析
        内核现有LCD驱动再针对具体型号和硬件资源修改
        6.4.1 主要工作:初始化函数的编写和填充fb_info结构体的主要成员函数
            1.编写初始化函数
                1]编写初始化函数,初始化LCD控制器寄存器,通过写寄存器设置显示模式和颜色数,然后在内存中分配LCD显示缓冲区。linux中可用kmalloc()分配连续空间
                2]缓冲区大小:点阵行数*点阵列数*用于表示一个像素的比特数/8.
                3]缓冲区通常分配在片外SDRAM(容量大),起始地址保存在LCD控制器
                4]本节LCD显示方式:320*240 ,16位彩色,需要分配显示缓冲区:320*240*2 = 150kb
                5]初始化fb_info结构体,填充成员变量,调用register_framebuffer(&fb_info)将fb_info注册入内核
            2.编写成员函数
                1]嵌入式系统只需要实现fb_ops中的 fb_get_fix fb_get_var ,fb_set_var三个函数
                2]应用程序对设备ioctl系统调用时会调用他们
                3]fb_get_fix通过fb_fix_screeninfo获取系统当前状态对成员变量赋值,主要是smem_start,smem_len,最终返给应用程序。
                4]fb_set_var函数传入参数是fb_var_screeninfo,需要对xres,yres和bit_per_pixel赋值
            3.对于/dev/fb 主要操作
                1]读写/dev/fb 等于读写屏幕缓冲区 
                2]映射操作(map):因linux工作在保护模式,每个应用都有自己的虚拟地址空间,应用不能直接访问物理缓冲区地址,故通过mmap()
                  操作file_operations结构,可将文件内容映射到用户空间。帧缓冲设备则可通过映射操作,可将屏幕缓冲区的物理地址映射到用户空间一段虚拟地址之内,之后用户就能通过读写此段虚拟地址访问屏幕缓冲区,在屏幕上绘图
                3]IO控制:帧缓冲设备对设备文件的ioctl操作可读取/设置显示设备及屏幕参数(分辨率,显示颜色数和屏幕大小等)。ioctl由底层硬件驱动完成。
                    一般步骤:1.打开 /dev/fb设备文件;
                             2.用ioctl()取得当前屏幕参数(分辨率,像素比特数)
                             3.根据屏幕参数计算屏幕缓冲区大小
                             4.将屏幕缓冲区映射到用户空间
                             5.映射后可直接读取屏幕缓冲区,进行绘图和显示
        6.4.2 s3c2410fb_init()函数分析
                1.只包含了platform_driver_register()调用,参数&s3c410fb_driver,即向内核注册一个platform设备驱动,该设备是LCD设备
                2.platform两个重要数据结构:platform_device和platform_driver(include/linux/platform_device.h)
                3.LCD驱动(drivers/video/s3c2410fb.c)有platform_driver结构体
                    static struct platform_driver s3c2410fb_driver = {
                        .probe = s3c2410fb_probe, //初始化函数,
                        .remove = s3c2410fb_remove,
                        .suspend = s3c241fb_suspend,
                        .resume = s3c2410fb_resume,
                        .driver = {
                            .name = "s3c2410-lcd", //设备名字,名字一定要和struct platform_device中的name域一致才能把平台驱动和前面定义平台数据联系起来
                            .owner = THIS_MODULE,
                        },        
                    };
        6.4.3 s3c2410fb_probe()函数分析
                1.关键函数
                    s3c2410fb_info:描述整个LCD驱动的结构体,驱动自己定义的设备数据结构,记录s3c2410fb驱动所有信息
                    s3c2410fb_display:定义了LCD规格和时序
                    fb_info:framebuffer的设备数据结构,表示一个显示设备,probe最终填充并向内核注册
                    s3c2410fb_mach_info:描述LCD初始化时所用的值,包含LCD控制器的GPIO,用来设置引脚的功能,和平台有关
                        所在目录:arch/arm/plat-samsung/include/plat/fb-s3c2410.h;
                    Resource:指向设备用到的IO资源,是平台驱动的结构
                    irq:保存中断号。
                    
                2.函数执行步骤
                    1.获得平台数据
                    2.如果mach_info为NULL,则整个驱动程序退出
                    3.查找当前显示屏规格,此规格定义在mach-smdk2440.c文件
                    4.获取设备中断号,中断号也在mach-smdk2440.c文件中定义的硬件所使用到的中断资源
                    5.向内核申请一段sizeof(struct s3c2410fb_info)+size的空间,size:设备私有数据空间,
                    6.fb_info的par指向该私有空间
                    7.设置驱动数据并填充驱动数据
                    8.映射内核资源(IO口,中断号,平台数据不定期传递来的硬件资源地址都是物理地址,内核访问硬件都是虚拟地址,故用相关函数映射物理地址为虚拟地址),映射失败退出程序
                    9.关闭显示器,对fbinfo赋值
                    10.申请中断并打开LCD时钟,使得各个LCD相关引脚输出信号。
                    11.显示内存容量并映射DMA资源,上层应用存储要显示的图像到此内存区,LCD控制器通过DMA从映射内容取出图像
                    12.初始化各个LCD控制寄存器,注册fbinfo,并为该设备创建一个sysfs中的属性
                    13.pdev->dev.platform_data的初始化,内核启动init进程前,会执行smdk2410_map_io函数,次函数中加入s3c24xx_fb_set_platdata(&smdk2410_lcd_platdata)
                       arch/arm/plat-samsung/devs.c 
                     
                     
                3.s3c2410fb_init_registers
                    1.保存本地中断
                    2.修改处理器GPIO工作方式
                    3.初始化LCD控制寄存器
                    4.让处理器的LCD控制器三地址寄存器指向正确位置,也就是LCD缓冲区,参考用户手册
                    5.打开video,因为probe中关闭了
                    
        6.4.4   s3c2410fb_init_remove:移除设备,释放资源(内存空间,中断线等)
                    1.获得fb_info信息
                    2.得到私有数据
                    3.停止LCD控制器
                    4.该函数释放缓冲区,停止时钟
                    5.得到中断线并释放
                    6.释放内存空间
                    7.想内核注销该帧缓冲
                    
                    
6.5 移植内核中的LCD驱动
        不同开发人员设计同一种设备都具备独特性,例如访问硬件资源对应的端口地址,故驱动移植首先要明确驱动的硬件设备连接情况
        然后对驱动源码进行适应具体硬件修改
        
        6.5.1 LCD硬件电路图
              1.LCD的像素同步时钟信号,水平同步信号,垂直同步信号直接连接到LCD的VCLK,VLINE和VFRAME
              2.GPG4作为LCD电源信号直连到LCD_PWREN
                ************插入电路图**********************

            
        6.5.2 修改源码
        6.5.3 配置内核
                1.make menuconfig
                2.devices drivers -> Graphics support-> Support for frame buffer devices
                3.在驱动程序调试阶段最好选中S3C24010 LCD debug messages
                4.增加开机logo,选择bootup logo
                
6.6总结
    分析LCD控制寄存器硬件操作,内核中自带的LCD驱动源程序基础讲述LCD移植,
    内核中FB驱动的体系结构,如何操作LCD控制器
    中断FB数据结构掌握

展锐LCD移植介绍V1.2-nowatermark
08-28
在uboot移植完成后,需要将LCD驱动关联到内核中,需要在配置头文件中添加结构体声明,并初始化supported_panel结构体。 知识点6: Kernel移植说明 Kernel移植LCD移植的第二步,需要在dtsi文件中添加LCD对应的配置...
T-Dongle-S3开发笔记-移植LVGL
02-21
移植LVGL时,可能需要修改此文件来确保LVGL相关的配置项正确,比如开启LCD和触摸屏驱动支持。 `.gitignore`文件定义了Git版本控制系统应当忽略的文件模式,避免将不必要的文件添加到版本库中。在LVGL移植过程中,...
像素深度 与 图像深度
waterzhou的专栏
04-05 5732
像素深度是指存储每个像素所用的位数,它也是用来度量图像的分辨率。像素深度决定彩色图像的每个像素可能有的颜色数,或者确定灰度图像的每个像素可能有的灰度级数。例如,一幅彩色图像的每个像素用R,G,B三个分量表示,若每个分量用8位,那么一个像素共用24位表示,就说像素的深度为24,每个像素可以是16 777 216(2的24次方)种颜色中的一种。在这个意义上,往往把像素深度说成是图像深度。表示一个像
将1bpp的bmp图像存储为1bpp或者2bpp的tiff格式
菜头
08-06 3348
// 将1bpp的位图转换为 1bit/2bit tiff /** 参数: BYTE *src 二值图像的像素数据,不包含头部信息, 1bpp, int src_width 原图的宽度, in pixles, int src_height 原图的高度, in pixles int bpp 转换tiff指定的bpp */ static BYTE * BW2Tif(BYTE *s
计算机bpp是什么意思?(每像素位数 bits per pixel)
Dontla的博客
04-15 3913
看ffmpeg文档,对YUV420sp的解释中出现了这个: PIX_FMT_NV12, ///< planar YUV 4:2:0, 12bpp, 1 plane for Y and 1 plane for the UV components, which are interleaved (first byte U and the following byte V) bpp 是 bits per pixel 的缩写,表示每像素所占存储空间的位数 参考文章:BPP: 每像素位数 ...
基于imx6ull的LCD驱动移植
最新发布
qq_47258284的博客
04-18 1362
移植LCD驱动的同时也要触摸屏的驱动;对于LCD驱动移植LCD驱动在内核中很完善,驱动程序不用大改,只需要修改设备树,也就是修改硬件资源,根据具体的LCD屏幕修改参数。步骤为:确定所用LCD屏幕的分辨率,找到LCD厂家的设备树文件源码,可以在dts中直接搜索display-timings或者时序参数关键词找到对应的LCD详细时序和信号极性,替换到自己的设备树文件对应位置中。因为有转接板的原因,引脚的设置就不改了,由转接板完成引脚对应工作,但要记得检查LCD复位引脚。
U-Boot移植 (2)- LCD 驱动修改和网络驱动修改
kakaka666的博客
07-04 1550
I.MX6ULL内部有个以太网MAC外设,也就是ENET,需要外接一个PHY芯片来实现网络通信功能,也就是「内部MAC+外部PHY芯片」的方案。有两个网络接口ENET1和ENET2,正点原子的开发板提供了这两个网络接口,其中ENET1和ENET2都使用LAN8720A作为 PHY 芯片。NXP 官方的开发板使用KSZ8081这颗 PHY 芯片。更换 PHY 芯片以后需要调整网络驱动,使网络工作正常。ENET1ENET1 的网络 PHY 芯片为LAN8720A,通过 RMII 接口与I.MX6ULL。
Linux的LCD驱动源码分析及移植.doc
02-23
Linux的LCD驱动源码分析及移植涉及到嵌入式系统中Linux内核与硬件交互的关键环节。在本场景中,我们关注的是基于ARM9处理器的Linux操作系统内核如何移植和配置以支持LCD控制器。以下是相关知识点的详细说明: 1. **...
S5pc100触摸屏驱动移植
04-10
第六步:修改arch/arm/mach-s5pc100/mach-smdkc100.c文件 在这个文件中,我们需要添加头文件和平台数据,以便支持S5PC100芯片的触摸屏驱动。例如,我们可以添加以下内容: #if defined(CONFIG_TOUCHSCREEN_S3C2410...
mini2440之U-boot移植详细手册-20100419
09-19
第1 章 BOOTLOADER 的概念与功能.................................................................................................................... 4 1.1 嵌入式LINUX软件结构与分布 .....................
超级任天堂SFC,ROM字模转换程序8X12(2bpp)转8X16(2bpp)
02-02
我自己使用VB编写的,能处理超级任天堂的ROM,将8*12格式的字库转换成8*16的字库,这样就能通过CT来查看了。
LCD驱动移植
08-05
为了对LCD显示屏幕的支持,首先移植LCD驱动,这个文档是Linux2.6.24&LCD;。
2.8寸 ILI9341 TFTLCD 学习移植到STM32F103C8T6
weixin_53944340的博客
12-06 3977
2.8寸 ILI9341 TFTLCD 移植到STM32F103C8T6
BMP位图转换:24bpp转1bpp — Java实现
mxiaomi的专栏
09-16 1292
24位BMP位图转点阵图,即24bpp转1bpp基本概念场景Java语言实现 基本概念 BPP:bits per pixel,每个像素的比特数。 场景 打印机打印二维码/图片:热敏打印机只可打印点阵图; 对图片质量要求低,降低内存消耗。 Java语言实现 package com.szsicod.print.escpos; import android.graphics.Bitmap; import android.graphics.Color; import android.util.Log; impor
LCD移植
qq_29890089的博客
03-08 2347
基于msm8909移植lcd流程模块功能描述LCD移植lk部分kernel部分 模块功能描述 LCD模块功能主要是LCD液晶显示 LCD移植 以helitech ili9881d为例,首先需要准备东西如下: 1、屏IC Data Sheet 2、初始化代码 —&gt;获得初始化屏幕ic的命令,用于编写屏的.h文件(lk)和.dtsi文件(kernel) 首先从Data Sheet或者初始化代码中...
LCD驱动程序移植
qlexcel的专栏
06-10 1741
LCD的操作可以像串口一样,通过终端设备层的封装(/dev/tty*设备)来输出内容,也可以通过frame buffer(/dev/fb*设备)直接在显存上“绘制”图像。 tty(终端设备)和frame buffer驱动程序的框架: 下面根据每层的文件讲解一下上图: 1)显示驱动程序 2)键盘驱动程序 2.操作实例 1)对/dev/tty*调用
Mini2440 linux之LCD驱动 移植、以及一些遇到的问题
ourkix的博客
01-23 530
首先编译环境配置 linux 2.6.32源码 arm-linux-gcc 交叉编译器 有mini2440的根文件系统 这里默认环境都配好了 打开linux源码文件夹,进入后,找到对应开发板的配置文件 将其复制一份重命名为.config cp config_mini2440_n35 .config 然后执行内核配置,更加自己需要增减模块后退出 make menuconfig 将默认的LCD配置去掉,换上我们自己的驱动 完成后 exit退出 找到Device Driv...
S3C2440裸机学习 - LCD驱动原理及代码分析[一]
yyt7529的专栏
11-14 5327
1. LCD工作的硬件需求:   要使一块LCD正常的显示文字或图像,不仅需要LCD驱动器,而且还需要相应的LCD控制器。在通常情况下,生产厂商把LCD驱动器会以COF/COG的 形式与LCD玻璃基板制作在一起,而LCD控制器则是由外部的电路来实现,现在很多的MCU内部都集成了LCD控制器,如S3C2410/2440等。通 过LCD控制器就可以产生LCD驱动器所需要的控制信号来控制STN/TFT屏了。2. S3C2440内部LCD控制器结构图:我们根据数据手册来描述一下这个集成在S3C2440内部的LCD
MTK Android LCD模块驱动
weixin_43600187的博客
04-12 1400
转载自 https://blog.csdn.net/zdj0523/article/details/52854288 Android LCD模块驱动之——MTK平台代码分析   LCD模块对于现代人的生活而言,就跟柴米油盐一样,成了生活中必不可少的一部分。因此,对于驱动工程师而言,...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 单精度浮点数(float)与双精度浮点数(double)的区别如下: 39899
  • x264和x265编码技术的区别 25047
  • mysql商业版和社区版的区别 22845
  • C++11 error: unable to find string literal operator 'operator" 13098
  • Project ERROR: Unknown module(s) in QT: multimedia 12042

分类专栏

  • 奔跑吧 1篇
  • 传感器 2篇
  • 内核 11篇
  • hk 21篇
  • 驱动 6篇
  • 书籍 24篇
  • 静态 5篇
  • mosquitto 6篇
  • 技术总结 59篇
  • 工具配置 37篇
  • 数据结构算法 3篇
  • 嵌入式文件系统 14篇
  • 编译错误笔记 2篇
  • 指针 2篇
  • Android 3篇
  • 读书笔记之《Linux系统移植》 16篇
  • 读书笔记之《Linux设备驱动开发详解4.0》 11篇
  • 读书笔记之移动机器人slam与vslam 11篇
  • 读书笔记之《GCC技术参考大全》 24篇
  • 读书笔记之《Linux高性能服务器编程》 10篇
  • 读书笔记之《设计模式之禅》 11篇
  • 读书笔记之《Linux内存使用与性能优化》 45篇
  • WIFI模块应用开发系列 5篇
  • 翻译
  • IMX6ULL 18篇
  • 正点原子 5篇
  • linux_drivers 7篇
  • 性能优化 4篇
  • IMX6Q_CORE_V2-uboot&&linux内核移植 12篇
  • 裸机 3篇
  • #busybox 3篇
  • 笔记 6篇
  • 数据库
  • sqlite 2篇
  • Mysql 4篇
  • UI
  • Qt 73篇
  • C语言 11篇
  • libcurl  example 12篇
  • C++ 34篇
  • 函数式编程C++版本》 10篇
  • C++性能优化指南 14篇
  • C++术语 6篇
  • C++ Primer(第五版) 60篇
  • 深入应用C++11 18篇
  • STL 7篇
  • 性能优化工具 5篇
  • Boost代码解读 7篇
  • libevent源码解读
  • 多媒体
  • ffmpeg 3篇
  • opengl 4篇
  • vtk 4篇
  • 嵌入式 20篇
  • Linux 31篇
  • Linux内核深度解析 1篇
  • WiFi 6篇
  • rt-thread 22篇
  • uboot 34篇
  • arm 12篇
  • 树莓派 41篇
  • 文件系统构建 5篇
  • qemu 21篇
  • 视觉 14篇
  • opencv 9篇
  • 点云库PCL从入门到精通 15篇
  • 杂谈点云 2篇

最新评论

  • 二.C++11深入应用(工程级应用)

    willzhang121: 老兄, 这书第15章TaskCpp, 测试WhenAny 时, Task.hpp中Then接口你能编译通过吗?我一直卡在这里编译不过

  • 语音对讲广播转发模块

    weixin_40533155: 请问一下直接调用 NET_DVR_StartVoiceCom_V30 会有对讲时噪声很大的问题吗?有的话怎么解决的

  • 关于操作系统镜像超过4G的解决办法

    楼兰公子: 可以尝试迁移树莓派的pishrink.sh压缩镜像

  • wpa_supplicant2.6之P2P测试操作操作PC端与android设备的互相操作

    新仁多指教: 同样现象,请问解决了吗,是怎么解决的

  • wpa_supplicant2.6之P2P测试操作操作PC端与android设备的互相操作

    新仁多指教: 同样现象,请问解决了吗,是怎么解决的

大家在看

  • 微服务实战系列之玩转Docker(二) 1041
  • python入门课程Pro(2)--循环
  • ThinkPHP5 学习笔记四 数据库增删改
  • Linux下数据库学习过程之Redis数据库的主从复制(持续更新中)
  • 代码改进,模型优化,强化深度学习

最新文章

  • imx6ull 启动buildroot 镜像出现各种io错误,使用卡片型号为KLMGGETF
  • debian 基于树莓派raspberry最新的daily build img镜像下载地址
  • arm-linux WiFi测试指令脚本
2024年5篇
2023年9篇
2022年29篇
2021年79篇
2020年513篇
2019年77篇
2018年9篇
2017年94篇
2012年2篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

PHP网站源码吉祥百搜词包坂田网站设计模板爱联网站改版南联外贸网站建设惠州网站搜索优化木棉湾网站搜索优化横岗关键词按天计费福永百搜词包龙岗企业网站改版光明品牌网站设计坪地外贸网站建设深圳网站优化排名深圳阿里店铺运营广州建站福田外贸网站制作吉祥网站搭建东莞网站优化按天收费南山模板制作南联网站改版宝安建网站双龙企业网站制作横岗阿里店铺运营双龙网络推广横岗网站制作设计永湖网站优化按天收费石岩网站优化罗湖网络广告推广坑梓网站优化按天计费石岩模板推广松岗建网站歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化