• <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>
            隨筆 - 60, 文章 - 0, 評論 - 197, 引用 - 0
            數據加載中……
            re: Win32 - 如何控制你的線程 Normandy 2009-12-07 15:28
            @Nick
            見笑了,英語不咋地,多謝兄臺提醒 :)

            Keep going on with your dream
            re: Win32 - 如何控制你的線程 Normandy 2009-12-07 15:22
            @wocow3
            各線程清理資源并結束自己的時候, 用 WaitForSingleObject() 可保證線程有序的清理資源并退出。

            很多情況可引發競爭: 如線程1 欲結束自己, 但僅清理了一半資源,這時發生 context switch, CPU 切換到線程 2, 而線程2 也要清理資源并結束自己,如果清理資源的動作必須保證有序,就會引發競爭。
            re: Win32 - 如何控制你的線程 Normandy 2009-11-30 11:21
            @wocow3, 唐新發

            這里不會引發等待, 因為 WaitForSingleObject 的第二個參數是 0。 另外, 用全局變量作退出標志有一個致命缺點,當兩個已上的線程并發讀寫全局變量的時候, 就會引發競爭,而用 WaitForSingleObject 則是安全的。

            re: Win32 - 如何控制你的線程 Normandy 2009-11-30 11:14
            @陳梓瀚(vczh)

            Good catch, thanks.

            Updated the title with "Keep go on with your dream"
            re: Win32 RPC 編程(一) Normandy 2008-10-20 10:09
            @金中偉
            其實沒有這么復雜,我是通過 Makefile 編譯的, 沒有用 IDE。你打開 Visual Studio 2005 Command Prompt 或 Visual Studio 2008 Command Prompt ,然后進到源碼目錄下 敲一個 nmake 命令, 所有的都會為你自動生成。細節可查看源碼目錄下的 Makefile 文件。
            re: 淺析遠程過程調用 RPC Normandy 2008-08-18 10:13
            @achilles
            將一些過程放在遠程是分布式程序的要求,如客戶機/服務器模式。相比常規的網絡通信程序而言,在用 RPC 時我們只需要關心程序本身的邏輯,就像建本地程序一樣,因為 RPC 已經幫你做了網絡通信的工作!

            如果你還是不能理解, 請下載我上面的遠程過程調用示例,將客戶程序和服務程序放在兩個不同的機器上運行看看。

            如果你想了解更多的細節,請看一下 <<Linux 網絡編程>> 第十二章,上面的內容更精彩!
            re: 淺析遠程過程調用 RPC Normandy 2008-08-15 18:40
            @achilles
            優點是可直接訪問遠程過程,避免煩瑣的打包和解包過程,且不依賴于某種特定的協議
            @毛
            實際上板子加電啟動時,SRAM 從 0x40000000 開始的 4096 字節區域被映射成 從 0x00000000 開始的 4096 字節區域, 手冊上有說明
            re: Linux 下 socket 編程示例 Normandy 2008-08-07 12:22
            @AlexEric
            看情況吧,只恐時間精力不夠用。參與開源著重解決實際問題,分析 Kernel 源碼則強調理解底層,我更喜歡看些底層的東西。

            AlexEric 兄若有心得,一定要拿出來分享啊!
            re: Linux 下 socket 編程示例 Normandy 2008-08-07 10:46
            @AlexEric
            兄弟對 TCP/IP 也有興趣啊,我打算通讀 Linux 下的協議棧源碼,有機會多切磋啊 :-)
            @嚴植
            上面例子是基于查詢而非 DMA ,不過應該不難。我想可能是以下的問題:
            (1) 超級終端收發數據有問題(看看設置,如波特率等是否正確)
            (2) 板子串口有問題(我的經常是這樣, 多插幾次試試)
            (3) UART 設成 DMA 中斷方式有誤 (請仔細查看手冊, 確認相關的控制寄存器是否設置正確)
            re: Linux下C++ IDE的選擇。 Normandy 2008-08-04 10:41
            可用 Emacs
            re: 推薦一個文本編輯器 Normandy 2008-08-04 10:36
            NTEmacs 很好用, 你可以試試
            @xi_liang
            Nand Flash 只是存儲器,其前 4k 被映射到 SRAM (就是 NOR FLASH) 里,所以小于 4k 的程序運行是沒有問題的, 大于 4k 的程序則不行。在執行 ldr pc, =main 之前 bl copy_block_to_sdram 把 Nand Flash 里的代碼搬到 SDRAM 里從 0x30000000 處開始的區域了。而 ldr pc, =main 實際上執行的是:

            ldr pc, 0x30000000 + main_addr

            這實際上是跳到 SDRAM 里的 main 處并執行 main 調用
            @宗華
            編譯 busybox 1.9.2 需要 arm linux 3.3.2 的編譯器, 用 3.3.4 的編譯器會有問題, 你需要安裝 3.3.2 版本來制作根文件系統
            re: 用mingw 創建DLL[未登錄] Normandy 2008-06-27 10:09
            @sinper
            呵呵, 多謝指正!
            @guest
            看了, 內核配置應該沒有問題, 可能是根文件系統的問題, 你用 busybox 制作的根文件系統有多大? 你先用 skyeye testsuite 里的根文件系統試試, 看能否啟動?
            @guest
            可能是 "Initial RAM disk (initrd) support" 沒有選中,所以根文件系統沒能成功加載。檢查一下你的內核配置,看看在我這篇博客里用黃色加亮的部分是否被正確配置。或者把你的內核配置文件 .config 發我看看(jbin8164@gmail.com)。
            @guest
            從上面看不出哪出錯了,你的用 skyeye 和 linux 內核版本是多少? 內核如何配置的?
            @silence
            我的成功了。可能網卡驅動沒有加載,請用如下命令確認一下: dmesg | grep -i 'eth'
            看看有沒有 eth0 或 cs8900 之類的字消息,有的話,請重新在 skyeye 上運行 arm-linux。如果沒有,那就考慮一下如何加載 cs8900 這個網卡驅動。
            @補考少年
            模擬正是為了實踐,這樣修改了內核可以在 skyeye 上跑跑, 省得老燒板子了
            @FAN
            從錯誤信息上也看不出什么問題, 我猜測可能是如下兩個原因:
            (1) 你的 arm-linux-gcc 3.4.1 有問題
            或者
            (2) 編譯時你用的 arm-linux-gcc 是 3.3.2, 但鏈接時用的卻是 arm-linux-gcc 3.4.1 的庫(libgcc.a)
            re: Ubuntu 學習筆記 Normandy 2008-03-31 14:33
            @niube's son
            呵呵, 一定! 很高興能對大家有點幫助。大家也可把自己用 Ubuntu 時遇到的困難寫出來,一起解決嘛 :-)
            @wz
            你說的有道理,只有 subs 才能影響 CPSR 的 N 標志位, 看來確實是我大意了。謝謝指正,以后多交流啊!
            @FAN
            我沒有試過 #define TXD0_READY 0x4 查了一下手冊,上面這樣描述, 對于 UTRSTA0[2]:

            Set to 1 automatically when the transmit buffer register has
            no valid data to transmit and the transmit shift register is
            empty.
            0 = Not empty
            1 = Transmitter (transmit buffer & shifter register) empty

            我覺得可以,你可以試試,別忘了把結果告訴我啊 :-)
            @FAN
            你好,已將代碼發到你郵箱,有問題及時討論。
            @含著淚的微笑
            1. RXD0 和 TXD0 你并看不到,能連線的只有串口。
            2. 電阻上拉,我的理解是拉高電壓,使電路更穩定。
            3. 仔細閱讀板子附帶的手冊吧,把這個例子在你的板子上先跑起來
            @含著淚的微笑
            0x05 代表查詢模式,實現起來最簡單。
            @含著淚的微笑
            歸納了你的問題,做答如下:
            1. 不一定非得用超級終端, 你也可以自己寫程序。將 PC 的串口和 ARM 開發板的串口相連后,只要你的程序向 PC 串口發數據, ARM 就能通過連線獲得數據。
            2. 至于如何標識一個字串結束, 這是一個協議問題,可指定一個數,比如 0x55AA,當收到的兩個連續字符是0x55AA時,則停止接收。
            3. 可先將數據存到 SDRAM 緩沖區,再寫到 Nand Flash。至于如何寫 Nand Flash, 可參考 vivi 的源代碼,里面有一個向 Nand Flash 寫數據的方法。
            @含著淚的微笑
            這兩個函數是如下使用的:
            getc() 會從 UART0 讀取一個符, 它不管你向 UART0 輸入了什么, 只要有數據就讀取, 沒有數據就等待。

            putc() 會向 UART0 輸出一個字符, 上位機的軟件(如超級終端) 可以顯示它輸出的是什么

            我想你的問題是這樣的:
            上位機向 ARM 板子上的 UART0 發送了一個串: "hello,2008", ARM 該如何獲取到這個串, 是這樣吧?
            可以這樣解決:

            char *buf = (char *)0x30010000;
            char *p = buf;
            char c = getc();
            while (c != 0x0d) {
            *p++ = c;
            c = getc();
            }
            *p = '\0';

            0x0d 指回車, 意思是當接收到回車時,停止讀取操作。這時 "hello,2008" 已經存入緩沖區 buf 里, 你可以再對這個 buf 進行操作了。
            @FAN
            呵呵,談不上指教,只是早點入門而已, 以后有問題多切磋、交流, 這樣大家都能提高的快些!
            @wz

            呵呵,這個程序在 FS2410 能跑的。不知有何問題? 還請不吝賜教啊!
            @葫蘆瓜
            有兩種思路:
            (1) 如果你編譯后生成三個二進制程序, 可通過sjf2410 分三次將三個文件燒入 Nand Flash的不同位置, 具體請看 sjf2410.exe 的用法。
            (2) 如果你編譯后只生成一個二進制文件, 即把 boot 、main 、apply 三個目標文件連接成一個文件,可通過sjf2410 一次燒寫即可。要點是在連接時指定連接腳本。 連接腳本如下:

            SECTIONS {
            first 0x00000000 : { boot.o}
            second 0x00000000 : AT(4096) { main.o }
            third 0x00000000 : AT(8192) { apply.o }
            }

            然后在連接程序中這樣調用連接腳本:
            arm-linux-ld -Tnand.lds boot.o main.o apply.o -o prog_tmp.o
            arm-linux-objcopy -O binary -S prog_tmp.o prog


            @niube' son

            代碼在我的板子上是沒有問題的, 不知樓上的兄弟是否成功編譯代碼?
            另外有幾點說明:
            (1) 代碼是直接運行在裸板上的, 而非運行在 arm-linux 上
            (2) 我是借助 FS2410 自帶的sjf2410.exe 燒寫到 Nand Flash 的, 很可能樓上的兄弟沒有燒寫成功

            如果能提供更詳細的信息就好了, 這樣就可以看看到底是哪個環節出錯了!



            @ggyy

            呵呵,問題已經解決,一個低級的錯誤,原因如下:
            508 + 0x8 即 516, 大于 512, 前面我提到把 Nand flash 的前 512 字節復制到 0x33ff0000 處用以設置高端中斷向量表,這樣當發生 IRQ 中斷時,程序會去 0x33ff0000 + 508 + 0x8 處把 0x30004208 裝進 pc 并進行跳轉來響應中斷,但不幸的是我只復制了512字節,所以 IRQ 中斷是不能響應的。總結一下,對比上面提到的兩種設置中斷跳轉指令的方式:

            (1)
            b reset
            NOP
            NOP
            NOP
            NOP
            NOP
            ldr pc,=handle_irq
            NOP

            (2)
            b reset
            NOP
            NOP
            NOP
            NOP
            NOP
            ldr pc, handle_irq_addr
            NOP
            handle_irq_addr:
            .long handle_irq

            第二種方式的好處是顯而易見的,只需要偏移 0x8 就能取到目的地址了;對第一種方式,ARM 要去通過一個偏移來取到目的地址,具體數值要看編譯如何設置了。
            @qqwe
            可以這樣精簡一下:

            putc(ch);
            if (ch == 0x0d) putc(0x0a);

            0x0d 代表回車
            0x0a 代表換行
            它們的順序應該是先回車再換行
            re: Quick Emacs Normandy 2008-01-02 13:30
            @ngn999
            呵呵, 在 Windows 用Emacs也不錯, 有個 NtEmacs 就是跑在 windows下的, 在這里可下載到最新的: http://ntemacs.sourceforge.net/
            99久久精品日本一区二区免费 | 国产激情久久久久影院老熟女| 国产V综合V亚洲欧美久久| 色综合久久天天综合| 污污内射久久一区二区欧美日韩| 久久人人爽人人人人片av| 久久精品国产69国产精品亚洲| 无码乱码观看精品久久| 国产精品禁18久久久夂久 | 久久国产精品国产自线拍免费| 国产精品久久久久久久久鸭| 一级A毛片免费观看久久精品| 99久久无色码中文字幕| 伊色综合久久之综合久久| 93精91精品国产综合久久香蕉 | 亚洲精品无码久久久久去q| 97超级碰碰碰碰久久久久| 99久久精品国产一区二区| 开心久久婷婷综合中文字幕| 久久免费小视频| 99久久精品午夜一区二区| 国产成人精品三上悠亚久久| 久久久久久国产精品免费免费| 精品乱码久久久久久久| 无码久久精品国产亚洲Av影片| 亚洲?V乱码久久精品蜜桃 | 日本人妻丰满熟妇久久久久久| 久久亚洲欧洲国产综合| 久久久久无码专区亚洲av| 7国产欧美日韩综合天堂中文久久久久| 一本色道久久88精品综合 | 久久亚洲国产精品一区二区| 麻豆亚洲AV永久无码精品久久| 国产精品99久久久精品无码| 亚洲一区精品伊人久久伊人| 亚洲伊人久久成综合人影院 | 日韩va亚洲va欧美va久久| 久久综合伊人77777| 久久精品国产亚洲AV香蕉| 一本一道久久综合狠狠老| 久久精品国产亚洲AV嫖农村妇女|