参考MTK 文档LCM_Customer_document_MT6575.pdf

The following shows the steps to add a new LCM driver:

(1)  Create LCM driver folder $LCM in alps/mediatek/custom/common/kernel/lcm/

(2)  Create LCM driver source file $LCM.c in alps/mediatek/custom/common/kernel/lcm/$LCM

(3)  Implement LCM driver and export lcm_driver_list/lcm_count variables.

Adaptive LCM Support 

At first you should add you new lcm driver as listed in the previous section, and then add the 

adaptive support: 

1.  Modify the adaptive lcm driver common file:  

alps/mediatek/custom/common/kernel/lcm/mt65xx_lcm_list.c

2.  Add the new LCM driver global variables as shown in the figure below:

3.  [VERY IMPORTANT] Please delete the unused LCM driver folder in the customization folder, 

such as shown in the figure below:

4. But what if I didn’t delete the folders un-usable? The code size will increase, because the 

other LCM drivers will be compiled into codebase too; And if your project doesn’t define 

GPIO usage for serial interface, there will be build error.

5.  Modify the project makefile alps/mediate/config/(project)/ProjetConfig.mk 

Modify CUSTOM_KERNEL_LCM=mt65xx 

Modify CUSTOM_UBOOT_LCM=mt65xx

Case Study – DBI Interface LCM Driver Porting 

In this chapter, we’ll go through a real case study of DBI LCM driver porting.

LCM specifications: 

  LCM Drive IC: hx8369 

  Interface: 24-bit 80 system bus interface 

  LCD size: 480*800 

  

1.  Create LCM driver folder and LCM driver source file 

alps/mediatek/custom/common/kernel/lcm/hx8369/lcm_dr.c 



2.  Modify the project makefile alps/mtk/make/$(project).mak 

Add CUSTOM_KERNEL_LCM= hx8369 

Add CUSTOM_UBOOT_LCM= hx8369 



3.  Fill the LCM parameters 

A.  Configure the basic information according to the HW connection, LCM type and LCM size:

MT6575 LCD IO selection is as shown in following table. LCD data pin can share between DPI and NAND data pin

For example, we use 24bits DBI interface LCM, and connect LCM data pin to MT6575 baseband 

Pin DPIR[7:0], DPIG[7:0], DPIB[7:0]. So we must set io_select_mode to be 1; if connect LCM data 

pin to Nand IF, we must set io_select_mode to be 0

B.  Configure data format according to the RGB data pin assignment of the LCM datasheet

C.  Configure LCM waveform timing according to the requirement specified in the LCM datasheet

Note: MT6575 LCD controller clock frequency is 130MHz, so clock cycle time is 1/130MHz = 7.69ns

4.  Implement LCM init function

According the init process specified in LCM datasheet, pull down/up the reset pin, delay and set 

LCM init register settings.

5.  Implement LCM update function 

Send the block update commands to LCM

6.  Implement LCM suspend/resume functions 

Send suspend/resume commands to LCM

7. Rebuild uboot and kernel 

In the root directory: 

./mk $(project) gen_cust 

./mk $(project) remake uboot/kernel 

./mk $(project) bootimage

参考代码:

  1. /*****************************************************************************
  2. *  Copyright Statement:
  3. *  --------------------
  4. *  This software is protected by Copyright and the information
    contained
  5. *  herein is confidential. The software may not be copied
    and the information
  6. *  contained herein may not be used or disclosed except
    with the written
  7. *  permission of MediaTek Inc. (C) 2008
  8. *
  9. *  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES
    AND AGREES
  10. *  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK
    SOFTWARE")
  11. *  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE
    PROVIDED TO BUYER ON
  12. *  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS
    ANY AND ALL WARRANTIES,
  13. *  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
    IMPLIED WARRANTIES OF
  14. *  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
    NONINFRINGEMENT.
  15. *  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER
    WITH RESPECT TO THE
  16. *  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED
    IN, OR
  17. *  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES
    TO LOOK ONLY TO SUCH
  18. *  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO.
    MEDIATEK SHALL ALSO
  19. *  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES
    MADE TO BUYER'S
  20. *  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD
    OR OPEN FORUM.
  21. *
  22. *  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE
    AND CUMULATIVE
  23. *  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED
    HEREUNDER WILL BE,
  24. *  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK
    SOFTWARE AT ISSUE,
  25. *  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE
    PAID BY BUYER TO
  26. *  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
  27. *
  28. *  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED
    IN ACCORDANCE
  29. *  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING
    ITS CONFLICT OF
  30. *  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS
    ARISING THEREOF AND
  31. *  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN
    SAN FRANCISCO, CA, UNDER
  32. *  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE
    (ICC).
  33. *
  34. *****************************************************************************/
  35. #include <linux/string.h>
  36. #include "lcm_drv.h"
  37. //#include <linux/kernel.h> //for printk()
  38. //extern void printf(const char* fmt, ...);
  39. #ifdef BUILD_UBOOT
  40. #include <asm/arch/mt6575_gpio.h>
  41. #define print(x...) printf(x)
  42. #else
  43. #include <mach/mt6575_gpio.h>
  44. #define print(x...) printk(x)
  45. #endif
  46. //libin modify for M1-4 on 20120726
  47. #define GPIO_LCD_RST   18 //GPIO18
  48. #define  GPIO_MODE_00  0
  49. #define GPIO_DIR_OUT   1
  50. #define GPIO_OUT_ONE  1
  51. #define GPIO_OUT_ZERO  0
  52. extern s32
    mt_set_gpio_mode(u32 u4Pin, u32 u4Mode);
  53. extern s32
    mt_set_gpio_out(u32 u4Pin, u32 u4PinOut);
  54. extern s32
    mt_set_gpio_dir(u32 u4Pin, u32 u4Dir);
  55. // ---------------------------------------------------------------------------
  56. //  Local Constants
  57. // ---------------------------------------------------------------------------
  58. #define FRAME_WIDTH  (320)
  59. #define FRAME_HEIGHT (480)
  60. // ---------------------------------------------------------------------------
  61. //  Local Variables
  62. // ---------------------------------------------------------------------------
  63. static LCM_UTIL_FUNCS
    lcm_util = {0};
  64. #define SET_RESET_PIN(v)    (lcm_util.set_reset_pin((v)))
  65. #define UDELAY(n) (lcm_util.udelay(n))
  66. #define MDELAY(n) (lcm_util.mdelay(n))
  67. // ---------------------------------------------------------------------------
  68. //  Local Functions
  69. // ---------------------------------------------------------------------------
  70. static __inline
    unsigned int HIGH_BYTE(unsigned int val)
  71. {
  72. return (val
    >> 8) & 0xFF;
  73. }
  74. static __inline
    unsigned int LOW_BYTE(unsigned int val)
  75. {
  76. return (val
    & 0xFF);
  77. }
  78. static __inline void send_ctrl_cmd(unsigned int cmd)
  79. {
  80. //MDELAY(5);
  81. //mt_set_gpio_out(16, GPIO_OUT_ZERO);
  82. lcm_util.send_cmd(cmd);
  83. //  mt_set_gpio_out(16, GPIO_OUT_ONE);
  84. }
  85. static __inline void send_data_cmd(unsigned int data)
  86. {
  87. //MDELAY(5);
  88. //mt_set_gpio_out(16, GPIO_OUT_ZERO);
  89. lcm_util.send_data(data);
  90. //  mt_set_gpio_out(16, GPIO_OUT_ONE);
  91. }
  92. static __inline
    unsigned int read_data_cmd()
  93. {
  94. return lcm_util.read_data();
  95. }
  96. static __inline void set_lcm_register(unsigned int regIndex,
  97. unsigned int regData)
  98. {
  99. send_ctrl_cmd(regIndex);
  100. send_data_cmd(regData);
  101. }
  102. static void init_lcm_registers(void)
  103. {
  104. send_ctrl_cmd(0xF1);
  105. send_data_cmd(0x36);
  106. send_data_cmd(0x04);
  107. send_data_cmd(0x00);
  108. send_data_cmd(0x3C);
  109. send_data_cmd(0x0F);
  110. send_data_cmd(0x8F);
  111. send_ctrl_cmd(0xf2);
  112. send_data_cmd(0x18);
  113. send_data_cmd(0xa3);
  114. send_data_cmd(0x12);
  115. send_data_cmd(0x02);
  116. send_data_cmd(0xb2);
  117. send_data_cmd(0x12);
  118. send_data_cmd(0xff);
  119. send_data_cmd(0x10);
  120. send_data_cmd(0x00);
  121. send_ctrl_cmd(0xf8);
  122. send_data_cmd(0x21);
  123. send_data_cmd(0x04);
  124. send_ctrl_cmd(0xf9);
  125. send_data_cmd(0x00);
  126. send_data_cmd(0x08);
  127. send_ctrl_cmd(0xC0);
  128. send_data_cmd(0x0F);
  129. send_data_cmd(0x0F);
  130. send_ctrl_cmd(0xc1);
  131. send_data_cmd(0x42);
  132. send_ctrl_cmd(0xC2);
  133. send_data_cmd(0x22);
  134. send_ctrl_cmd(0xc5);
  135. send_data_cmd(0x00);
  136. send_data_cmd(0x08);
  137. send_data_cmd(0x80);
  138. send_ctrl_cmd(0xb1);
  139. send_data_cmd(0xB0);
  140. send_data_cmd(0x11);
  141. send_ctrl_cmd(0xb4);
  142. send_data_cmd(0x02);
  143. send_ctrl_cmd(0xb6);
  144. send_data_cmd(0x02);
  145. send_data_cmd(0x02); //cpu?02
  146. send_ctrl_cmd(0xb7);
  147. send_data_cmd(0xC6);
  148. send_ctrl_cmd(0x3a);
  149. send_data_cmd(0x66/*0x55*/);//16bit
    ?55  18bit  ?66
  150. send_ctrl_cmd(0x35);
  151. send_data_cmd(0x00);
  152. send_ctrl_cmd(0x44);
  153. send_data_cmd(0x00);
  154. send_data_cmd(0x5f);
  155. send_ctrl_cmd(0x36);
  156. send_data_cmd(0x08); // 0xc8
  157. send_ctrl_cmd(0x2a);
  158. send_data_cmd(0x00);
  159. send_data_cmd(0x00);
  160. send_data_cmd(0x01);
  161. send_data_cmd(0x3f);
  162. send_ctrl_cmd(0x2b);
  163. send_data_cmd(0x00);
  164. send_data_cmd(0x00);
  165. send_data_cmd(0x01);
  166. send_data_cmd(0xdf);
  167. send_ctrl_cmd(0xe0);
  168. send_data_cmd(0x00);
  169. send_data_cmd(0x1D);
  170. send_data_cmd(0x19);
  171. send_data_cmd(0x0c);
  172. send_data_cmd(0x0f);
  173. send_data_cmd(0x0A);
  174. send_data_cmd(0x45);
  175. send_data_cmd(0x95);
  176. send_data_cmd(0x38);
  177. send_data_cmd(0x0a);
  178. send_data_cmd(0x12);
  179. send_data_cmd(0x03);
  180. send_data_cmd(0x09);
  181. send_data_cmd(0x06);
  182. send_data_cmd(0x00);
  183. send_ctrl_cmd(0xe1);
  184. send_data_cmd(0x0f);
  185. send_data_cmd(0x37);
  186. send_data_cmd(0x35);
  187. send_data_cmd(0x0C);
  188. send_data_cmd(0x0d);
  189. send_data_cmd(0x04);
  190. send_data_cmd(0x48);
  191. send_data_cmd(0x43);
  192. send_data_cmd(0x35);
  193. send_data_cmd(0x04);
  194. send_data_cmd(0x0D);
  195. send_data_cmd(0x02);
  196. send_data_cmd(0x1C);
  197. send_data_cmd(0x18);
  198. send_data_cmd(0x0F);
  199. send_ctrl_cmd(0x11);
  200. MDELAY(120);
  201. send_ctrl_cmd(0x29);
  202. send_ctrl_cmd(0x2c);
  203. MDELAY(10);
  204. }
  205. // ---------------------------------------------------------------------------
  206. //  LCM Driver Implementations
  207. // ---------------------------------------------------------------------------
  208. static void lcm_set_util_funcs(const LCM_UTIL_FUNCS
    *util)
  209. {
  210. memcpy(&lcm_util, util, sizeof(LCM_UTIL_FUNCS));
  211. }
  212. static void lcm_get_params(LCM_PARAMS
    *params)
  213. {
  214. memset(params, 0, sizeof(LCM_PARAMS));
  215. params->type   = LCM_TYPE_DBI;
  216. params->ctrl   = LCM_CTRL_PARALLEL_DBI;
  217. params->width  = FRAME_WIDTH;
  218. params->height = FRAME_HEIGHT;
  219. params->io_select_mode = 1;
  220. params->dbi.port                    = 0; // 1;
  221. //params->dbi.clock_freq              = LCM_DBI_CLOCK_FREQ_104M; 
    //aa
  222. params->dbi.data_width              = LCM_DBI_DATA_WIDTH_18BITS;//LCM_DBI_DATA_WIDTH_16BITS;
  223. params->dbi.data_format.color_order = LCM_COLOR_ORDER_RGB;
  224. params->dbi.data_format.trans_seq   = LCM_DBI_TRANS_SEQ_MSB_FIRST;
  225. params->dbi.data_format.padding     = LCM_DBI_PADDING_ON_LSB; //LCM_DBI_PADDING_ON_LSB;
    //bb
  226. params->dbi.data_format.format      = LCM_DBI_FORMAT_RGB666; //LCM_DBI_FORMAT_RGB565;
  227. params->dbi.data_format.width       = LCM_DBI_DATA_WIDTH_18BITS; //LCM_DBI_DATA_WIDTH_16BITS;
  228. params->dbi.cpu_write_bits          = LCM_DBI_CPU_WRITE_32_BITS; //LCM_DBI_CPU_WRITE_16_BITS;
  229. params->dbi.io_driving_current      = LCM_DRIVING_CURRENT_6575_8MA ;  //
    0;
  230. /* params->dbi.parallel.write_setup    = 1;
  231. params->dbi.parallel.write_hold     = 1;
  232. params->dbi.parallel.write_wait     = 9; // 3;
  233. params->dbi.parallel.read_setup     = 1;
  234. params->dbi.parallel.read_latency   = 31;
  235. params->dbi.parallel.wait_period    = 2;*/
  236. params->dbi.parallel.write_setup    = 2;
  237. params->dbi.parallel.write_hold     = 2;
  238. params->dbi.parallel.write_wait     = 15;
  239. params->dbi.parallel.read_setup     = 1;
  240. params->dbi.parallel.read_latency   = 31;
  241. params->dbi.parallel.wait_period    = 2;
  242. params->dbi.parallel.cs_high_width = 0;
  243. // enable tearing-free
  244. //  params->dbi.te_mode                 = LCM_DBI_TE_MODE_VSYNC_ONLY;
  245. // params->dbi.te_edge_polarity        = LCM_POLARITY_FALLING;
  246. /* params->dbi.te_mode                 = LCM_DBI_TE_MODE_VSYNC_OR_HSYNC;
  247. params->dbi.te_edge_polarity        = LCM_POLARITY_RISING;
  248. params->dbi.te_hs_delay_cnt         = 50;
  249. params->dbi.te_vs_width_cnt         = 277;
  250. params->dbi.te_vs_width_cnt_div     = LCM_DBI_TE_VS_WIDTH_CNT_DIV_16;*/
  251. }
  252. #define GPIO_LCD_RST   18 //GPIO18
  253. #define  GPIO_MODE_00  0
  254. #define GPIO_DIR_OUT   1
  255. #define GPIO_OUT_ONE  1
  256. #define GPIO_OUT_ZERO  0
  257. extern s32
    mt_set_gpio_mode(u32 u4Pin, u32 u4Mode);
  258. extern s32
    mt_set_gpio_out(u32 u4Pin, u32 u4PinOut);
  259. extern s32
    mt_set_gpio_dir(u32 u4Pin, u32 u4Dir);
  260. static void lcm_init(void)
  261. {
  262. /* SET_RESET_PIN(0);
  263. MDELAY(200);
  264. SET_RESET_PIN(1);
  265. MDELAY(400);*/
  266. // SET_RESET_PIN(1);
  267. mt_set_gpio_mode(GPIO_LCD_RST,GPIO_MODE_00);
  268. mt_set_gpio_dir(GPIO_LCD_RST,GPIO_DIR_OUT);
  269. mt_set_gpio_out(GPIO_LCD_RST,GPIO_OUT_ONE);
  270. MDELAY(1);
  271. //SET_RESET_PIN(0);
  272. mt_set_gpio_out(GPIO_LCD_RST,GPIO_OUT_ZERO);
  273. MDELAY(10);
  274. //SET_RESET_PIN(1);
  275. mt_set_gpio_out(GPIO_LCD_RST,GPIO_OUT_ONE);
  276. MDELAY(100);
  277. init_lcm_registers();
  278. }
  279. static void lcm_suspend(void)
  280. {
  281. send_ctrl_cmd(0x28);
  282. MDELAY(20);
  283. send_ctrl_cmd(0x10);
  284. MDELAY(100);
  285. }
  286. static void lcm_resume(void)
  287. {
  288. send_ctrl_cmd(0x11);
  289. MDELAY(100);
  290. send_ctrl_cmd(0x29);
  291. //MDELAY(100);
  292. /*
  293. send_ctrl_cmd(0x29);
  294. MDELAY(120);
  295. send_ctrl_cmd(0x11);
  296. MDELAY(120); */
  297. }
  298. static void lcm_update(unsigned int x,
    unsigned int y,
  299. unsigned int width,
    unsigned int height)
  300. {
  301. unsigned int x0
    = x;
  302. unsigned int y0
    = y;
  303. unsigned int x1
    = x0 + width - 1;
  304. unsigned int y1
    = y0 + height - 1;
  305. print( "[LCM] *********************ili9486 lcm_update*******************\n\r");
  306. send_ctrl_cmd(0x2A);
  307. send_data_cmd(HIGH_BYTE(x0));
  308. send_data_cmd(LOW_BYTE(x0));
  309. send_data_cmd(HIGH_BYTE(x1));
  310. send_data_cmd(LOW_BYTE(x1));
  311. send_ctrl_cmd(0x2B);
  312. send_data_cmd(HIGH_BYTE(y0));
  313. send_data_cmd(LOW_BYTE(y0));
  314. send_data_cmd(HIGH_BYTE(y1));
  315. send_data_cmd(LOW_BYTE(y1));
  316. // Write To GRAM
  317. send_ctrl_cmd(0x2C);
  318. }
  319. static unsigned int lcm_compare_id(void)
  320. {
  321. return 1;
  322. }
  323. // ---------------------------------------------------------------------------
  324. //  Get LCM Driver Hooks
  325. // ---------------------------------------------------------------------------
  326. LCM_DRIVER ili9486_lcm_drv =
  327. {
  328. .name           = "ili9486",
  329. .set_util_funcs = lcm_set_util_funcs,
  330. .get_params     = lcm_get_params,
  331. .init           = lcm_init,
  332. .suspend        = lcm_suspend,
  333. .resume         = lcm_resume,
  334. .update         = lcm_update,
  335. .compare_id     = lcm_compare_id
  336. };

注意事项:

1.调试屏幕主要的工作是初始化和时序设置

2.编译的时候,仅仅使用./mk r ub k 是不够的,还需要运行./mk bootimage命令

3.可能是更改了gpio口中LRSTB的原因导致reset失败,代码中通过以下代码手动设置reset信号

  1. static void lcm_init(void)
  2. {
  3. // SET_RESET_PIN(1);
  4. mt_set_gpio_mode(GPIO_LCD_RST,GPIO_MODE_00);
  5. mt_set_gpio_dir(GPIO_LCD_RST,GPIO_DIR_OUT);
  6. mt_set_gpio_out(GPIO_LCD_RST,GPIO_OUT_ONE);
  7. MDELAY(1);
  8. //SET_RESET_PIN(0);
  9. mt_set_gpio_out(GPIO_LCD_RST,GPIO_OUT_ZERO);
  10. MDELAY(10);
  11. //SET_RESET_PIN(1);
  12. mt_set_gpio_out(GPIO_LCD_RST,GPIO_OUT_ONE);
  13. MDELAY(100);
  14. ...
  15. }

mtk android lcm调试的更多相关文章

  1. MTK Android Driver :Lcm

    MTK Android Driver :lcm 1.怎样新建一个LCD驱动 LCD模组主要包括LCD显示屏和驱动IC.比如LF040DNYB16a模组的驱动IC型号为NT35510.要在MTK6577 ...

  2. MTK Android software Tools工具的说明

    MTK发布的Android software Tools工具包,里面包含了很多的MTK工具,如下是简要说明及学习文档 MTK Android software Tools工具的说明如下: 工具 说明 ...

  3. Ubuntu杂记——Ubuntu下以USB方式连接Android手机调试

    在Ubuntu下进行Android开发,发现自己的手机就算打开USB连接.USB调试还是连不上,一直都是显示??????.百度了很多,发现都是要改“ /etc/udev/rules.d/50-andr ...

  4. Android Studio调试功能使用总结【转】

    Android Studio调试功能使用总结[转]   这段时间一直在使用Intellij IDEA, 今天把调试区工具的使用方法记录于此. 先编译好要调试的程序. 1.设置断点 选定要设置断点的代码 ...

  5. Android编程: 调试方法

    学习知识:Android的调试方法 ====调试方法==== 前提: IDE环境为Android Studio,熟悉LogCat,知道如何查看日志信息 工具: Android DDMS调试工具,一般点 ...

  6. ###Android 断点调试和高级调试###

    转自:http://www.2cto.com/kf/201506/408358.html 有人说Android 的调试是最坑的,那我只能说是你不会用而已,我可以说Android Studio的调试是我 ...

  7. Android开发调试日志工具类[支持保存到SD卡]

    直接上代码: package com.example.callstatus; import java.io.File; import java.io.FileWriter; import java.i ...

  8. Android Studio调试功能使用总结---转

    Android Studio调试功能使用总结[转]   这段时间一直在使用Intellij IDEA, 今天把调试区工具的使用方法记录于此. 先编译好要调试的程序. 1.设置断点 选定要设置断点的代码 ...

  9. MTK Android O1平台预置apk

    在MTK Android O1平台预置apk为可卸载时.预置到旧的路径system/vendor/operator/app会编译报错,"You cannot install files to ...

随机推荐

  1. Bootstrap的宽度和分辨率的差别

    首先在bootstrap里面所有的样式并在pc上是根据px的单位来判断的,就是我们说的分辨率, @media(min-width:1200px){ ......里面的样式 } 那么就是说当你的屏幕放大 ...

  2. 玩具装箱 bzoj1010 斜率优化

    斜率优化的题好像都是这样的方程:左边关于j,k的一个(...)/(...)的式子,右边是个只与i有关的可算的数字: 然后把它放到二维坐标轴上,用单调队列维护一个凸壳,O(n)的复杂度: 这道题但是我发 ...

  3. A beginner’s introduction to Deep Learning

    A beginner’s introduction to Deep Learning I am Samvita from the Business Team of HyperVerge. I join ...

  4. WPF 与Surface 2.0 SDK 亲密接触 - ScatterView 数据绑定篇

    与我们常用的一些WPF 控件相同,ScatterView 控件也支持数据绑定功能.本篇将演示如何利用ScatterView 绑定Win7 系统中的样例图片,并且每张图片会以独立的ScatterView ...

  5. 1024: [SCOI2009]生日快乐

    暴力题,N<=10,没注意到平均分,读题真是.. 我们对于一个矩形分成两块进行搜.然后求较大值. ans=min(ans,max(dfs(x,y/n*i,i),dfs(x,y/n*(n-i),n ...

  6. awk处理之案例二:awk匹配文本

    编译环境 本系列文章所提供的算法均在以下环境下编译通过. [脚本编译环境]Federa 8,linux 2.6.35.6-45.fc14.i686 [处理器] Intel(R) Core(TM)2 Q ...

  7. $("#id a") - $("#id .c a") = ?

    前沿 这是之前淘宝的一道面试题,题目借用了 jQuery 选择器的语法.大概的意思是,从 #id 元素内选出所有不是 .c 后代的 a 元素,即父元素 #id 内的所有后代元素中,选出不是 .c 后代 ...

  8. POJ 3114 Countries in War(强联通分量+Tarjan)

    题目链接 题意 : 给你两个城市让你求最短距离,如果两个城市位于同一强连通分量中那距离为0. 思路 :强连通分量缩点之后,求最短路.以前写过,总感觉记忆不深,这次自己敲完再写了一遍. #include ...

  9. Codeforces Round #260 (Div. 2) A~C

    题目链接 A. Laptops time limit per test:1 secondmemory limit per test:256 megabytesinput:standard inputo ...

  10. 本地替换文件读取MYSQL密码

    Mysql 的密码默认是存储在/data/mysql/下面的三个文件中:user.MYD,user.frm,user.MYI 先把这三个文件下载到本地,然后替换本地的这三个文件 使用net stop ...