??xml version="1.0" encoding="utf-8" standalone="yes"?>久久亚洲2019中文字幕,国产69精品久久久久久人妻精品,久久精品无码一区二区无码http://www.shnenglu.com/agaric/C元素zh-cnWed, 07 May 2025 00:58:37 GMTWed, 07 May 2025 00:58:37 GMT60一Ds3c lcd framebuffer 的代?/title><link>http://www.shnenglu.com/agaric/archive/2008/04/17/47331.html</link><dc:creator>菌子</dc:creator><author>菌子</author><pubDate>Thu, 17 Apr 2008 04:52:00 GMT</pubDate><guid>http://www.shnenglu.com/agaric/archive/2008/04/17/47331.html</guid><wfw:comment>http://www.shnenglu.com/agaric/comments/47331.html</wfw:comment><comments>http://www.shnenglu.com/agaric/archive/2008/04/17/47331.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/agaric/comments/commentRss/47331.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/agaric/services/trackbacks/47331.html</trackback:ping><description><![CDATA[<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;">  1</span> <span style="color: #0000ff;">int</span><span style="color: #000000;"> __init s3c_fb_probe(</span><span style="color: #0000ff;">struct</span><span style="color: #000000;"> platform_device </span><span style="color: #000000;">*</span><span style="color: #000000;">pdev)<br></span><span style="color: #008080;">  2</span> <span style="color: #000000;">{<br></span><span style="color: #008080;">  3</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">char</span><span style="color: #000000;"> driver_name[]</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">s3c_fb</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br></span><span style="color: #008080;">  4</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> ret;<br></span><span style="color: #008080;">  5</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> index</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br></span><span style="color: #008080;">  6</span> <span style="color: #000000;"><br></span><span style="color: #008080;">  7</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">for</span><span style="color: #000000;">(index</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">; index</span><span style="color: #000000;"><</span><span style="color: #000000;">S3C_FB_NUM; index</span><span style="color: #000000;">++</span><span style="color: #000000;">){                   </span><span style="color: #008000;">//</span><span style="color: #008000;">遍历每一个fb,我们里只有一个lcd.</span><span style="color: #008000;"><br></span><span style="color: #008080;">  8</span> <span style="color: #008000;"></span><span style="color: #000000;">        s3c_fb_init_fbinfo(</span><span style="color: #000000;">&</span><span style="color: #000000;">info[index], driver_name, index);<br></span><span style="color: #008080;">  9</span> <span style="color: #000000;"><br></span><span style="color: #008080;"> 10</span> <span style="color: #000000;">        </span><span style="color: #0000ff;">if</span><span style="color: #000000;">(index</span><span style="color: #000000;">==</span><span style="color: #000000;">0</span><span style="color: #000000;">){                                          </span><span style="color: #008000;">//</span><span style="color: #008000;">操作主lcd</span><span style="color: #008000;"><br></span><span style="color: #008080;"> 11</span> <span style="color: #008000;"></span><span style="color: #000000;">            s3c_fb_backlight_power(</span><span style="color: #000000;">1</span><span style="color: #000000;">);                         </span><span style="color: #008000;">//</span><span style="color: #008000;">开启背光,lcd甉|源,开启背光等?          </span><span style="color: #008000;"><br></span><span style="color: #008080;"> 12</span> <span style="color: #008000;"></span><span style="color: #000000;">            s3c_fb_lcd_power(</span><span style="color: #000000;">1</span><span style="color: #000000;">);<br></span><span style="color: #008080;"> 13</span> <span style="color: #000000;">            s3c_fb_backlight_level(DEFAULT_BACKLIGHT_LEVEL);<br></span><span style="color: #008080;"> 14</span> <span style="color: #000000;"><br></span><span style="color: #008080;"> 15</span> <span style="color: #000000;">            dprintk(</span><span style="color: #000000;">"</span><span style="color: #000000;">dev FB init\n</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br></span><span style="color: #008080;"> 16</span> <span style="color: #000000;"><br></span><span style="color: #008080;"> 17</span> <span style="color: #000000;">            </span><span style="color: #008000;">//</span><span style="color: #008000;">映射内存区域</span><span style="color: #008000;"><br></span><span style="color: #008080;"> 18</span> <span style="color: #008000;"></span><span style="color: #000000;">            </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (</span><span style="color: #000000;">!</span><span style="color: #000000;">request_mem_region((unsigned </span><span style="color: #0000ff;">long</span><span style="color: #000000;">)S3C_VA_LCD, SZ_1M, </span><span style="color: #000000;">"</span><span style="color: #000000;">s3c-lcd</span><span style="color: #000000;">"</span><span style="color: #000000;">)) {<br></span><span style="color: #008080;"> 19</span> <span style="color: #000000;">                ret </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">-</span><span style="color: #000000;">EBUSY;<br></span><span style="color: #008080;"> 20</span> <span style="color: #000000;">                </span><span style="color: #0000ff;">goto</span><span style="color: #000000;"> dealloc_fb;<br></span><span style="color: #008080;"> 21</span> <span style="color: #000000;">            }<br></span><span style="color: #008080;"> 22</span> <span style="color: #000000;"><br></span><span style="color: #008080;"> 23</span> <span style="color: #000000;">            dprintk(</span><span style="color: #000000;">"</span><span style="color: #000000;">got LCD region\n</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br></span><span style="color: #008080;"> 24</span> <span style="color: #000000;"><br></span><span style="color: #008080;"> 25</span> <span style="color: #000000;">            </span><span style="color: #008000;">//</span><span style="color: #008000;">打开lcd_clock</span><span style="color: #008000;"><br></span><span style="color: #008080;"> 26</span> <span style="color: #008000;"></span><span style="color: #000000;">            lcd_clock </span><span style="color: #000000;">=</span><span style="color: #000000;"> clk_get(NULL, </span><span style="color: #000000;">"</span><span style="color: #000000;">lcd</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br></span><span style="color: #008080;"> 27</span> <span style="color: #000000;">            </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (</span><span style="color: #000000;">!</span><span style="color: #000000;">lcd_clock) {<br></span><span style="color: #008080;"> 28</span> <span style="color: #000000;">                printk(KERN_INFO </span><span style="color: #000000;">"</span><span style="color: #000000;">failed to get lcd clock source\n</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br></span><span style="color: #008080;"> 29</span> <span style="color: #000000;">                ret </span><span style="color: #000000;">=</span><span style="color: #000000;">  </span><span style="color: #000000;">-</span><span style="color: #000000;">ENOENT;<br></span><span style="color: #008080;"> 30</span> <span style="color: #000000;">                </span><span style="color: #0000ff;">goto</span><span style="color: #000000;"> release_irq;<br></span><span style="color: #008080;"> 31</span> <span style="color: #000000;">            }<br></span><span style="color: #008080;"> 32</span> <span style="color: #000000;"><br></span><span style="color: #008080;"> 33</span> <span style="color: #000000;">            clk_enable(lcd_clock);<br></span><span style="color: #008080;"> 34</span> <span style="color: #000000;">            printk(</span><span style="color: #000000;">"</span><span style="color: #000000;">S3C_LCD clock got enabled :: %ld.%03ld Mhz\n</span><span style="color: #000000;">"</span><span style="color: #000000;">, print_mhz(clk_get_rate(lcd_clock)));<br></span><span style="color: #008080;"> 35</span> <span style="color: #000000;"><br></span><span style="color: #008080;"> 36</span> <span style="color: #000000;">            msleep(</span><span style="color: #000000;">5</span><span style="color: #000000;">);<br></span><span style="color: #008080;"> 37</span> <span style="color: #000000;">        }<br></span><span style="color: #008080;"> 38</span> <span style="color: #000000;"><br></span><span style="color: #008080;"> 39</span> <span style="color: #000000;">        </span><span style="color: #008000;">//</span><span style="color: #008000;">甌昑֭</span><span style="color: #008000;"><br></span><span style="color: #008080;"> 40</span> <span style="color: #008000;"></span><span style="color: #000000;">        </span><span style="color: #008000;">/*</span><span style="color: #008000;"> Initialize video memory </span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;"> 41</span> <span style="color: #000000;">        ret </span><span style="color: #000000;">=</span><span style="color: #000000;"> s3c_fb_map_video_memory(</span><span style="color: #000000;">&</span><span style="color: #000000;">info[index]);<br></span><span style="color: #008080;"> 42</span> <span style="color: #000000;">        </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (ret) {<br></span><span style="color: #008080;"> 43</span> <span style="color: #000000;">            printk(</span><span style="color: #000000;">"</span><span style="color: #000000;">Failed to allocate video RAM: %d\n</span><span style="color: #000000;">"</span><span style="color: #000000;">, ret);<br></span><span style="color: #008080;"> 44</span> <span style="color: #000000;">            ret </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">-</span><span style="color: #000000;">ENOMEM;<br></span><span style="color: #008080;"> 45</span> <span style="color: #000000;">            </span><span style="color: #0000ff;">goto</span><span style="color: #000000;"> release_clock;<br></span><span style="color: #008080;"> 46</span> <span style="color: #000000;">        }<br></span><span style="color: #008080;"> 47</span> <span style="color: #000000;">        dprintk(</span><span style="color: #000000;">"</span><span style="color: #000000;">got video memory\n</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br></span><span style="color: #008080;"> 48</span> <span style="color: #000000;"><br></span><span style="color: #008080;"> 49</span> <span style="color: #000000;">        </span><span style="color: #008000;">//</span><span style="color: #008000;">初始化寄存器Q这里与具体的设备有兟?/span><span style="color: #008000;"><br></span><span style="color: #008080;"> 50</span> <span style="color: #008000;"></span><span style="color: #000000;">        ret </span><span style="color: #000000;">=</span><span style="color: #000000;"> s3c_fb_init_registers(</span><span style="color: #000000;">&</span><span style="color: #000000;">info[index]);<br></span><span style="color: #008080;"> 51</span> <span style="color: #000000;">        ret </span><span style="color: #000000;">=</span><span style="color: #000000;"> s3c_fb_check_var(</span><span style="color: #000000;">&</span><span style="color: #000000;">info[index].fb.var, </span><span style="color: #000000;">&</span><span style="color: #000000;">info[index].fb);<br></span><span style="color: #008080;"> 52</span> <span style="color: #000000;"><br></span><span style="color: #008080;"> 53</span> <span style="color: #000000;">        </span><span style="color: #008000;">//</span><span style="color: #008000;">所谓的色表Q调色盘Q)Q不清除是干啥的?/span><span style="color: #008000;"><br></span><span style="color: #008080;"> 54</span> <span style="color: #008000;"></span><span style="color: #000000;">        </span><span style="color: #0000ff;">if</span><span style="color: #000000;">(index</span><span style="color: #000000;"><</span><span style="color: #000000;">2</span><span style="color: #000000;">){<br></span><span style="color: #008080;"> 55</span> <span style="color: #000000;">            </span><span style="color: #008000;">/*</span><span style="color: #008000;"> 2007-01-09-Tue. for RGB 8-8-8 palette</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;"> 56</span> <span style="color: #000000;">            </span><span style="color: #0000ff;">if</span><span style="color: #000000;">(fb_alloc_cmap(</span><span style="color: #000000;">&</span><span style="color: #000000;">info[index].fb.cmap, </span><span style="color: #000000;">256</span><span style="color: #000000;">, </span><span style="color: #000000;">0</span><span style="color: #000000;">)</span><span style="color: #000000;"><</span><span style="color: #000000;">0</span><span style="color: #000000;">){<br></span><span style="color: #008080;"> 57</span> <span style="color: #000000;">                </span><span style="color: #0000ff;">goto</span><span style="color: #000000;"> dealloc_fb;<br></span><span style="color: #008080;"> 58</span> <span style="color: #000000;">            }<br></span><span style="color: #008080;"> 59</span> <span style="color: #000000;">        }<br></span><span style="color: #008080;"> 60</span> <span style="color: #000000;">        </span><span style="color: #0000ff;">else</span><span style="color: #000000;">{<br></span><span style="color: #008080;"> 61</span> <span style="color: #000000;">            </span><span style="color: #008000;">/*</span><span style="color: #008000;"> 2007-01-09-Tue. for RGB 8-8-8 palette</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;"> 62</span> <span style="color: #000000;">            </span><span style="color: #0000ff;">if</span><span style="color: #000000;">(fb_alloc_cmap(</span><span style="color: #000000;">&</span><span style="color: #000000;">info[index].fb.cmap, </span><span style="color: #000000;">16</span><span style="color: #000000;">, </span><span style="color: #000000;">0</span><span style="color: #000000;">)</span><span style="color: #000000;"><</span><span style="color: #000000;">0</span><span style="color: #000000;">){<br></span><span style="color: #008080;"> 63</span> <span style="color: #000000;">                </span><span style="color: #0000ff;">goto</span><span style="color: #000000;"> dealloc_fb;<br></span><span style="color: #008080;"> 64</span> <span style="color: #000000;">            }<br></span><span style="color: #008080;"> 65</span> <span style="color: #000000;">        }<br></span><span style="color: #008080;"> 66</span> <span style="color: #000000;">        </span><span style="color: #008000;">//</span><span style="color: #008000;">注册framebuffer??</span><span style="color: #008000;"><br></span><span style="color: #008080;"> 67</span> <span style="color: #008000;"></span><span style="color: #000000;">        ret </span><span style="color: #000000;">=</span><span style="color: #000000;"> register_framebuffer(</span><span style="color: #000000;">&</span><span style="color: #000000;">info[index].fb);<br></span><span style="color: #008080;"> 68</span> <span style="color: #000000;">        </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (ret </span><span style="color: #000000;"><</span><span style="color: #000000;"> </span><span style="color: #000000;">0</span><span style="color: #000000;">) {<br></span><span style="color: #008080;"> 69</span> <span style="color: #000000;">            printk(KERN_ERR </span><span style="color: #000000;">"</span><span style="color: #000000;">Failed to register framebuffer device: %d\n</span><span style="color: #000000;">"</span><span style="color: #000000;">, ret);<br></span><span style="color: #008080;"> 70</span> <span style="color: #000000;">            </span><span style="color: #0000ff;">goto</span><span style="color: #000000;"> free_video_memory;<br></span><span style="color: #008080;"> 71</span> <span style="color: #000000;">        }<br></span><span style="color: #008080;"> 72</span> <span style="color: #000000;">    }</span><span style="color: #008000;">//</span><span style="color: #008000;">     for(index=0; index<CONFIG_FB_NUM; index++)<br></span><span style="color: #008080;"> 73</span> <span style="color: #008000;"><br></span><span style="color: #008080;"> 74</span> <span style="color: #008000;">    </span><span style="color: #008000;">//</span><span style="color: #008000;">    initialize the struct for Waitforvsync<br></span><span style="color: #008080;"> 75</span> <span style="color: #008000;">    </span><span style="color: #008000;">//</span><span style="color: #008000;"> 关于中断的初始化工作Q貌?412是注册以后又取消?/span><span style="color: #008000;"><br></span><span style="color: #008080;"> 76</span> <span style="color: #008000;"></span><span style="color: #000000;">    s3cfb_vSyncInfo.count </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">0</span><span style="color: #000000;">;<br></span><span style="color: #008080;"> 77</span> <span style="color: #000000;">    init_waitqueue_head(</span><span style="color: #000000;">&</span><span style="color: #000000;">s3cfb_vSyncInfo.waitQueue);<br></span><span style="color: #008080;"> 78</span> <span style="color: #000000;"><br></span><span style="color: #008080;"> 79</span> <span style="color: #000000;"></span><span style="color: #0000ff;">#if</span><span style="color: #000000;"> defined(CONFIG_ARCH_S3C2443)</span><span style="color: #000000;"><br></span><span style="color: #008080;"> 80</span> <span style="color: #000000;">    ret </span><span style="color: #000000;">=</span><span style="color: #000000;"> request_irq(IRQ_LCD3, s3c_fb_irq, </span><span style="color: #000000;">0</span><span style="color: #000000;">, </span><span style="color: #000000;">"</span><span style="color: #000000;">s3c-lcd</span><span style="color: #000000;">"</span><span style="color: #000000;">, pdev);<br></span><span style="color: #008080;"> 81</span> <span style="color: #000000;"></span><span style="color: #0000ff;">#elif</span><span style="color: #000000;"> defined(CONFIG_ARCH_S3C6400)</span><span style="color: #000000;"><br></span><span style="color: #008080;"> 82</span> <span style="color: #000000;">    ret </span><span style="color: #000000;">=</span><span style="color: #000000;"> request_irq(IRQ_LCD_VSYNC, s3c_fb_irq, </span><span style="color: #000000;">0</span><span style="color: #000000;">, </span><span style="color: #000000;">"</span><span style="color: #000000;">s3c-lcd</span><span style="color: #000000;">"</span><span style="color: #000000;">, pdev);<br></span><span style="color: #008080;"> 83</span> <span style="color: #000000;"></span><span style="color: #0000ff;">#elif</span><span style="color: #000000;"> defined (CONFIG_S3C_DVS) && defined (CONFIG_ARCH_S3C2412)</span><span style="color: #000000;"><br></span><span style="color: #008080;"> 84</span> <span style="color: #000000;">    ret </span><span style="color: #000000;">=</span><span style="color: #000000;"> request_irq(IRQ_LCD, s3c_dvs_irq, </span><span style="color: #000000;">0</span><span style="color: #000000;">, </span><span style="color: #000000;">"</span><span style="color: #000000;">s3c-lcd</span><span style="color: #000000;">"</span><span style="color: #000000;">, pdev);<br></span><span style="color: #008080;"> 85</span> <span style="color: #000000;"></span><span style="color: #0000ff;">#endif</span><span style="color: #000000;"><br></span><span style="color: #008080;"> 86</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (ret </span><span style="color: #000000;">!=</span><span style="color: #000000;"> </span><span style="color: #000000;">0</span><span style="color: #000000;">) {<br></span><span style="color: #008080;"> 87</span> <span style="color: #000000;">        printk(</span><span style="color: #000000;">"</span><span style="color: #000000;">Failed to install irq (%d)\n</span><span style="color: #000000;">"</span><span style="color: #000000;">, ret);<br></span><span style="color: #008080;"> 88</span> <span style="color: #000000;">        </span><span style="color: #0000ff;">goto</span><span style="color: #000000;"> release_irq;<br></span><span style="color: #008080;"> 89</span> <span style="color: #000000;">    }<br></span><span style="color: #008080;"> 90</span> <span style="color: #000000;"><br></span><span style="color: #008080;"> 91</span> <span style="color: #000000;"></span><span style="color: #0000ff;">#if</span><span style="color: #000000;"> defined (CONFIG_S3C_DVS) & defined (CONFIG_ARCH_S3C2412)</span><span style="color: #000000;"><br></span><span style="color: #008080;"> 92</span> <span style="color: #000000;">    disable_irq(IRQ_LCD);<br></span><span style="color: #008080;"> 93</span> <span style="color: #000000;"></span><span style="color: #0000ff;">#endif</span><span style="color: #000000;"><br></span><span style="color: #008080;"> 94</span> <span style="color: #000000;"><br></span><span style="color: #008080;"> 95</span> <span style="color: #000000;">    </span><span style="color: #008000;">//</span><span style="color: #008000;">在sys底下建立节点Q用于和用户I间交互</span><span style="color: #008000;"><br></span><span style="color: #008080;"> 96</span> <span style="color: #008000;"></span><span style="color: #000000;">    </span><span style="color: #008000;">/*</span><span style="color: #008000;"> create device files </span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;"> 97</span> <span style="color: #000000;">    device_create_file(</span><span style="color: #000000;">&</span><span style="color: #000000;">(pdev</span><span style="color: #000000;">-></span><span style="color: #000000;">dev), </span><span style="color: #000000;">&</span><span style="color: #000000;">dev_attr_backlight_power);<br></span><span style="color: #008080;"> 98</span> <span style="color: #000000;">    device_create_file(</span><span style="color: #000000;">&</span><span style="color: #000000;">(pdev</span><span style="color: #000000;">-></span><span style="color: #000000;">dev), </span><span style="color: #000000;">&</span><span style="color: #000000;">dev_attr_backlight_level);<br></span><span style="color: #008080;"> 99</span> <span style="color: #000000;">    device_create_file(</span><span style="color: #000000;">&</span><span style="color: #000000;">(pdev</span><span style="color: #000000;">-></span><span style="color: #000000;">dev), </span><span style="color: #000000;">&</span><span style="color: #000000;">dev_attr_lcd_power);<br></span><span style="color: #008080;">100</span> <span style="color: #000000;"><br></span><span style="color: #008080;">101</span> <span style="color: #000000;">    </span><span style="color: #008000;">//</span><span style="color: #008000;">胜利退?/span><span style="color: #008000;"><br></span><span style="color: #008080;">102</span> <span style="color: #008000;"></span><span style="color: #000000;">    printk(KERN_INFO </span><span style="color: #000000;">"</span><span style="color: #000000;">fb%d: %s frame buffer device\n</span><span style="color: #000000;">"</span><span style="color: #000000;">,<br></span><span style="color: #008080;">103</span> <span style="color: #000000;">        info[index].fb.node, info[index].fb.fix.id);<br></span><span style="color: #008080;">104</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> </span><span style="color: #000000;">0</span><span style="color: #000000;">;<br></span><span style="color: #008080;">105</span> <span style="color: #000000;"><br></span><span style="color: #008080;">106</span> <span style="color: #000000;">free_video_memory:<br></span><span style="color: #008080;">107</span> <span style="color: #000000;">    s3c_fb_unmap_video_memory(</span><span style="color: #000000;">&</span><span style="color: #000000;">info[index]);<br></span><span style="color: #008080;">108</span> <span style="color: #000000;"><br></span><span style="color: #008080;">109</span> <span style="color: #000000;">release_clock:<br></span><span style="color: #008080;">110</span> <span style="color: #000000;">    clk_disable(lcd_clock);<br></span><span style="color: #008080;">111</span> <span style="color: #000000;">    clk_put(lcd_clock);<br></span><span style="color: #008080;">112</span> <span style="color: #000000;"><br></span><span style="color: #008080;">113</span> <span style="color: #000000;">release_irq:<br></span><span style="color: #008080;">114</span> <span style="color: #000000;"></span><span style="color: #0000ff;">#if</span><span style="color: #000000;"> defined(CONFIG_ARCH_S3C2443)</span><span style="color: #000000;"><br></span><span style="color: #008080;">115</span> <span style="color: #000000;">    free_irq(IRQ_LCD3, </span><span style="color: #000000;">&</span><span style="color: #000000;">info);<br></span><span style="color: #008080;">116</span> <span style="color: #000000;"></span><span style="color: #0000ff;">#elif</span><span style="color: #000000;"> defined(CONFIG_ARCH_S3C6400)</span><span style="color: #000000;"><br></span><span style="color: #008080;">117</span> <span style="color: #000000;">    free_irq(IRQ_LCD_VSYNC, </span><span style="color: #000000;">&</span><span style="color: #000000;">info);<br></span><span style="color: #008080;">118</span> <span style="color: #000000;"></span><span style="color: #0000ff;">#endif</span><span style="color: #000000;"><br></span><span style="color: #008080;">119</span> <span style="color: #000000;">    </span><span style="color: #008000;">//</span><span style="color: #008000;">release_mem:</span><span style="color: #008000;"><br></span><span style="color: #008080;">120</span> <span style="color: #008000;"></span><span style="color: #000000;">    release_mem_region((unsigned </span><span style="color: #0000ff;">long</span><span style="color: #000000;">)S3C_VA_LCD, S3C_SZ_LCD);<br></span><span style="color: #008080;">121</span> <span style="color: #000000;"><br></span><span style="color: #008080;">122</span> <span style="color: #000000;">dealloc_fb:<br></span><span style="color: #008080;">123</span> <span style="color: #000000;">    framebuffer_release(</span><span style="color: #000000;">&</span><span style="color: #000000;">info[index].fb);<br></span><span style="color: #008080;">124</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> ret;<br></span><span style="color: #008080;">125</span> <span style="color: #000000;">}<br></span><span style="color: #008080;">126</span> <span style="color: #000000;"><br></span><span style="color: #008080;">127</span> <span style="color: #000000;"><br></span><span style="color: #008080;">128</span> <span style="color: #000000;"></span></div> <br> <img src ="http://www.shnenglu.com/agaric/aggbug/47331.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/agaric/" target="_blank">菌子</a> 2008-04-17 12:52 <a href="http://www.shnenglu.com/agaric/archive/2008/04/17/47331.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>诅RLinux 内核设计与实现?/title><link>http://www.shnenglu.com/agaric/archive/2008/03/06/43779.html</link><dc:creator>菌子</dc:creator><author>菌子</author><pubDate>Wed, 05 Mar 2008 16:00:00 GMT</pubDate><guid>http://www.shnenglu.com/agaric/archive/2008/03/06/43779.html</guid><wfw:comment>http://www.shnenglu.com/agaric/comments/43779.html</wfw:comment><comments>http://www.shnenglu.com/agaric/archive/2008/03/06/43779.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.shnenglu.com/agaric/comments/commentRss/43779.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/agaric/services/trackbacks/43779.html</trackback:ping><description><![CDATA[<p> </p> <h1>W二?从内核出?/h1> <p> </p> <h3>内核开发特点: </h3> <ol> <li>没有libc库?kernel是一个不依赖M库的Q包括标准C函数库。kernel中用的一些常见函敎ͼ比如memset, strcpy都是在kernel代码中自己实现的? <li>请用gcc来编译内核,因ؓ内核中的代码q不完全W合ANSI C的标准? <li>没有内存保护Q非法的内存操作可能会ɾpȝ挂v? <li>不要使用点? <li>内核栈容量很( 2 * 面大小 Q? <li>linux是抢占多d操作pȝQ进E,内核都可以抢占,而且支持多处理器Q所以内总码需要考虑q发和同步的问题? <li>量要兼Ҏ有架?arch)Q良好的UL?/li></ol> <p> </p> <p> </p> <p> </p> <h1>W三?q程理</h1> <p> </p> <h3>内存描述W及dl构</h3> <ol> <li>每个q程都对应有一个进E描q符Q即task_structl构Q用来记录这个进E的所有信息:打开的文Ӟ地址I间Q进E状态…? <li>linux通过slabQ个人感觉类gpoolQ分配task_struct?q程的task_struct指针存放在位于内核栈底的一个叫做thread_info的结构里面? <li>内核通过PID来标识进E,默认讄最大|即默认系l最大进E数?2768。内怸一般通过current宏来L当前q程的task_struct,不同的体pL构下Q实现方法可能会不同? <li>q程状态,可以通过set_task_state来设|? <ol> <li>TASK_RUNNING q程可执行;它正在运行,或者是在Q务队列中{待被运行? <li>TASK_INTERRUPTIBLE q程可中断;q程被阻塞,但是可以通过信号Q或者其他方法唤醒? <li>TASK_UNINTERRUPTIBLE q程不可中断Q进E被dQ而且不受Mq扰Q不会响应信可被唤醒? <li>TASK_ZOMBIE q程僉|Q进E已l运行完毕,但是父进E没有调用wait4pȝ调用Q此时子q程的task_struct保留Q等待父q程查询相关信息。【Agaric:怼的,在windows上,q程的HANDLE通过QCreateProcess或者OpenProcess得到Q?在程序运行完毕后Q在CloseHandle 前,也是仍然有效Q用于查询进E相关信息,比如Exit code {等? <li>TASK_STOPPED q程停止;</li></ol> <li>q程上下文: q程通过pȝ调用或者异帔R入内核,此时内核?代表q程"在工作,q个工作环境Q叫做进E上下文Q内核程序可以通过宏来L当前q程的task_struct <li>q程家族树: 除了initQ每个进E都有父q程Q?每个q程都可能有子进E及兄弟q程?/li></ol> <p>Q待l)</p><img src ="http://www.shnenglu.com/agaric/aggbug/43779.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/agaric/" target="_blank">菌子</a> 2008-03-06 00:00 <a href="http://www.shnenglu.com/agaric/archive/2008/03/06/43779.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>OpenSuse 10.3 上配|svn 服务?/title><link>http://www.shnenglu.com/agaric/archive/2008/03/01/43522.html</link><dc:creator>菌子</dc:creator><author>菌子</author><pubDate>Sat, 01 Mar 2008 09:08:00 GMT</pubDate><guid>http://www.shnenglu.com/agaric/archive/2008/03/01/43522.html</guid><wfw:comment>http://www.shnenglu.com/agaric/comments/43522.html</wfw:comment><comments>http://www.shnenglu.com/agaric/archive/2008/03/01/43522.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/agaric/comments/commentRss/43522.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/agaric/services/trackbacks/43522.html</trackback:ping><description><![CDATA[<br> <h2 style="color: #000000;">配置svnserver</h2> <ol> </ol> 可以直接在YaST2里面Q在xinetd讄里面Q添加svnserve的选项?br>但是要注意运行用的用户Q默认的svn:svn是没有被建立的, 我改成nobody以后ok了,但不知道有什么什么问题?br><br><br> <h2 style="color: #000000;">配置APACHE</h2> 采用svnserver的方法有许多不便Q所以我q是军_最l采用http的方法?br>OpenSuse的apache2的配|文件布局g和其他系l有点不一栗?它在httpd.conf里面q没有直接进行的配置Q而是包含了其他很多的conf文gQ其中的每一个confQ包含了某一个具体部分的配置?br><br>ls /etc/apache2/<br><br>charset.conv         httpd.conf   mod_autoindex-defaults.conf  mod_status.conf     ssl.crl          ssl.key      vhosts.d<br>conf.d               listen.conf  mod_info.conf                mod_userdir.conf    ssl.crt          ssl.prm<br>default-server.conf  magic        mod_log_config.conf          mod_usertrack.conf  ssl.csr          sysconfig.d<br>errors.conf          mime.types   mod_mime-defaults.conf       server-tuning.conf  ssl-global.conf  uid.conf<br><br>配置svn 使用 apache 的文章很多,我就不重复具体的配置Ҏ了,只是说明一下在suse10.3上具体需要修改的文g?br>/etc/apache2/conf.d/subversion.conf    q个文g被httpd.conf所包含Q用来修改svn目录及一些设|,一般教E里面都是修改httpd.conf.<br>/etc/apache2/sysconfig.d/loadmodule.conf 用来在apache启动时加载模块用?<br><br>我最l解决mod_dav_svn加蝲的方法是Q在/usr/lib/apache2-prefork/ 下徏立一?mod_dav_svn.so的链接(位于 /usr/lib/apache2Q这样在YaST的httpserver讑֮里面可以选择和加载这个模块了?是q个问题Q花了我好几个消失来解决?br><br>其他的配|方法,可以参考svn中文手册Q和|上其他的配|教E?br> <br><br><br><br><br><br><br><br>      <ol> </ol> <br><br><img src ="http://www.shnenglu.com/agaric/aggbug/43522.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/agaric/" target="_blank">菌子</a> 2008-03-01 17:08 <a href="http://www.shnenglu.com/agaric/archive/2008/03/01/43522.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一些参考文章地址http://www.shnenglu.com/agaric/archive/2008/02/02/42415.html菌子菌子Sat, 02 Feb 2008 15:41:00 GMThttp://www.shnenglu.com/agaric/archive/2008/02/02/42415.htmlhttp://www.shnenglu.com/agaric/comments/42415.htmlhttp://www.shnenglu.com/agaric/archive/2008/02/02/42415.html#Feedback0http://www.shnenglu.com/agaric/comments/commentRss/42415.htmlhttp://www.shnenglu.com/agaric/services/trackbacks/42415.html
http://blog.chinaunix.net/u1/41638/showart_438078.html

http://blog.csdn.net/fudan_abc/



菌子 2008-02-02 23:41 发表评论
]]>
kernel 2.6.23.9 UL?S3C2412q_http://www.shnenglu.com/agaric/archive/2008/01/28/42076.html菌子菌子Mon, 28 Jan 2008 15:30:00 GMThttp://www.shnenglu.com/agaric/archive/2008/01/28/42076.htmlhttp://www.shnenglu.com/agaric/comments/42076.htmlhttp://www.shnenglu.com/agaric/archive/2008/01/28/42076.html#Feedback2http://www.shnenglu.com/agaric/comments/commentRss/42076.htmlhttp://www.shnenglu.com/agaric/services/trackbacks/42076.html 

我用的不是SMDK2412的开发板Q而是公司已经?412的机器,原来用的是自q一个OSQ现在打在他上面运行linux.

~译2.6的内核,需要比较新的gcc, 我暂时能扑ֈ的新版arm-linux-gcc也就?.4.1。,之前用arm-none-linux-eabi-gcc 4.1~出来的zImage好大Q基本不能用。对于开发工具和内核版本Q我觉得q是新好Q稳定版Q,否则可能会遇C些稀奇古怪的问题?/p>

1.修改Boot

使用公司原有的Boot, 在Boot启动Kernel的时候,加入的参数设定,然后用公怸用的usb更新工具烧录kernel到flash中,启动机器以后昄了一堆ؕ码,在启动参?console=ttySAC0后面加上?115200Q设定L特率以后一切OK.

2.MTD分区Q修Ҏ件common-smdk.c Q?修改其中的MTD讑֤的分区?/p>

新的kernel里面已经有了默认分区表,我们只要Ҏ我们需要来做部分修改就可以Q我的nand?12MBQ?我目前只是将前面?M分给boot,kernel, 紧接下来?M分给rootfsQ打暂时加载一?单的cramfs。其他的nand都还没有用?/p>

3.取消NAND驱动中的ECCL验,以及坏块监测部分, 因ؓNAND操作部分Qboot和kernel有一些不同?/p>

重启以后Qmount root分区p|Q还打出了I/O 错误?关闭了ECC校验Q修改了pc工具的烧录地址以后Qok. q都是因为我们的烧录工具使用的地址表示Ҏ和ecc的方式有一些不同?/p>

4.烧录 root 文gpȝ?/p>

拿了一个在kernel2.4 2440 上用q得cramfs直接来用Q提C找不到dev/consoleQ?上网查了一遍,应该是因为现在新版的kernelL了devfs的缘故,Z先快速的有一个可执行环境Q所以在|上找了一个现成的Q已l自己徏立好节点的cramfsQ里面的busybox版本也比较新?

 

开行,ȝ见到了亲qshell.



菌子 2008-01-28 23:30 发表评论
]]>
关于Fedora二三?/title><link>http://www.shnenglu.com/agaric/archive/2008/01/14/41163.html</link><dc:creator>菌子</dc:creator><author>菌子</author><pubDate>Mon, 14 Jan 2008 15:50:00 GMT</pubDate><guid>http://www.shnenglu.com/agaric/archive/2008/01/14/41163.html</guid><wfw:comment>http://www.shnenglu.com/agaric/comments/41163.html</wfw:comment><comments>http://www.shnenglu.com/agaric/archive/2008/01/14/41163.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.shnenglu.com/agaric/comments/commentRss/41163.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/agaric/services/trackbacks/41163.html</trackback:ping><description><![CDATA[工作需要,加之好奇心,l于l自己家的PC里面也安装上了Linux?Z和公司的OpenSuse有所不同于是选择另一Ƒ֤名顶的发行版Fedora.<br><br>我一直认为,人生L要遇C些挫折的?可不是装个pȝ嘛,为啥pq样难ؓ我捏Q?br><br>懒得插上光驱Q于是就用硬盘安装的办法?可grub for dos 是不认我从ISO里解出来的vmlinuz, <img src="http://www.shnenglu.com/CuteSoft_Client/CuteEditor/images/emdgust.gif" align="absmiddle" border="0"> 汗,攄LQ貌似没有h遇到q这个情c不能就q样攑ּ吧?再看看解压出来的一个jpgQ居然也打不开Qnnd是不是文件解错了?之前我解文g用的是winrar, 换成 Deamon Tools 试试Q?NND q次那附图OK了?再用grub来load Q?OK! 额。?原来winrar在解iso的时候会掉链子, 伙计们以后要千万心?br><br>以后的事顺利多了?nbsp; 装显卡驱动,直接用yum的包可以啦Q不q装完以后需要修改grub的listQ因为内怹更新了,需要从新的内核启动Q显卡驱动才可以奏效。Fedora默认已经安装了桌面特效,昑֍驱动安装完以后,直接在菜单里面选择打开ҎOK. 嘿嘿Q效果还可以吧?br><br> <img style="border-color: #0a0000;" alt="" src="http://www.shnenglu.com/images/cppblog_com/agaric/WindowsLiveWriter/Screenshot.png" border="2" height="500" width="800"><br><br><br>接下来就是解决QQ滴问题了?开始用PiginQ只能聊天,而且只能看见在线的好友,勉强能用Q后来又装了wine上面的qq2007,应该是配|的问题QLcrash?不过最后发ClumaQQ和evaq两个好东东?我本是比较喜Ƣeva的,功能很全了,界面也很友好Q只可惜q个家伙不能像其他的一些KDEE序在gnome下也能正常运行,只能在KDE下玩ѝLumaQQ作者现在主要在l护iphone版本的, 普通的java版有一D|间没更新了, 现在q能常用Q?界面也还好?br><br>q几天综合下来,感觉Fedoraq算不错Q但是易用性上面,不如Opensuse?至于 ubuntu Q?我用的不多, 感觉优点是国内源多,所以更新和下蝲E序速度比较快?br><br><img src="http://www.shnenglu.com/CuteSoft_Client/CuteEditor/images/emcrook.gif" align="absmiddle" border="0"> 工作的Q务是一直Linux内核Q现在看来,q有很多东西要学Q很多\要走?br><br>我觉得对于这h较长期/艰巨的Q务,相我q样工作l验不丰富的人,很难针对它来指定一个计划, 其实是很难其分割成一步步来完成的计划。导致每天都晕晕呼呼的不知道q什么好?希望有经验的朋友能给点徏议?br><br><br><span style="color: red;">Winrar解ISO可能会掉铑֭<br><br>对Linux有兴的初学者,不妨亲n在机器上安装一个易用的发行版(非虚拟机Q?推荐Ubuntu, Opensuse10.3QKDEQ)<br></span> <img src ="http://www.shnenglu.com/agaric/aggbug/41163.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/agaric/" target="_blank">菌子</a> 2008-01-14 23:50 <a href="http://www.shnenglu.com/agaric/archive/2008/01/14/41163.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[zz]Who do you think is the best coder, and whyhttp://www.shnenglu.com/agaric/archive/2007/12/23/39310.html菌子菌子Sat, 22 Dec 2007 16:39:00 GMThttp://www.shnenglu.com/agaric/archive/2007/12/23/39310.htmlhttp://www.shnenglu.com/agaric/comments/39310.htmlhttp://www.shnenglu.com/agaric/archive/2007/12/23/39310.html#Feedback0http://www.shnenglu.com/agaric/comments/commentRss/39310.htmlhttp://www.shnenglu.com/agaric/services/trackbacks/39310.html
Bill   Joy,   前QSun的首席科学家Q当q在Berkeley时主持开发了最早版本的BSD。他q是vi和csh的作者。当ӞCsh   Programming   Considered   Harmful   是另一个话题乐。据说他想看看自p不能写个操作pȝQ就在三天里写了个自qUnix,     也就是BSD的前w。当然是传说了,但见他的功力。另一个传说是Q?980q初的时候,DARPA让BBN在Berkley   Unix里加上BBN开发的TCP/IP代码。但当时q是研究生的B伯伯怒了Q拒l把BBN   TCP/IP加入BSDQ因Z觉得BBN的TCP/IP写得不好。于是B伯伯出手了,端的是一封喉,很快写Z高性能的伯克利版TCP/IP。当?   BBN和DARPA{了巨额合同开发TCP/IP   StackQ谁知他们的代码q不如一个研I生的好。于是他们开会。只见当时B伯伯I个T-shirt出现在会议室(当时IT-shirt不象现在Q还是相 当散漫的?。只见BBN问:你怎么写出来的Q而B伯伯{:单,你读协议Q然后编E就行了。最令偶晕倒的是,B伯伯士毕业后决定到工业界发展,于是? C当时只有一间办公室的Sun,   然后他就把Sparc设计出来乐。。。象q种软硬通吃的牛人,想不佩服都不行的说。据Bill   Joy的同事说Q一般开会的时候B伯伯L拿一堆杂志O不经心地诅R但往往在关键之处,B伯伯发言Q直切要宻I提出漂亮的构惻I让同事们d崩溃。对了, 他还是Java   Spec和JINI的主要作者之一?


John   CarmackQID   Software的founder和Lead   Programmer。上个月和一个搞囑Ş的师兄聊天,他竟然不知道John   Carmack,   也让偶大大地晕了一把。不q也许搞研究的和搞实战的多少有些隔吧。想必喜Ƣ第一人称击游戏的都知道J哥哥?0q代初只要能在PC上搞个小动画都能让h 惊叹一番的时候,J哥哥推Z石破天惊的Castle   Wolfstein,   然后再接再励Qdoom,   doomII,   Quake...每次都把3-D技术推到极
限。J哥哥的简历上说自q专长?Exhaust   3-D   technology"Q真是牛Za不我ƺ的说。做J哥哥q样的h是很q福的,因ؓ各大囑Ş卡厂家一有了C品就要向?#8220;qA”   Q不然如果他的游戏不支持哪种卡,哪种卡基本就会夭折乐。当初MS的Direct3D也得听取他的意见Q修改了不少API。当ӞJ哥哥在结婚前十数q如 一日地每天~程14时以上Q也是偶们凡人望莫及的。对了,J哥哥高中肆业(Q?Q可以说是自学成才。不q呢Q谁要用q个例子来ؓ自己学习不好辩护Q就 大错牚w了。那   Leonardo   Da   Vinciq是自学成才?人是U生子,不能上学)。普通h和天才还是有区别的。对了,其实偶们?#8220;辑ֈ?#8221;是相当不对的Q因为Vinci是地名,而Da   Vinci是从Vinci来的人的意思。换句话_Leonardo   Da   Vinci是“从Vinci来的Leonardo”的意思。叫别h“Da   Vinci”׃知所谓乐。嗯Q扯q了Q打住?

David   CutlerQVMS和Windows   NT的首席设计师Q去微Y前号U硅h牛的kernel开发员。当初他和他的手下在微Y一周内把一个具备基本功能的bootable   kernel写出来,然后_“who   can't   write   an   OS   in   a   week?"Q也是牛气冲天的说。顺便说一句,DL到NT3.5Ӟ理1500名开发员Q自p兼做设计和编E,不改coder本色啊?

DL天生脾气火爆Q和Z论时喜欢双手猛击桌子以壮声势?-)   日常交谈F-word不离口。他面试U书时必问:"what   do   you   think   of   the   word   'fuk'?"   Q让无数女刹羽而归。终于有一天,一个同L爆的女面对这个问题脱口而出Q?That's   my   favorite   word"。于是她被录取乐QؓDL工作到NT3.5发布?

Don   Knuth。高L其实用不着偶多说。学~程的不知道他就好像学物理的不知道牛,学数学的不知道欧拉,学音乐的不知道莫扎特Q学Delphi的不知到   Anders   HejlsbergQ或者学Linux不知道Linus   Torvalds一P不可原谅啊?-)Z让文章完_再|唆几句吧。高L本科时就开始给行行色色的公司写各种E奇古怪的~译器挣外快了。他卖给 别h时收一两千元Q那些公司拿了codeQ加工一下卖出去是上万上十万。不q也没见高爷爷不爽过Q学者本色的说。想想那可是60q代初啊Q高L写编 译器写多了,带搞Z个Attribute   Grammar和LR(k)Q大大地造福后h啊。至于高L在CalTech的编E比?有Alan   Kay得众多高高手参加)LW一Q写的Tex?6q就code   freezeQ还附带2^n分奖励{等都是耳熟能详的,偶就不饶舌乐?

Z说一下,高老大h无可争议的写作高手。他lConcrete   Mathematics   写的前言可谓字字铉KQ堪为前a的典范。他的技术文章也是一l,文风l致Q解释精当,而且没有学究气,不失d跌。记得几q前读Concrete   MathemathicsQ时不时开怀大笑Q让老妈极其郁闷Q觉得我nerdy到家Q不可救药。其实呢Q子非鱼Q安知鱼之乐Q更不知那完全是高爷L? 功뀂说到写作高手,不能不提Stephen   A.   Cook。他的文章当q就被我们的写作老师极力推荐Q号U典雅文风的h。库L一头银发,w材颀长,L面带谦和的微W,颇有仙风道骨Q正好和他的仙文 盔R的说?

高爷爷其实还是开源运动的先驱。虽然他没有象Richard   Stallman那样八方奔走Q但他捐献了好多作品Q都可以在网上看刎ͼ比如著名的Mathematical   WritingQMMIXWareQThe   Tex   Book{,更不用说以让他芳百世的Tex乐?

Ken   ThompsonQC语言前nB语言的作者,Unix的发明h之一(另一个是Dennis   M.   Riche老大Q被ؓDMR)QBelle(一个厉害的国际象棋E序)的作者之一,   操作pȝPlan   9的主要作?另一个是大牛人Rob   Pike,   前不久被google挖走?。KenL也算是计机历史上开天辟地的人物了?969q还是计机史前时代Q普通h都认为只有大型机才能q行通用的操 作系l,型机只有高׃Ԓ止的份儿。至于用高语言来写操作pȝQ更是笑谈。KenL自然不是池中物,于是他和DMR怒了Q在1969q到1970间用 汇编在PDP-7上写ZUNIX的第一个版本。他们ƈ不知道,一轰烈烈的UNIX传奇由此拉开了序q。KenL?971q又把Unix用C? 写,于是C在随?0q成׃不知多少豪杰的梦惛_光荣?

KenLq有D佳话:   装了UNIX的PDP-11最早被安装在Bell   Lab里供大家日常使用。很快大家就发现KenL总能q入他们的帐P获得最高权限。Bell   Lab里的U学安心比天高Q当然被搞得郁闷无比。于是有高手怒了Q蟩出来分析了UNIX代码Q找到后门,修改代码Q然后重新编译了整个UNIX。就在大 安以ؓ“q个世界清净?#8221;的时候,他们发现KenLq是轻而易丑֜拿到他们的帐h限,百思不解后Q只好l郁闗谁知道q一郁闷Q就郁闷?4q_ 直到KenL道出个中~由。原来,代码里的有后门Q但后门不在Unix代码里,而在~译Unix代码的C~译器里。每ơC~译器编译UNIX的代码, p动生成后门代码。而整个Bell   Lab的hQ都是用KenL的C~译器?D

菌子 2007-12-23 00:39 发表评论
]]>
学习步骤[zt]http://www.shnenglu.com/agaric/archive/2007/12/05/37887.html菌子菌子Wed, 05 Dec 2007 14:03:00 GMThttp://www.shnenglu.com/agaric/archive/2007/12/05/37887.htmlhttp://www.shnenglu.com/agaric/comments/37887.htmlhttp://www.shnenglu.com/agaric/archive/2007/12/05/37887.html#Feedback0http://www.shnenglu.com/agaric/comments/commentRss/37887.htmlhttp://www.shnenglu.com/agaric/services/trackbacks/37887.html

q是我在ITjob培训|上扑ֈ的课E大UԌ觉得作ؓ嵌入式系l开发的学习步骤Q按部就班地L行和学习Q到不失ZU好的学习方法:Q?/p>

q是作为参考也是有很好的h值的Q?/p>

随着CC会信息化进E的加快Q嵌入式pȝ被广泛的地应用于军事、家用、工业、商业、办公、医疗等C会各个? 面,表现出很强的投资价倹{从国际范围来看Q作为数字化电子信息产品核心的嵌入式pȝ目前其硬件和软g开发工具市场已l突?font face="文鼎Qͼ中楷, serif">2000亿美元,嵌入式系l带 来的全球工业q值更是达C一万亿元Q随着全球l济的持l增长以及信息化的加速发展,嵌入式系l市场必进一步增ѝ?font face="文鼎Qͼ中楷, serif">
本课E是Z适应目前发展q速的嵌入?font face="文鼎Qͼ中楷, serif">Linux需求而设计,评目标是让学员辑ֈ适应嵌入式应用Y件开发、嵌入式pȝ开发或嵌入式驱动开发的基本素质? 评循序渐进的带领您嵌入式开发的世界Q采用了目前应用最q泛的Yg开发^収ͼLinux?font face="文鼎Qͼ中楷, serif">ArmQ,可以保证您尽量脓q目前企业需求?/p>

学习步骤如下Q(一步步来哦Q)


1、Linux
基础

安装Linux操作pȝ
Linux
文gpȝ
Linux
常用命o
Linux
启动q程详解
熟悉Linux服务 能够独立安装Linux操作pȝ
能够熟练使用Linuxpȝ的基本命?
认识Linuxpȝ的常用服? 安装Linux操作pȝ
Linux
基本命o实践
Linux环境变量
定制Linux的服? Shell ~程基础 使用vi~辑文g
使用Emacs~辑文g
使用其他~辑?


2、Shell ~程基础

Shell?
认识后台E序
Bash
~程 熟悉Linuxpȝ下的~辑环境
熟悉Linux下的各种Shell
熟练q行shell~程 熟悉vi基本操作
熟悉Emacs的基本操?
比较不同shell的区?
~写一个测试服务器是否q通的shell脚本E序
~写一个查看进E是否存在的shell脚本E序
~写一个带有@环语句的shell脚本E序


3、Linux 下的 C ~程基础

linux C语言环境概述
Gcc
使用Ҏ
Gdb
调试技?
Autoconf
Automake
Makefile
代码优化 熟悉Linuxpȝ下的开发环?
熟悉Gcc~译?
熟悉Makefile规则 ~写Hello,WorldE序
使用 make命o~译E序
~写带有一个@环的E序
调试一个有问题的程?


4、嵌入式pȝ开发基

嵌入式系l概q?
交叉~译
配置TFTP服务
配置NFS服务
下蝲Bootloader和内?
嵌入?font face="文鼎Qͼ中楷, serif">Linux应用软g开发流E?br>熟悉嵌入式系l概念以及开发流E?
建立嵌入式系l开发环? 制作cross_gcc工具?
~译q下?font face="文鼎Qͼ中楷, serif">U-boot
~译q下?font face="文鼎Qͼ中楷, serif">Linux内核
~译q下?font face="文鼎Qͼ中楷, serif">Linux应用E序


4、嵌入式pȝUL

Linux内核代码
q_相关代码分析
ARM
q_介绍
q_UL的关键技?
ULLinux内核? ARMq_ 了解UL的概?
能够ULLinux内核 ULLinux2.6内核? ARM9开发板


5、嵌入式 Linux 下串口通信

串行I/O的基本概?
嵌入?font face="文鼎Qͼ中楷, serif">Linux应用软g开发流E?
Linux
pȝ的文件和讑֤
与文件相关的pȝ调用
配置l端?font face="文鼎Qͼ中楷, serif">MiniCOM 能够熟悉q行串口通信
熟悉文gI/O ~写串口通信E序
~写多串口通信E序


6、嵌入式pȝ中多q程E序设计

Linuxpȝq程概述
嵌入式系l的q程特点
q程操作
守护q程
相关的系l调? 了解Linuxpȝ中进E的概念
能够~写多进E程? ~写多进E程?
~写一个守护进E程?
sleep
pȝ调用 d理、同步与通信 Linuxd概述
d调度

信号
׃n内存
d理 API 了解Linuxpȝd理机制
熟悉q程间通信的几U方?
熟悉嵌入?font face="文鼎Qͼ中楷, serif">Linux中的d间同步与通信
~写一个简单的道E序实现文g传输
~写一个用共享内存的E序


7、嵌入式pȝ中多U程E序设计

U程的基知识
多线E编E方?
U程应用中的同步问题 了解U程的概?
能够~写单的多线E程? ~写一个多U程E序


8、嵌入式 Linux |络~程

|络基础知识
嵌入?font face="文鼎Qͼ中楷, serif">Linux?font face="文鼎Qͼ中楷, serif">TCP/IP|络l构
socket
~程
常用 API函数
分析Ping命o的实?
基本UDP套接口编E?
许可证管?
PPP
协议
GPRS
了解嵌入?font face="文鼎Qͼ中楷, serif">Linux|络体系l构
能够q行嵌入?font face="文鼎Qͼ中楷, serif">Linux环境下的socket ~程
熟悉UDP协议?font face="文鼎Qͼ中楷, serif">PPP协议
熟悉GPRS 使用socket ~写代理服务?
使用socket ~写路由?
~写许可证服务器
指出TCP?font face="文鼎Qͼ中楷, serif">UDP的优~点
~写一?font face="文鼎Qͼ中楷, serif">web服务?
~写一个运行在 ARMq_的网l播攑֙


9、GUI E序开?/span>

GUI基础
嵌入式系l?font face="文鼎Qͼ中楷, serif">GUIcd
~译QT
q行QT开? 熟悉嵌入式系l常用的GUI
能够q行QT~程 使用QT~写“HelloQ?font face="文鼎Qͼ中楷, serif">World”E序
调试一个加入信?font face="文鼎Qͼ中楷, serif">/槽的实例
通过重蝲QWidget cL法处理事?


10、Linux 字符讑֤驱动E序

讑֤驱动E序基础知识
Linux
pȝ的模?
字符讑֤驱动分析
fs_operation
l构
加蝲驱动E序 了解讑֤驱动E序的概?
了解Linux字符讑֤驱动E序l构
能够~写字符讑֤驱动E序 ~写Skull驱动
~写键盘驱动
~写I/O驱动
分析一个看门狗驱动E序
ҎLinux2.6内核?font face="文鼎Qͼ中楷, serif">2.4内核中字W设备驱动的不同
Linux
块设备驱动程? 块设备驱动程序工作原?
典型的块讑֤驱动E序分析
块设备的dh队列 了解Linux块设备驱动程序结?
能够~写单的块设备驱动程? 比较字符讑֤与块讑֤的异?
~写MMC卡驱动程?
分析一个文件系l?
ҎLinux2.6内核?font face="文鼎Qͼ中楷, serif">2.4内核中块讑֤驱动的不?


11、文件系l?/span>

虚拟文gpȝ
文gpȝ的徏?
ramfs
内存文gpȝ
proc
文gpȝ
devfs
文gpȝ
MTD
技术简?
MTD
块设备初始化
MTD
块设备的d操作 了解Linuxpȝ的文件系l?
了解嵌入?font face="文鼎Qͼ中楷, serif">Linux的文件系l?
了解MTD技?
能够~写单的文gpȝ ?ARM9开发板d MTD支持
ULJFFS2文gpȝ
通过proc文gpȝ修改操作pȝ参数
分析romfs 文gpȝ源代?
创徏一?font face="文鼎Qͼ中楷, serif">cramfs 文gpȝ



菌子 2007-12-05 22:03 发表评论
]]>
又见理想http://www.shnenglu.com/agaric/archive/2007/12/04/37822.html菌子菌子Tue, 04 Dec 2007 14:45:00 GMThttp://www.shnenglu.com/agaric/archive/2007/12/04/37822.htmlhttp://www.shnenglu.com/agaric/comments/37822.htmlhttp://www.shnenglu.com/agaric/archive/2007/12/04/37822.html#Feedback0http://www.shnenglu.com/agaric/comments/commentRss/37822.htmlhttp://www.shnenglu.com/agaric/services/trackbacks/37822.html 

转眼_从事E序员这一行已l两q半了?/p>

记得上中学的时候,刚接触了电脑Q在体验了Windows得神奇以后,我就开始立志,希望来能成Z个Y件工E师。那Ӟ在我的每本课本得W一,除了会写上我自己的名字以外,q会有一行用钢笔写下的黑体字 “我的未来,我的Microsoft??

大学毕业以后q入一家普通的软g公司Q浑噩噩得q着Coding & Debug 的日子。不知道工作是ؓ了谁Q也不知道工作是Z什么,只知道我只是一个程序员。h没有目标和理惻I是行尸走肉Q而我Q就是这样一个臭皮囊Q已l恍惚了q么多年?/p>

有一天,l于又重新打开求职的网,又看C那个从前在心目中无比圣的LogoQ那个永q的Microsoft?/p>

我终于明白了那时的梦惟뀂其实我真正惌的,是能够像Microsoft一P能够被更多的人需要,能够对h们的生活有积极得影响Q这才是我工作和人生的h倹{?

觉得为时已晚的时?恰恰是最早的时候?/p>

q好Q我q年轅R?

我的未来Q我的Microsoft?/p>

菌子 2007-12-04 22:45 发表评论
]]>
几张囄向你讲明白男女之间的U密http://www.shnenglu.com/agaric/archive/2007/08/18/30303.html菌子菌子Sat, 18 Aug 2007 04:51:00 GMThttp://www.shnenglu.com/agaric/archive/2007/08/18/30303.htmlhttp://www.shnenglu.com/agaric/comments/30303.htmlhttp://www.shnenglu.com/agaric/archive/2007/08/18/30303.html#Feedback5http://www.shnenglu.com/agaric/comments/commentRss/30303.htmlhttp://www.shnenglu.com/agaric/services/trackbacks/30303.htmlscreen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='点击在新H口查看全图\nCTRL+鼠标滚轮攑֤或羃?;}" border=0> 



 



 



 



 



 



 



 



 



 



 



 



 



 



 



 



 



 



 



 



 



 



 



 



 



 



 



 



 



菌子 2007-08-18 12:51 发表评论
]]>
һaɫƬþٸһHƬѷ | þþۺ㽶ۺ| һֻƴƬ99þ| þùѹۿƷ| ھƷŷþþƷ| ŷƷ99þ| 97þóƷ2021| þù| þþƷAV͵| ۺϾþۺϼþ| ޹Ƶþ| þ޹ҹƷƬ| 㽶þþþþúݺɫ| ŮдþӰԺ| vaĻþ| ޾ҹþþþþ | þþƷԭ| ޹Ʒһþ| þþƷaĻ| Ʒ18þþ⺾| ҹAVëƬþ| ɫݺȷӰþ| պ޾Ʒþ | Ů㽶þ**ëƬƷ| ɫۺϾþʮ·| ĻƷþþþþ3Dն| þ޹˾Ʒɫ| ޹ƷۺϾþһ| Ʒ˾Ʒþþ| þþƷҹҹҹҹҹþ| þþƷа| ഺþ| þˬˬˬav| ҹþӰԺ| 99þ99þþƷƬ | þۺ¶þü| þĻȫ| þŮƵ| þù޾ƷӰԺ| þ99Ʒžžžþ| ĻhdþþƷ|