• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            星光燦爛

            C元素

            2008年4月17日

              1 int __init s3c_fb_probe(struct platform_device *pdev)
              2 {
              3     char driver_name[]="s3c_fb";
              4     int ret;
              5     int index=0;
              6 
              7     for(index=0; index<S3C_FB_NUM; index++){                   //遍歷每一個fb,我們里只有一個lcd.
              8         s3c_fb_init_fbinfo(&info[index], driver_name, index);
              9 
             10         if(index==0){                                          //操作主lcd
             11             s3c_fb_backlight_power(1);                         //開啟背光,lcd電源源,開啟背光等。           
             12             s3c_fb_lcd_power(1);
             13             s3c_fb_backlight_level(DEFAULT_BACKLIGHT_LEVEL);
             14 
             15             dprintk("dev FB init\n");
             16 
             17             //映射內存區域
             18             if (!request_mem_region((unsigned long)S3C_VA_LCD, SZ_1M, "s3c-lcd")) {
             19                 ret = -EBUSY;
             20                 goto dealloc_fb;
             21             }
             22 
             23             dprintk("got LCD region\n");
             24 
             25             //打開lcd_clock
             26             lcd_clock = clk_get(NULL, "lcd");
             27             if (!lcd_clock) {
             28                 printk(KERN_INFO "failed to get lcd clock source\n");
             29                 ret =  -ENOENT;
             30                 goto release_irq;
             31             }
             32 
             33             clk_enable(lcd_clock);
             34             printk("S3C_LCD clock got enabled :: %ld.%03ld Mhz\n", print_mhz(clk_get_rate(lcd_clock)));
             35 
             36             msleep(5);
             37         }
             38 
             39         //申請顯存
             40         /* Initialize video memory */
             41         ret = s3c_fb_map_video_memory(&info[index]);
             42         if (ret) {
             43             printk("Failed to allocate video RAM: %d\n", ret);
             44             ret = -ENOMEM;
             45             goto release_clock;
             46         }
             47         dprintk("got video memory\n");
             48 
             49         //初始化寄存器,這里與具體的設備有關。
             50         ret = s3c_fb_init_registers(&info[index]);
             51         ret = s3c_fb_check_var(&info[index].fb.var, &info[index].fb);
             52 
             53         //所謂的色表(調色盤?),不清除是干啥的。
             54         if(index<2){
             55             /* 2007-01-09-Tue. for RGB 8-8-8 palette*/
             56             if(fb_alloc_cmap(&info[index].fb.cmap, 2560)<0){
             57                 goto dealloc_fb;
             58             }
             59         }
             60         else{
             61             /* 2007-01-09-Tue. for RGB 8-8-8 palette*/
             62             if(fb_alloc_cmap(&info[index].fb.cmap, 160)<0){
             63                 goto dealloc_fb;
             64             }
             65         }
             66         //注冊framebuffer??
             67         ret = register_framebuffer(&info[index].fb);
             68         if (ret < 0) {
             69             printk(KERN_ERR "Failed to register framebuffer device: %d\n", ret);
             70             goto free_video_memory;
             71         }
             72     }//     for(index=0; index<CONFIG_FB_NUM; index++)
             73 
             74     //    initialize the struct for Waitforvsync
             75     // 關于中斷的初始化工作,貌似2412是注冊以后又取消了
             76     s3cfb_vSyncInfo.count = 0;
             77     init_waitqueue_head(&s3cfb_vSyncInfo.waitQueue);
             78 
             79 #if defined(CONFIG_ARCH_S3C2443)
             80     ret = request_irq(IRQ_LCD3, s3c_fb_irq, 0"s3c-lcd", pdev);
             81 #elif defined(CONFIG_ARCH_S3C6400)
             82     ret = request_irq(IRQ_LCD_VSYNC, s3c_fb_irq, 0"s3c-lcd", pdev);
             83 #elif defined (CONFIG_S3C_DVS) && defined (CONFIG_ARCH_S3C2412)
             84     ret = request_irq(IRQ_LCD, s3c_dvs_irq, 0"s3c-lcd", pdev);
             85 #endif
             86     if (ret != 0) {
             87         printk("Failed to install irq (%d)\n", ret);
             88         goto release_irq;
             89     }
             90 
             91 #if defined (CONFIG_S3C_DVS) & defined (CONFIG_ARCH_S3C2412)
             92     disable_irq(IRQ_LCD);
             93 #endif
             94 
             95     //在sys底下建立節點,用于和用戶空間交互
             96     /* create device files */
             97     device_create_file(&(pdev->dev), &dev_attr_backlight_power);
             98     device_create_file(&(pdev->dev), &dev_attr_backlight_level);
             99     device_create_file(&(pdev->dev), &dev_attr_lcd_power);
            100 
            101     //勝利退出
            102     printk(KERN_INFO "fb%d: %s frame buffer device\n",
            103         info[index].fb.node, info[index].fb.fix.id);
            104     return 0;
            105 
            106 free_video_memory:
            107     s3c_fb_unmap_video_memory(&info[index]);
            108 
            109 release_clock:
            110     clk_disable(lcd_clock);
            111     clk_put(lcd_clock);
            112 
            113 release_irq:
            114 #if defined(CONFIG_ARCH_S3C2443)
            115     free_irq(IRQ_LCD3, &info);
            116 #elif defined(CONFIG_ARCH_S3C6400)
            117     free_irq(IRQ_LCD_VSYNC, &info);
            118 #endif
            119     //release_mem:
            120     release_mem_region((unsigned long)S3C_VA_LCD, S3C_SZ_LCD);
            121 
            122 dealloc_fb:
            123     framebuffer_release(&info[index].fb);
            124     return ret;
            125 }
            126 
            127 
            128 

            posted @ 2008-04-17 12:52 菌子 閱讀(906) | 評論 (0)編輯 收藏

            2008年3月6日

             

            第二章 從內核出發

             

            內核開發特點:

            1. 沒有libc庫。 kernel是一個不依賴任何庫的,包括標準C函數庫。kernel中使用的一些常見函數,比如memset, strcpy都是在kernel代碼中自己實現的。
            2. 請使用gcc來編譯內核,因為內核中的代碼并不完全符合ANSI C的標準。
            3. 沒有內存保護,非法的內存操作可能會使系統掛起。
            4. 不要使用浮點數
            5. 內核棧容量很小( 2 * 頁面大小 )
            6. linux是搶占多任務操作系統,進程,內核都可以搶占,而且支持多處理器,所以內核代碼需要考慮并發和同步的問題。
            7. 盡量要兼容所有架構(arch),良好的移植性

             

             

             

            第三章 進程管理

             

            內存描述符及任務結構

            1. 每個進程都對應有一個進程描述符,即task_struct結構,用來記錄這個進程的所有信息:打開的文件,地址空間,進程狀態……
            2. linux通過slab(個人感覺類似于pool)分配task_struct。 進程的task_struct指針存放在位于內核棧底的一個叫做thread_info的結構里面。
            3. 內核通過PID來標識進程,默認設置最大值,即默認系統最大進程數為32768。內核中一般通過current宏來獲的當前進程的task_struct,不同的體系架構下,實現方法可能會不同。
            4. 進程狀態,可以通過set_task_state來設置
              1. TASK_RUNNING 進程可執行;它正在運行,或者是在任務隊列中等待被運行。
              2. TASK_INTERRUPTIBLE 進程可中斷;進程被阻塞,但是可以通過信號,或者其他方法喚醒。
              3. TASK_UNINTERRUPTIBLE 進程不可中斷;進程被阻塞,而且不受任何干擾,不會響應信號而被喚醒。
              4. TASK_ZOMBIE 進程僵死;進程已經運行完畢,但是父進程沒有調用wait4系統調用,此時子進程的task_struct保留,等待父進程查詢相關信息?!続garic:相似的,在windows上,進程的HANDLE通過(CreateProcess或者OpenProcess得到) 在程序運行完畢后,在CloseHandle 前,也是仍然有效,用于查詢進程相關信息,比如Exit code 等等】
              5. TASK_STOPPED 進程停止;
            5. 進程上下文: 進程通過系統調用或者異常陷入內核,此時內核是"代表進程"在工作,這個工作環境,叫做進程上下文,內核程序可以通過宏來獲的當前進程的task_struct
            6. 進程家族樹: 除了init,每個進程都有父進程, 每個進程都可能有子進程及兄弟進程。

            (待續)

            posted @ 2008-03-06 00:00 菌子 閱讀(1767) | 評論 (7)編輯 收藏

            2008年3月1日


            配置svnserver

            可以直接在YaST2里面,在xinetd設置里面,添加svnserve的選項。
            但是要注意運行使用的用戶,默認的svn:svn是沒有被建立的, 我改成nobody以后就ok了,但不知道有什么什么問題。


            配置APACHE

            采用svnserver的方法有許多不便,所以我還是決定最終采用http的方法。
            OpenSuse的apache2的配置文件布局似乎和其他系統有點不一樣。 它在httpd.conf里面并沒有直接進行的配置,而是包含了其他很多的conf文件,其中的每一個conf,包含了某一個具體部分的配置。

            ls /etc/apache2/

            charset.conv         httpd.conf   mod_autoindex-defaults.conf  mod_status.conf     ssl.crl          ssl.key      vhosts.d
            conf.d               listen.conf  mod_info.conf                mod_userdir.conf    ssl.crt          ssl.prm
            default-server.conf  magic        mod_log_config.conf          mod_usertrack.conf  ssl.csr          sysconfig.d
            errors.conf          mime.types   mod_mime-defaults.conf       server-tuning.conf  ssl-global.conf  uid.conf

            配置svn 使用 apache 的文章很多,我就不重復具體的配置方法了,只是說明一下在suse10.3上具體需要修改的文件。
            /etc/apache2/conf.d/subversion.conf    這個文件被httpd.conf所包含,用來修改svn目錄及一些設置,一般教程里面都是修改httpd.conf.
            /etc/apache2/sysconfig.d/loadmodule.conf 用來在apache啟動時加載模塊用。

            我最終解決mod_dav_svn加載的方法是,在/usr/lib/apache2-prefork/ 下建立一個 mod_dav_svn.so的鏈接(位于 /usr/lib/apache2)這樣在YaST的httpserver設定里面就可以選擇和加載這個模塊了。 就是這個問題,花了我好幾個消失來解決。

            其他的配置方法,可以參考svn中文手冊,和網上其他的配置教程。
             







                


            posted @ 2008-03-01 17:08 菌子 閱讀(685) | 評論 (0)編輯 收藏

            2008年2月2日

            http://blog.chinaunix.net/u1/34474/showart_404278.html

            http://blog.chinaunix.net/u1/41638/showart_438078.html

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

            posted @ 2008-02-02 23:41 菌子 閱讀(222) | 評論 (0)編輯 收藏

            2008年1月28日

             

            我使用的不是SMDK2412的開發板,而是公司已經出貨的2412的機器,原來用的是自己的一個OS,現在打算在他上面運行linux.

            編譯2.6的內核,需要比較新的gcc, 我暫時能找到的新版arm-linux-gcc也就是3.4.1。,之前用arm-none-linux-eabi-gcc 4.1編出來的zImage好大,基本不能用。對于開發工具和內核版本,我覺得還是越新越好(穩定版),否則可能會遇到一些稀奇古怪的問題。

            1.修改Boot

            使用公司原有的Boot, 在Boot啟動Kernel的時候,加入的參數設定,然后用公司專用的usb更新工具燒錄kernel到flash中,啟動機器以后顯示了一堆亂碼,在啟動參數 console=ttySAC0后面加上了,115200,設定波特率以后一切OK.

            2.MTD分區:修改文件common-smdk.c , 修改其中的MTD設備的分區。

            新的kernel里面已經有了默認分區表,我們只要根據我們需要來做部分修改就可以,我的nand有512MB, 我目前只是將前面的2M分給boot,kernel, 緊接下來的4M分給rootfs,打算暫時加載一個 簡單的cramfs。其他的nand都還沒有用。

            3.取消NAND驅動中的ECC讀校驗,以及壞塊監測部分, 因為NAND操作部分,boot和kernel有一些不同。

            重啟以后,mount root分區失敗,還打出了I/O 錯誤。 關閉了ECC校驗,修改了pc工具的燒錄地址以后,ok. 這都是因為我們的燒錄工具使用的地址表示方法和ecc的方式有一些不同。

            4.燒錄 root 文件系統。

            拿了一個在kernel2.4 2440 上用過得cramfs直接來用,提示找不到dev/console, 上網查了一遍,應該是因為現在新版的kernel去掉了devfs的緣故,為了先快速的有一個可執行環境,所以在網上找了一個現成的,已經自己建立好節點的cramfs,里面的busybox版本也比較新。

             

            開機運行,總算見到了親愛的shell.

            posted @ 2008-01-28 23:30 菌子 閱讀(1135) | 評論 (2)編輯 收藏

            2008年1月14日

            工作需要,加之好奇心,終于給自己家的PC里面也安裝上了Linux。 為了和公司的OpenSuse有所不同于是就選擇另一款大名頂頂的發行版Fedora.

            我一直認為,人生總是要遇到一些挫折的。 可不就是裝個系統嘛,為啥就要這樣難為我捏?

            懶得插上光驅,于是就用硬盤安裝的辦法。 可grub for dos 就是不認我從ISO里解出來的vmlinuz, 汗,放狗去搜,貌似沒有人遇到過這個情況。不能就這樣放棄吧?再看看解壓出來的一個jpg,居然也打不開,nnd是不是文件解錯了。 之前我解文件用的是winrar, 換成 Deamon Tools 試試, NND 這次那附圖OK了。 再用grub來load , OK! 額。。 原來winrar在解iso的時候會掉鏈子, 伙計們以后要千萬小心。

            以后的事就順利多了。  裝顯卡驅動,直接用yum的包就可以啦,不過裝完以后需要修改grub的list,因為內核也更新了,需要從新的內核啟動,顯卡驅動才可以奏效。Fedora默認已經安裝了桌面特效,顯卡驅動安裝完以后,直接在菜單里面選擇打開特效就OK. 嘿嘿,效果還可以吧。

             


            接下來就是解決QQ滴問題了。 開始用Pigin,只能聊天,而且只能看見在線的好友,勉強能用,后來又裝了wine上面的qq2007,應該是配置的問題,總是crash。 不過最后發現了lumaQQ和eva這兩個好東東。 我本人還是比較喜歡eva的,功能很全了,界面也很友好,只可惜這個家伙不能像其他的一些KDE程序在gnome下也能正常運行,只能在KDE下玩兒。LumaQQ作者現在主要在維護iphone版本的, 普通的java版有一段時間沒更新了, 現在還能常用, 界面也還好。

            這幾天綜合下來,感覺Fedora還算不錯,但是易用性上面,不如Opensuse。 至于 ubuntu , 我用的不多, 感覺優點是國內源多,所以更新和下載程序速度比較快。

            工作的任務是一直Linux內核,現在看來,還有很多東西要學,很多路要走。

            我覺得對于這樣比較長期/艱巨的任務,相我這樣工作經驗不豐富的人,很難針對它來指定一個計劃, 其實就是很難將其分割成一步步來完成的小計劃。導致每天都暈暈呼呼的不知道干什么好。 希望有經驗的朋友能給點建議。


            Winrar解ISO可能會掉鏈子

            對Linux有興趣的初學者,不妨親身在機器上安裝一個易用的發行版(非虛擬機, 推薦Ubuntu, Opensuse10.3(KDE))
            posted @ 2008-01-14 23:50 菌子 閱讀(976) | 評論 (2)編輯 收藏

            2007年12月23日

            MIT   BBS上說微軟電話面試的一道題就是“Who   do   you   think   is   the   best   coder,   and   why?”。我覺得挺有意思的,也來湊個熱鬧。排名不分先后。

            Bill   Joy,   前任Sun的首席科學家,當年在Berkeley時主持開發了最早版本的BSD。他還是vi和csh的作者。當然,Csh   Programming   Considered   Harmful   是另一個話題樂。據說他想看看自己能不能寫個操作系統,就在三天里寫了個自己的Unix,     也就是BSD的前身。當然是傳說了,但足見他的功力。另一個傳說是,1980年初的時候,DARPA讓BBN在Berkley   Unix里加上BBN開發的TCP/IP代碼。但當時還是研究生的B伯伯怒了,拒絕把BBN   TCP/IP加入BSD,因為他覺得BBN的TCP/IP寫得不好。于是B伯伯出手了,端的是一箭封喉,很快就寫出了高性能的伯克利版TCP/IP。當時   BBN和DARPA簽了巨額合同開發TCP/IP   Stack,誰知他們的代碼還不如一個研究生的好。于是他們開會。只見當時B伯伯穿個T-shirt出現在會議室(當時穿T-shirt不象現在,還是相 當散漫的哈)。只見BBN問:你怎么寫出來的?而B伯伯答:簡單,你讀協議,然后編程就行了。最令偶暈倒的是,B伯伯碩士畢業后決定到工業界發展,于是就 到了當時只有一間辦公室的Sun,   然后他就把Sparc設計出來樂。。。象這種軟硬通吃的牛人,想不佩服都不行的說。據Bill   Joy的同事說,一般開會的時候B伯伯總是拿一堆雜志漫不經心地讀。但往往在關鍵之處,B伯伯發言,直切要害,提出漂亮的構想,讓同事們徹底崩潰。對了, 他還是Java   Spec和JINI的主要作者之一。


            John   Carmack,ID   Software的founder和Lead   Programmer。上個月和一個搞圖形的師兄聊天,他竟然不知道John   Carmack,   也讓偶大大地暈了一把。不過也許搞研究的和搞實戰的多少有些隔吧。想必喜歡第一人稱射擊游戲的都知道J哥哥。90年代初只要能在PC上搞個小動畫都能讓人 驚嘆一番的時候,J哥哥就推出了石破天驚的Castle   Wolfstein,   然后再接再勵,doom,   doomII,   Quake...每次都把3-D技術推到極
            限。J哥哥的簡歷上說自己的專長是"Exhaust   3-D   technology",真是牛人之言不我欺的說。做J哥哥這樣的人是很幸福的,因為各大圖形卡廠家一有了新產品就要向他“進貢”   ,不然如果他的游戲不支持哪種卡,哪種卡基本就會夭折樂。當初MS的Direct3D也得聽取他的意見,修改了不少API。當然,J哥哥在結婚前十數年如 一日地每天編程14小時以上,也是偶們凡人望塵莫及的。對了,J哥哥高中肆業(?),可以說是自學成才。不過呢,誰要用這個例子來為自己學習不好辯護,就 大錯特錯了。那   Leonardo   Da   Vinci還是自學成才呢(人是私生子,不能上學)。普通人和天才還是有區別的。對了,其實偶們叫“達分奇”是相當不對的,因為Vinci是地名,而Da   Vinci就是從Vinci來的人的意思。換句話說,Leonardo   Da   Vinci就是“從Vinci來的Leonardo”的意思。叫別人“Da   Vinci”就不知所謂樂。嗯,扯遠了,打住。

            David   Cutler,VMS和Windows   NT的首席設計師,去微軟前號稱硅谷最牛的kernel開發員。當初他和他的手下在微軟一周內把一個具備基本功能的bootable   kernel寫出來,然后說:“who   can't   write   an   OS   in   a   week?",也是牛氣沖天的說。順便說一句,D爺爺到NT3.5時,管理1500名開發員,自己還兼做設計和編程,不改coder本色啊。

            D爺爺天生脾氣火爆,和人爭論時喜歡雙手猛擊桌子以壯聲勢。:-)   日常交談F-word不離口。他面試秘書時必問:"what   do   you   think   of   the   word   'fuk'?"   ,讓無數美女剎羽而歸。終于有一天,一個同樣火爆的女面對這個問題脫口而出:"That's   my   favorite   word"。于是她被錄取樂,為D爺爺工作到NT3.5發布。

            Don   Knuth。高爺爺其實用不著偶多說。學編程的不知道他就好像學物理的不知道牛頓,學數學的不知道歐拉,學音樂的不知道莫扎特,學Delphi的不知到   Anders   Hejlsberg,或者學Linux不知道Linus   Torvalds一樣,不可原諒啊。:-)為了讓文章完整,就再羅唆幾句吧。高爺爺本科時就開始給行行色色的公司寫各種稀奇古怪的編譯器掙外快了。他賣給 別人時收一兩千美元,那些公司拿了code,加工一下賣出去就是上萬上十萬。不過也沒見高爺爺不爽過,學者本色的說。想想那可是60年代初啊,高爺爺寫編 譯器寫多了,順帶就搞出了個Attribute   Grammar和LR(k),大大地造福后人啊。至于高爺爺在CalTech的編程比賽(有Alan   Kay得眾多高高手參加)總是第一,寫的Tex到86年就code   freeze,還附帶2^n美分獎勵等等都是耳熟能詳的,偶就不饒舌樂。

            順便說一下,高老大爺是無可爭議的寫作高手。他給Concrete   Mathematics   寫的前言可謂字字鏗鏘,堪為前言的典范。他的技術文章也是一絕,文風細致,解釋精當,而且沒有學究氣,不失輕快跳脫。記得幾年前讀Concrete   Mathemathics,時不時開懷大笑,讓老媽極其郁悶,覺得我nerdy到家,不可救藥。其實呢,子非魚,安知魚之樂,更不知那完全是高爺爺的功 勞。說到寫作高手,不能不提Stephen   A.   Cook。他的文章當年就被我們的寫作老師極力推薦,號稱典雅文風的樣本。庫爺爺一頭銀發,身材頎長,總是面帶謙和的微笑,頗有仙風道骨,正好和他的仙文 相配的說。

            高爺爺其實還是開源運動的先驅。雖然他沒有象Richard   Stallman那樣八方奔走,但他捐獻了好多作品,都可以在網上看到,比如著名的Mathematical   Writing,MMIXWare,The   Tex   Book等,更不用說足以讓他流芳百世的Tex樂。

            Ken   Thompson,C語言前身B語言的作者,Unix的發明人之一(另一個是Dennis   M.   Riche老大,被尊為DMR),Belle(一個厲害的國際象棋程序)的作者之一,   操作系統Plan   9的主要作者(另一個是大牛人Rob   Pike,   前不久被google挖走了)。Ken爺爺也算是計算機歷史上開天辟地的人物了。1969年還是計算機史前時代,普通人都認為只有大型機才能運行通用的操 作系統,小型機只有高山仰止的份兒。至于用高級語言來寫操作系統,更是笑談。Ken爺爺自然不是池中物,于是他和DMR怒了,在1969年到1970間用 匯編在PDP-7上寫出了UNIX的第一個版本。他們并不知道,一場轟轟烈烈的UNIX傳奇由此拉開了序幕。Ken爺爺在1971年又把Unix用C重 寫,于是C在隨后20年成就了不知多少豪杰的夢想和光榮。

            Ken爺爺還有段佳話:   裝了UNIX的PDP-11最早被安裝在Bell   Lab里供大家日常使用。很快大家就發現Ken爺爺總能進入他們的帳戶,獲得最高權限。Bell   Lab里的科學家都心比天高,當然被搞得郁悶無比。于是有高手怒了,跳出來分析了UNIX代碼,找到后門,修改代碼,然后重新編譯了整個UNIX。就在大 家都以為“這個世界清凈了”的時候,他們發現Ken爺爺還是輕而易舉地拿到他們的帳戶權限,百思不解后,只好繼續郁悶。誰知道這一郁悶,就郁悶了14年, 直到Ken爺爺道出個中緣由。原來,代碼里的確有后門,但后門不在Unix代碼里,而在編譯Unix代碼的C編譯器里。每次C編譯器編譯UNIX的代碼, 就自動生成后門代碼。而整個Bell   Lab的人,都是用Ken爺爺的C編譯器。:D
            posted @ 2007-12-23 00:39 菌子 閱讀(410) | 評論 (0)編輯 收藏

            2007年12月5日

            多新手學習嵌入式系統,不清楚那么多方向舵知識和參考書,該從哪里開始學習。入手了,卻又在該先學習什么后學習什么上失去方向。這里有你想要的答案,幫你指點迷經。

            這是我在ITjob培訓網上找到的課程大綱,覺得作為嵌入式系統開發的學習步驟,按部就班地去施行和學習,到不失為一種好的學習方法:)

            就算是作為參考也是有很好的價值的!

            隨著現代社會信息化進程的加快,嵌入式系統被廣泛的地應用于軍事、家用、工業、商業、辦公、醫療等社會各個方 面,表現出很強的投資價值。從國際范圍來看,作為數字化電子信息產品核心的嵌入式系統目前其硬件和軟件開發工具市場已經突破2000億美元,嵌入式系統帶 來的全球工業年產值更是達到了一萬億美元,隨著全球經濟的持續增長以及信息化的加速發展,嵌入式系統市場必將進一步增長。
            本課程是為了適應目前發展迅速的嵌入式Linux需求而設計,課程目標是讓學員達到適應嵌入式應用軟件開發、嵌入式系統開發或嵌入式驅動開發的基本素質。 課程循序漸進的帶領您嵌入式開發的世界,采用了目前應用最廣泛的軟硬件開發平臺(LinuxArm),可以保證您盡量貼近目前企業需求。

            學習步驟如下:(一步步來哦:)


            1、Linux
            基礎

            安裝Linux操作系統
            Linux
            文件系統
            Linux
            常用命令
            Linux
            啟動過程詳解
            熟悉Linux服務 能夠獨立安裝Linux操作系統
            能夠熟練使用Linux系統的基本命令
            認識Linux系統的常用服務 安裝Linux操作系統
            Linux
            基本命令實踐
            設置Linux環境變量
            定制Linux的服務 Shell 編程基礎 使用vi編輯文件
            使用Emacs編輯文件
            使用其他編輯器


            2、Shell 編程基礎

            Shell簡介
            認識后臺程序
            Bash
            編程 熟悉Linux系統下的編輯環境
            熟悉Linux下的各種Shell
            熟練進行shell編程 熟悉vi基本操作
            熟悉Emacs的基本操作
            比較不同shell的區別
            編寫一個測試服務器是否連通的shell腳本程序
            編寫一個查看進程是否存在的shell腳本程序
            編寫一個帶有循環語句的shell腳本程序


            3、Linux 下的 C 編程基礎

            linux C語言環境概述
            Gcc
            使用方法
            Gdb
            調試技術
            Autoconf
            Automake
            Makefile
            代碼優化 熟悉Linux系統下的開發環境
            熟悉Gcc編譯器
            熟悉Makefile規則 編寫Hello,World程序
            使用 make命令編譯程序
            編寫帶有一個循環的程序
            調試一個有問題的程序


            4、嵌入式系統開發基礎

            嵌入式系統概述
            交叉編譯
            配置TFTP服務
            配置NFS服務
            下載Bootloader和內核
            嵌入式Linux應用軟件開發流程
            熟悉嵌入式系統概念以及開發流程
            建立嵌入式系統開發環境 制作cross_gcc工具鏈
            編譯并下載U-boot
            編譯并下載Linux內核
            編譯并下載Linux應用程序


            4、嵌入式系統移植

            Linux內核代碼
            平臺相關代碼分析
            ARM
            平臺介紹
            平臺移植的關鍵技術
            移植Linux內核到 ARM平臺 了解移植的概念
            能夠移植Linux內核 移植Linux2.6內核到 ARM9開發板


            5、嵌入式 Linux 下串口通信

            串行I/O的基本概念
            嵌入式Linux應用軟件開發流程
            Linux
            系統的文件和設備
            與文件相關的系統調用
            配置超級終端和MiniCOM 能夠熟悉進行串口通信
            熟悉文件I/O 編寫串口通信程序
            編寫多串口通信程序


            6、嵌入式系統中多進程程序設計

            Linux系統進程概述
            嵌入式系統的進程特點
            進程操作
            守護進程
            相關的系統調用 了解Linux系統中進程的概念
            能夠編寫多進程程序 編寫多進程程序
            編寫一個守護進程程序
            sleep
            系統調用 任務管理、同步與通信 Linux任務概述
            任務調度
            管道
            信號
            共享內存
            任務管理 API 了解Linux系統任務管理機制
            熟悉進程間通信的幾種方式
            熟悉嵌入式Linux中的任務間同步與通信
            編寫一個簡單的管道程序實現文件傳輸
            編寫一個使用共享內存的程序


            7、嵌入式系統中多線程程序設計

            線程的基礎知識
            多線程編程方法
            線程應用中的同步問題 了解線程的概念
            能夠編寫簡單的多線程程序 編寫一個多線程程序


            8、嵌入式 Linux 網絡編程

            網絡基礎知識
            嵌入式LinuxTCP/IP網絡結構
            socket
            編程
            常用 API函數
            分析Ping命令的實現
            基本UDP套接口編程
            許可證管理
            PPP
            協議
            GPRS
            了解嵌入式Linux網絡體系結構
            能夠進行嵌入式Linux環境下的socket 編程
            熟悉UDP協議、PPP協議
            熟悉GPRS 使用socket 編寫代理服務器
            使用socket 編寫路由器
            編寫許可證服務器
            指出TCPUDP的優缺點
            編寫一個web服務器
            編寫一個運行在 ARM平臺的網絡播放器


            9、GUI 程序開發

            GUI基礎
            嵌入式系統GUI類型
            編譯QT
            進行QT開發 熟悉嵌入式系統常用的GUI
            能夠進行QT編程 使用QT編寫“HelloWorld”程序
            調試一個加入信號/槽的實例
            通過重載QWidget 類方法處理事件


            10、Linux 字符設備驅動程序

            設備驅動程序基礎知識
            Linux
            系統的模塊
            字符設備驅動分析
            fs_operation
            結構
            加載驅動程序 了解設備驅動程序的概念
            了解Linux字符設備驅動程序結構
            能夠編寫字符設備驅動程序 編寫Skull驅動
            編寫鍵盤驅動
            編寫I/O驅動
            分析一個看門狗驅動程序
            對比Linux2.6內核與2.4內核中字符設備驅動的不同
            Linux
            塊設備驅動程序 塊設備驅動程序工作原理
            典型的塊設備驅動程序分析
            塊設備的讀寫請求隊列 了解Linux塊設備驅動程序結構
            能夠編寫簡單的塊設備驅動程序 比較字符設備與塊設備的異同
            編寫MMC卡驅動程序
            分析一個文件系統
            對比Linux2.6內核與2.4內核中塊設備驅動的不同


            11、文件系統

            虛擬文件系統
            文件系統的建立
            ramfs
            內存文件系統
            proc
            文件系統
            devfs
            文件系統
            MTD
            技術簡介
            MTD
            塊設備初始化
            MTD
            塊設備的讀寫操作 了解Linux系統的文件系統
            了解嵌入式Linux的文件系統
            了解MTD技術
            能夠編寫簡單的文件系統 為 ARM9開發板添加 MTD支持
            移植JFFS2文件系統
            通過proc文件系統修改操作系統參數
            分析romfs 文件系統源代碼
            創建一個cramfs 文件系統

            posted @ 2007-12-05 22:03 菌子 閱讀(469) | 評論 (0)編輯 收藏

            2007年12月4日

             

            轉眼間,從事程序員這一行已經兩年半了。

            記得上中學的時候,剛接觸了電腦,在體驗了Windows得神奇以后,我就開始立志,希望將來能成為一個軟件工程師。那時,在我的每本課本得第一頁,除了會寫上我自己的名字以外,還會有一行用鋼筆寫下的黑體字 “我的未來,我的Microsoft” 。

            大學畢業以后進入一家普通的軟件公司,渾渾噩噩得過著Coding & Debug 的日子。不知道工作是為了誰,也不知道工作是為了什么,只知道我只是一個程序員。人沒有目標和理想,就是行尸走肉,而我,就是這樣一個臭皮囊,已經恍惚了這么多年。

            有一天,終于又重新打開求職的網頁,又看到了那個從前在心目中無比神圣的Logo,那個永遠的Microsoft。

            我終于明白了那時的夢想。其實我真正想要的,就是能夠像Microsoft一樣,能夠被更多的人需要,能夠對人們的生活有積極得影響,這才是我工作和人生的價值。

            覺得為時已晚的時候,恰恰是最早的時候。

            還好,我還年輕。

            我的未來,我的Microsoft。

            posted @ 2007-12-04 22:45 菌子 閱讀(287) | 評論 (0)編輯 收藏

            2007年8月18日

             



             



             



             



             



             



             



             



             



             



             



             



             



             



             



             



             



             



             



             



             



             



             



             



             



             



             



             



             

            posted @ 2007-08-18 12:51 菌子 閱讀(638) | 評論 (5)編輯 收藏
            僅列出標題  下一頁

            導航

            <2025年5月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            統計

            常用鏈接

            留言簿(8)

            隨筆分類

            隨筆檔案

            令一片星空

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            亚洲精品美女久久777777| 久久久久久精品成人免费图片| 亚洲欧美日韩精品久久亚洲区 | 国内精品久久久久久久久电影网| 99久久伊人精品综合观看| AV无码久久久久不卡蜜桃| 久久九九精品99国产精品| 亚洲狠狠婷婷综合久久久久| 亚洲国产美女精品久久久久∴| 亚洲AV无码久久精品成人| 久久亚洲AV成人出白浆无码国产| 日韩AV无码久久一区二区| 精品久久久久中文字幕日本| 国产亚洲精久久久久久无码| 久久精品国产99国产电影网 | 丰满少妇人妻久久久久久4| 久久精品国产91久久麻豆自制 | 一本一本久久a久久综合精品蜜桃| 亚洲综合熟女久久久30p| 99蜜桃臀久久久欧美精品网站| 久久棈精品久久久久久噜噜| 精品综合久久久久久97超人 | 亚洲熟妇无码另类久久久| 久久香蕉超碰97国产精品| 久久99国产精品久久| 久久久久亚洲AV无码专区网站| 亚洲国产精品无码久久九九| 日韩久久久久久中文人妻| 久久久久一区二区三区| 狠狠色丁香婷婷久久综合五月 | 精品久久人人妻人人做精品| 亚洲国产精品综合久久一线| 丰满少妇人妻久久久久久| 欧美日韩中文字幕久久久不卡| 亚洲国产另类久久久精品小说| 99久久国产综合精品成人影院| 久久久久亚洲AV成人网人人网站| 香港aa三级久久三级| 国产A三级久久精品| 99久久国产综合精品网成人影院 | 久久综合综合久久97色|