由于板子LCD旧屏是ili9335型号的,旧屏有时候会断货,如果断货则使用一个st7789v型号的LCD

它们两个屏的区别在于初始化屏的参数不同,引脚都一样,也就是说需要使板子同时支持ili9335型号和st7789v型号

思路:

  • 1.uboot在显示LOG(初始化屏参数)之前,通过命令来读LCD型号,来检测LCD型号,然后来修改初始化屏的参数.
  • 2.如果屏是新屏,则设置bootargs,向内核传递参数lcd_type=new
  • 3.当kernel收到参数lcd_type=new时,则在初始化LCD之前,修改屏的参数.

改uboot

首先来看单板配置信息,根据配置找到哪个文件是初始化LCD屏的

根据make ap60pro_uImage_sfc_nand命令,找ap60pro_uImage_sfc_nand单板信息

vi   ./u-boot/boards.cfg    

找到:

# Target      ARCH   CPU   Board name  Vendor     SoC    Options
##############################################################
ap60pro_uImage_sfc_nand      mips        xburst      ap60pro       ingenic    x1000   ap60pro:SPL_SFC_NAND,LIBSLEEP,GET_BT_MAC

从上面看到board name为ap60pro,所以最终通过下面几个来初始化:

./arch/mips/cpu/xburst\x1000\start.S    //启动代码
./include/configs/ap60pro.h             //各种define配置
./board/ingenic/ap60pro                 //单板配置源文件        

查看ap60pro.h,查看LCD相关的define配置

查找CONFIG_ILI9335_240X320,找到在./board/ingenic/ap60pro/Makefile里调用:

COBJS-$(CONFIG_ILI9335_240X320) += lcd-ili9335_240x320.o    //保存LCD初始化参数的信息

查找CONFIG_ILI9335_240X320,找到在./drivers/video/Makefile里调用:

COBJS-$(CONFIG_JZ_LCD_V13) +=  jz_lcd/jz_lcd_v13.o        //根据lcd-ili9335_240*320.c来初始化LCD

修改lcd-ili9335_240x320.c

添加st7789v初始化的数组表(在代码中以New_ili9335_data_table数组表示):

struct smart_lcd_data_table ili9335_data_table[] = {    //旧屏的初始化参数表
{SMART_CONFIG_CMD,0x00},{SMART_CONFIG_CMD,0xec},{SMART_CONFIG_DATA,0x1e},{SMART_CONFIG_DATA,0x8f},{SMART_CONFIG_CMD,0x00},{SMART_CONFIG_CMD,0x01},{SMART_CONFIG_DATA,0x01},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_CMD,0x00},{SMART_CONFIG_CMD,0x02},{SMART_CONFIG_DATA,0x02},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_CMD,0x00},{SMART_CONFIG_CMD,0x03},{SMART_CONFIG_DATA,0x10},{SMART_CONFIG_DATA,0x30},{SMART_CONFIG_UDELAY,10000},{SMART_CONFIG_CMD,0x00},{SMART_CONFIG_CMD,0x08},{SMART_CONFIG_DATA,0x02},{SMART_CONFIG_DATA,0x02},{SMART_CONFIG_CMD,0x00},{SMART_CONFIG_CMD,0x09},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_CMD,0x00},{SMART_CONFIG_CMD,0x0a},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_DATA,0x08}, //enable te{SMART_CONFIG_CMD,0x00},{SMART_CONFIG_CMD,0x0d},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_CMD,0x00},{SMART_CONFIG_CMD,0x0f},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_CMD,0x00},{SMART_CONFIG_CMD,0x60},{SMART_CONFIG_DATA,0x27},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_CMD,0x00},{SMART_CONFIG_CMD,0x61},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_CMD,0x00},{SMART_CONFIG_CMD,0x6a},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_UDELAY,10000},{SMART_CONFIG_CMD,0x00},{SMART_CONFIG_CMD,0x10},{SMART_CONFIG_DATA,0x16},{SMART_CONFIG_DATA,0x90},{SMART_CONFIG_CMD,0x00},{SMART_CONFIG_CMD,0x11},{SMART_CONFIG_DATA,0x02},{SMART_CONFIG_DATA,0x27},{SMART_CONFIG_UDELAY,10000},{SMART_CONFIG_CMD,0x00},{SMART_CONFIG_CMD,0x12},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_DATA,0x0d},{SMART_CONFIG_UDELAY,10000},{SMART_CONFIG_CMD,0x00},{SMART_CONFIG_CMD,0x21},{SMART_CONFIG_DATA,0x16},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_CMD,0x00},{SMART_CONFIG_CMD,0x29},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_DATA,0x18},{SMART_CONFIG_CMD,0x00},{SMART_CONFIG_CMD,0x2b},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_DATA,0x0a},{SMART_CONFIG_UDELAY,10000},{SMART_CONFIG_CMD,0x00},{SMART_CONFIG_CMD,0x20},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_CMD,0x00},{SMART_CONFIG_CMD,0x21},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_DATA,0x00},//============Gamma============{SMART_CONFIG_CMD,0x00},{SMART_CONFIG_CMD,0x30},{SMART_CONFIG_DATA,0x04},{SMART_CONFIG_DATA,0x03},{SMART_CONFIG_CMD,0x00},{SMART_CONFIG_CMD,0x31},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_DATA,0x07},{SMART_CONFIG_CMD,0x00},{SMART_CONFIG_CMD,0x32},{SMART_CONFIG_DATA,0x04},{SMART_CONFIG_DATA,0x04},{SMART_CONFIG_CMD,0x00},{SMART_CONFIG_CMD,0x35},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_DATA,0x02},{SMART_CONFIG_CMD,0x00},{SMART_CONFIG_CMD,0x36},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_DATA,0x0f},{SMART_CONFIG_CMD,0x00},{SMART_CONFIG_CMD,0x37},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_DATA,0x03},{SMART_CONFIG_CMD,0x00},{SMART_CONFIG_CMD,0x38},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_CMD,0x00},{SMART_CONFIG_CMD,0x39},{SMART_CONFIG_DATA,0x03},{SMART_CONFIG_DATA,0x02},{SMART_CONFIG_CMD,0x00},{SMART_CONFIG_CMD,0x3c},{SMART_CONFIG_DATA,0x02},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_CMD,0x00},{SMART_CONFIG_CMD,0x3d},{SMART_CONFIG_DATA,0x0f},{SMART_CONFIG_DATA,0x00},//=============================// set RAM address{SMART_CONFIG_CMD,0x00},{SMART_CONFIG_CMD,0x50},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_CMD,0x00},{SMART_CONFIG_CMD,0x51},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_DATA,0xef},{SMART_CONFIG_CMD,0x00},{SMART_CONFIG_CMD,0x52},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_CMD,0x00},{SMART_CONFIG_CMD,0x53},{SMART_CONFIG_DATA,0x01},{SMART_CONFIG_DATA,0x3f},{SMART_CONFIG_UDELAY,10000},{SMART_CONFIG_CMD,0x00},{SMART_CONFIG_CMD,0x80},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_CMD,0x00},{SMART_CONFIG_CMD,0x81},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_CMD,0x00},{SMART_CONFIG_CMD,0x82},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_CMD,0x00},{SMART_CONFIG_CMD,0x83},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_CMD,0x00},{SMART_CONFIG_CMD,0x84},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_CMD,0x00},{SMART_CONFIG_CMD,0x85},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_CMD,0x00},{SMART_CONFIG_CMD,0x90},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_DATA,0x10},{SMART_CONFIG_CMD,0x00},{SMART_CONFIG_CMD,0x91},{SMART_CONFIG_DATA,0x06},{SMART_CONFIG_DATA,0x00},//display on{SMART_CONFIG_CMD,0x00},{SMART_CONFIG_CMD,0x07},{SMART_CONFIG_DATA,0x01},{SMART_CONFIG_DATA,0x33},{SMART_CONFIG_CMD,0x00},{SMART_CONFIG_CMD,0x22},};unsigned long truly_cmd_buf[]= {0x22002200,
};
struct jzfb_config_info jzfb1_init_data = {.num_modes = 1,.modes = &jzfb1_videomode,.lcd_type = LCD_TYPE_SLCD,.bpp    = 24,                            //R8G8B8.pinmd  = 0,.smart_config.rsply_cmd_high       = 0,.smart_config.csply_active_high    = 0,/* write graphic ram command, in word, for example 8-bit bus, write_gram_cmd=C3C2C1C0. */.smart_config.newcfg_fmt_conv =  0,.smart_config.clkply_active_rising = 1,.smart_config.data_times = 2,.smart_config.write_gram_cmd = truly_cmd_buf,.smart_config.length_cmd = ARRAY_SIZE(truly_cmd_buf),.smart_config.bus_width = 8,                                    //总线8位的.smart_config.length_data_table =  ARRAY_SIZE(ili9335_data_table),.smart_config.data_table = ili9335_data_table,.dither_enable = 1,
};//新屏的初始化参数表
static struct smart_lcd_data_table New_ili9335_data_table[] = {{SMART_CONFIG_CMD,0x11},{SMART_CONFIG_UDELAY,120000},    //Sleep out{SMART_CONFIG_CMD,0x36},                //控制{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_CMD,0x21},    //0x13显示不反转 ,21h 反显{SMART_CONFIG_CMD,0x3A},{SMART_CONFIG_DATA,0x05},{SMART_CONFIG_CMD,0x2A},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_DATA,0xEF},{SMART_CONFIG_CMD,0x2B},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_DATA,0x01},{SMART_CONFIG_DATA,0x3F},{SMART_CONFIG_CMD,0xB2},        //前后肩{SMART_CONFIG_DATA,0x0C},{SMART_CONFIG_DATA,0x0C},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_DATA,0x33},{SMART_CONFIG_DATA,0x33},{SMART_CONFIG_CMD,0xB7},     //VGH VGL{SMART_CONFIG_DATA,0x35},{SMART_CONFIG_CMD,0xBB},     //VCOM {SMART_CONFIG_DATA,0x1E},{SMART_CONFIG_CMD,0xC0},      //LCM{SMART_CONFIG_DATA,0x2C},{SMART_CONFIG_CMD,0xC2},{SMART_CONFIG_DATA,0x01},{SMART_CONFIG_CMD,0xC3},     //VRH( vcom+vcom offset+vdv) {SMART_CONFIG_DATA,0x27},{SMART_CONFIG_CMD,0xC4},     //vdv{SMART_CONFIG_DATA,0x20},{SMART_CONFIG_CMD,0xC6},        //帧率{SMART_CONFIG_DATA,0x0F},{SMART_CONFIG_CMD,0xD0},        //功率控制模式   {SMART_CONFIG_DATA,0xA4},{SMART_CONFIG_DATA,0xA1},{SMART_CONFIG_CMD,0xE0},        //正GAMMA {SMART_CONFIG_DATA,0xD0},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_DATA,0x05},{SMART_CONFIG_DATA,0x03},{SMART_CONFIG_DATA,0x02},{SMART_CONFIG_DATA,0x07},{SMART_CONFIG_DATA,0x3F},{SMART_CONFIG_DATA,0x55},{SMART_CONFIG_DATA,0x50},{SMART_CONFIG_DATA,0x09},{SMART_CONFIG_DATA,0x14},{SMART_CONFIG_DATA,0x15},{SMART_CONFIG_DATA,0x22},{SMART_CONFIG_DATA,0x25},{SMART_CONFIG_CMD,0xE1},    //负GAMMA{SMART_CONFIG_DATA,0xD0},{SMART_CONFIG_DATA,0x00},{SMART_CONFIG_DATA,0x05},{SMART_CONFIG_DATA,0x03},{SMART_CONFIG_DATA,0x02},{SMART_CONFIG_DATA,0x07},{SMART_CONFIG_DATA,0x3F},{SMART_CONFIG_DATA,0x55},{SMART_CONFIG_DATA,0x54},{SMART_CONFIG_DATA,0x0C},{SMART_CONFIG_DATA,0x18},{SMART_CONFIG_DATA,0x14},{SMART_CONFIG_DATA,0x22},{SMART_CONFIG_DATA,0x25},{SMART_CONFIG_CMD,0x11},    // sleep out{SMART_CONFIG_UDELAY,120000},{SMART_CONFIG_CMD,0x29},//Display On{SMART_CONFIG_UDELAY,20000},
};
unsigned long New_truly_cmd_buf[]= {0x2C2C2C2C,
};void switch_lcd_New(void)              //切换为ST7789V
{jzfb1_init_data.smart_config.data_table = New_ili9335_data_table;jzfb1_init_data.smart_config.length_data_table =  ARRAY_SIZE(New_ili9335_data_table);jzfb1_init_data.smart_config.write_gram_cmd = New_truly_cmd_buf;
}
//... ...

查看jz_lcd_v13.c调用顺序

从uboot启动时,调用board_init_r()函数开始:

 -> board_init_r()-> stdio_init()-> drv_lcd_init()                //初始化硬件LCD-> drv_video_init()             //绘制log

其中drv_lcd_init()中调用顺序为:

 -> drv_lcd_init()-> lcd_init()-> lcd_ctrl_init()                 // 位于drivers\video\jz_lcd\Jz_lcd_v13.c

所以,接下来,我们便来修改jz_lcd_v13.c,让uboot在初始化LCD之前,读LCD的ID,是否需要切换新屏参数

修改jz_lcd_v13.c

由于X1000的SLCD控制寄存器只能向LCD写命令/数据,没有读数据的寄存器,所以我们便需要使用GPIO来模拟时序,读出ID来

参考ST7789V数据手册,找到ID命令为04h:

参考ST7789V数据手册,找到读写8080时序图:

接下来开始改代码: 

//添加下面函数,通过GPIO模拟LCD寄存器,来实现读ID
void  gpio_setfunc(unsigned int gpioPort,enum gpio_function fun)
{enum gpio_port port; switch((gpioPort /32)){case 0:    port = GPIO_PORT_A; break;case 1:    port = GPIO_PORT_B; break;case 2:    port = GPIO_PORT_C; break;case 3:    port = GPIO_PORT_D; break;default:port = GPIO_NR_PORTS;   break;}gpio_set_func(port, fun, 1<< (gpioPort % 32));if(fun == GPIO_OUTPUT0||fun == GPIO_OUTPUT1)  {if(fun == GPIO_OUTPUT0)gpio_direction_output(gpioPort, 0);     elsegpio_direction_output(gpioPort, 1);      }
}static void write_SLCD_CD(int isCOMD,unsigned int value) //写命令/数据
{#define  SLCD_DC    20#define  SLCD_WR   17#define  SLCD_RD    16#define  SLCD_CS     18int i;gpio_direction_output(GPIO_PB(SLCD_CS), 1);     for( i=0;i<8;i++){gpio_setfunc(GPIO_PA(i),GPIO_OUTPUT0);gpio_direction_output(GPIO_PA(i), (value>>i)&0x01);     }mdelay(10);if(isCOMD!=0)    //如果是写命令,则拉低DC脚{gpio_direction_output(GPIO_PB(SLCD_DC), 0);    }else{gpio_direction_output(GPIO_PB(SLCD_DC),1);    }gpio_direction_output(GPIO_PB(SLCD_WR), 0);     gpio_direction_output(GPIO_PB(SLCD_RD), 1);     gpio_direction_output(GPIO_PB(SLCD_CS), 0);     mdelay(4);gpio_direction_output(GPIO_PB(SLCD_WR), 1);     mdelay(7);
}static unsigned int read_SLCD_DATA(void)   //读数据
{#define  SLCD_DC    20#define  SLCD_WR   17#define  SLCD_RD    16#define  SLCD_CS     18int i;int ret=0;gpio_direction_output(GPIO_PB(SLCD_CS), 1);     //取消片选for( i=0;i<8;i++)        //将data脚设为输入脚{gpio_setfunc(GPIO_PA(i),GPIO_INPUT); }gpio_direction_output(GPIO_PB(SLCD_DC), 1);     gpio_direction_output(GPIO_PB(SLCD_WR), 1);     gpio_direction_output(GPIO_PB(SLCD_RD), 0);     gpio_direction_output(GPIO_PB(SLCD_CS), 0);     //选中片选mdelay(4);gpio_direction_output(GPIO_PB(SLCD_RD), 1);     for( i=0;i<8;i++)ret|=(gpio_get_value(GPIO_PA(i))<<i);mdelay(7);return ret;
}static void lcd_func_init(int isRestore){int i,n;#define  SLCD_DC    20#define  SLCD_WR   17#define  SLCD_RD    16#define  SLCD_TE     19            //input#define  SLCD_CS     18if(isRestore)                                //恢复管脚为LCD控制寄存器{for(i=0;i<8;i++)gpio_setfunc(GPIO_PA(i),GPIO_FUNC_1);gpio_setfunc(GPIO_PB(SLCD_DC),GPIO_FUNC_1);gpio_setfunc(GPIO_PB(SLCD_WR),GPIO_FUNC_1);gpio_setfunc(GPIO_PB(SLCD_RD),GPIO_FUNC_1);gpio_setfunc(GPIO_PB(SLCD_TE),GPIO_FUNC_1);gpio_setfunc(GPIO_PB(SLCD_CS),GPIO_FUNC_1);}else                          //设置为普通IO管脚{for(i=0;i<8;i++)gpio_setfunc(GPIO_PA(i),GPIO_OUTPUT0);gpio_setfunc(GPIO_PB(SLCD_DC),GPIO_OUTPUT0);gpio_setfunc(GPIO_PB(SLCD_WR),GPIO_OUTPUT0);gpio_setfunc(GPIO_PB(SLCD_RD),GPIO_OUTPUT0);gpio_setfunc(GPIO_PB(SLCD_TE),GPIO_INPUT);gpio_setfunc(GPIO_PB(SLCD_CS),GPIO_OUTPUT0);}mdelay(200);
}static u8 Read_ID_isNewLcd(void)
{#define  SLCD_DC    20#define  SLCD_WR   17#define  SLCD_RD    16#define  SLCD_TE     19            //input#define  SLCD_CS     18u8 ret = 0;u8 IDH,IDL;lcd_func_init(0);   //设置LCD相关的引脚,设置为普通IO脚write_SLCD_CD(1,0x04);  //写入0x04命令IDH = read_SLCD_DATA();IDL = read_SLCD_DATA();printf("Read ID: 0x%X 0x%X\r\n",IDH,IDL);IDH = read_SLCD_DATA();IDL = read_SLCD_DATA();printf("Read ID: 0x%X 0x%X\r\n",IDH,IDL);         if(IDL!=0x52)          //如果值!=0X52,则表示是旧屏ili9335{ret =1;}lcd_func_init(1);    //将lcd相关引脚配置为LCD控制脚mdelay(10);return ret;
}extern void switch_lcd_New(void) ;
static int lcd_type_isNew=0;
void set_lcd_type_from_cmdline(void)   //设置bootargs,向内核传递lcd_type参数
{if(lcd_type_isNew)    {run_command("set  bootargs "CONFIG_BOOTARGS" lcd_type=new ", 0);}}//在lcd_ctrl_init()函数里添加读ID函数
void lcd_ctrl_init(void *lcd_base)
{if(Read_ID_isNewLcd()==0)        //读ID,检测是否是新屏{printf("Read_ID_isNewLcd=0\r\n"); switch_lcd_New();     //调用Lcd-ili9335_240x320.c的切换新屏参数的函数lcd_type_isNew=1;    }  //... ... 后面的代码不需要修改,因为后面便会根据LCD初始化参数表.来初始化LCD
}

上面的set_lcd_type_from_cmdline()函数需要在后面调用main_loop()的时候之前被调用,所以还需要修改board_init_r()函数(arch\mips\lib\Board.c ).

然后装上旧屏ili9335,启动uboot,查看读的屏幕ID,屏幕显示正常:

然后换为新屏,启动uboot,查看读的ID信息,log显示正常:

启动内核时,也可以看到传递给内核bootargs有我们新添的参数:​​​​​​​

然后在内核中,便通过新参数再次设置屏参数表即可.

44.Linux君正X1000-添加st7789v显示相关推荐

  1. linux开发板显示横向彩虹,给 Linux 终端的输出添加彩虹特效的命令

    原标题:给 Linux 终端的输出添加彩虹特效的命令 正文 如果认为Linux命令行很无聊并且没有任何乐趣,那么您错了,真实的Linux多么有趣和淘气. 在本文,我将介绍一个名为" lolc ...

  2. 君正全平台linux源码同步教程(除X1830人脸识别板)

    环境:Ubuntu20.04 一.获取许可认证 根据君正全平台linux源码获取文档,使用"Alt+Ctrl+T"打开命令窗口,输入 $ssh-keygen 一直回车,回车,回车 ...

  3. linux 内核开logo大小,OK6410之Linux2.6.36内核添加logo显示

    在OK6410板子启动时并没有显示可爱的小企鹅logo,故进行添加显示并修改成自己喜欢的图片. 配置内核:make meunconfig Device Drivers  ---> Graphic ...

  4. linux无显卡运行程序,Ubuntu中在应用程序菜单添加未显示的应用程序启动器

    在Ubuntu应用程序菜单添加未显示的应用程序启动器: (1)在这个目录下挑一个喜欢的图标 /usr/share/icons/hicolor/48×48/apps/ 或自己准备一个png图标复制到该目 ...

  5. linux中qt加载rviz,ROS与Qt5人机交互界面开发-添加rviz显示界面

    ROS与Qt5人机交互界面开发-添加rviz显示界面 说明: 介绍如何添加rviz显示界面 步骤: 实现效果: 核心代码 创建librviz界面类: qrviz_widget.h内容如下: #ifnd ...

  6. 君正M200平台修改纪要

    芯片型号:君正M200 软件系统: Android4.3 操作系统: Ubuntu14.04 Server 一.kernel目录 1.Xburst 板级介绍 在君正发布的内核版本中,针对不同的芯片型号 ...

  7. Linux 用户名、主机添加背景色

    文章参考:PS1应用之--修改linux终端命令行各字体颜色 Linux 用户名.主机添加背景色,用于生产环境,这样可以减少人为的误操作. 1 [root@zhang ~]# tail /etc/ba ...

  8. adb shell 调试君正板子

    今天接到一个任务,把现有的代码移植到君正的开发板上. 下面就开始吧. 1 首先,代码移植到君正上,需要交叉编译环境. 需求方已经提供了交叉编译的tar包,直接在linux上解压缩. 然后 指定 CC= ...

  9. 中国自主芯片厂商君正科技物联网IoT平台Halley2上的二维码识别

    斐泰科技发布的 FitQR PLus Decoding SDK 是业界第一款支持君正 Halley2 物联网(IoT)平台上二维码识别的商用软件开发包. Halley2核心板尺寸 26mm*37mm ...

  10. 君正Zeratul开发(4)——图像效果调试

    前言   目前而言,君正设备的isp 图像效果还是君正的工程师在负责开发调试,如果需要添加一款新的摄像头,一般也是将新摄像头的驱动,从ISVP 版本移植到Zeratul平台.这里主要介绍:(1)摄像头 ...

最新文章

  1. “全宇宙首个”用中文编写的操作系统!作者还自创了甲、乙、丙编程语言?...
  2. python基础代码库-python基础知识和练习代码
  3. rust(49)-图像(2)
  4. QML基础类型之enumeration
  5. 【数据结构与算法】之深入解析“删除二叉搜索树中的节点”的求解思路与算法示例
  6. 儿童的身高标准对照表_2020“儿童身高标准”出炉,10岁身高140,你家娃达标吗...
  7. 4线电子围栏安装示意图_电子围栏报警系统安装施工过程(图解)
  8. 简评知乎的优点与不足
  9. (转)51单片机C中关于.c文件和.h文件
  10. 程序员的进阶课-架构师之路(15)-那些年你遇到的其他树
  11. PHP开源CMS介绍
  12. 相机成像原理_照相机、摄影机的成像原理
  13. python opcua_理解python中的免费OPC/UA代码
  14. 黑马程序员-浏览器原理
  15. 编程猫python教学_有老师使用过编程猫进行教学吗?
  16. 好佳居窗帘十大品牌 窗帘的发展故事
  17. 2018中国财经文学论坛在杭圆满举行
  18. 盛世昊通董车长2.0,数字化整合行业产业链变革
  19. 2022客户体验管理白皮书
  20. 讲一个程序员如何副业月赚三万的真实故事

热门文章

  1. pm8060raid卡命令
  2. multicast msdp 1
  3. python办公自动化——批量向excel填充数据
  4. 第01课:走进分布式中间件(课前必读)
  5. Ubuntu 重新安装声卡驱动
  6. protel 99se交互式布局
  7. 你的计算机没有安装cad2006,CAD2006安装常见问题及处理方法
  8. Matlab在工业机器人中的运用,基于MATLAB的工业机器人建模与仿真.docx
  9. 读书笔记:《用户故事地图》
  10. 输入球心三维坐标及球半径求算球体的球面坐标数据(C/C++)