亚洲欧美日韩中文无线码,亚洲a无码综合a国产av中文,亚洲一区二区三区无码中文字幕http://www.bjzhda.cnzh-cn曙海教育集團論壇http://www.bjzhda.cnRss Generator By Dvbbs.Netofficeoffice@126.comimages/logo.gif曙海教育集團論壇愛特梅爾推出SAM9G45-EK評測工具包加速基于400MHz ARM9之嵌入式微處理器的應用開發http://www.hufushizhe.com/bbs/dispbbs.asp?BoardID=35&ID=2796&Page=1wangxinxin2010-12-22 14:00:14Atmel? Corporation)宣布推出SAM9G45-EK評測工具包,支持基于愛特梅爾400 MHz ARM926? 之嵌入式微處理器(MPU)并帶有DDR2存儲器的應用開發。SAM9G45提供帶有片上物理層、兼容 EHCI的 480 Mbps HS USB,以太網和用于高速連接的SDIO,加上實現智能用戶界面(iUI)的LCD和觸控功能,以及設置在附有雙EBI的高數據帶寬架構上的可編程1.8或3.3V I/O供電電壓。

  該評測板可用于評測SAM9G45的雙外部總線架構的性能優勢。它帶有兩個獨立的128 MB的第二代雙倍數據速率DRAM (DDR2)存儲器組,每個存儲器組連接一個外部總線接口。板上閃存包括2 GB的NAND閃存和32 Mb (2Mb x 16)的閃存,可用于存儲應用數據,或在系統啟動時存儲已上載到DDR2存儲器中的固件信息。

  板上外設則包括一個高速(HS) USB主/設備端口、第二個HS USB主端口、一個以太網10/100接口、兩個高速SDCard/SDIO/MMC插槽、一個帶電阻觸摸屏背光照明功能的24位彩色WQVGA LCD TFT顯示器、復合視頻輸出、相機接口以及一個備份電池。

  SAM9G45評測板具有雙啟動功能,支持Linux? 和 Microsoft? Windows?CE,并帶有預先編程的演示程序,展示在Linux 和 WinCE系統下的基本編程功能。愛特梅爾并為這兩種操作系統提供免費的完整的板級支持包(BSP)。

圖片點擊可在新窗口打開查看

  Linux支持

  愛特梅爾在其AT91SAM Linux門戶網站www.linux4sam.org上免費提供Linux v2.6.27操作系統,這個Linux軟件包備有完整的Linux v2.6.27內核、用于AT91SAM9G45評測工具包的Linux補丁、設備驅動程序、預建演示程序和基于開放嵌入式(Open Embedded)構建環境的?ngstrom 工具。AT91SAM Linux入門網站是面向廣泛且不斷擴大之社群的網關,為愛特梅爾全部基于ARM9?的嵌入式32位微處理器系列提供Linux自我支持。

  Windows CE支持

  支持Windows嵌入式BSP的AT91SAM9G45工具包功能齊全,為工程師提供了在愛特梅爾基于ARM9之產品中部署微軟嵌入式技術所需的一切工具。該產品可從網站下載。此外還有廣泛的文檔提供,包括一個使用就緒(ready-to-run)的演示程序,用于解釋如何使用和定制BSP源代碼以及如何基于Windows BSP進行應用構建。

  世界范圍的廣泛第三方生態系統

  領先的第三方嵌入式軟件供應商可以提供大量中間件、開發工具和RTOS,支持SAM9G45作為愛特梅爾AT91SAM微控制器世界范圍生態系統的一部分,這些公司包括:

  Mentor Graphics 公司

  Mentor Graphics公司嵌入式系統部門總經理Glenn Perry表示:“我們與愛特梅爾建立了長期穩固的合作關系,客戶能夠使用我們的Nucleus RTOS 和 Nucleus Graphics用戶界面,來實現最佳的性能。通過采用SAM9G45電路板和Mentor Graphics開發工具及軟件IP,嵌入式開發人員無需通過硬件加速,便可以在最短時間內為其設備創建先進的2D和3D圖形用戶界面。”

  Micrium公司

  Micrium 公司副總裁Christian Legare表示:“SAM9G45是第一款帶有真正的EHCI兼容USB高速控制器的嵌入式微處理器。為了實現軟件可移植性,英特爾針對高速USB主控制器硬件的實現方案,定義了寄存器級接口和存儲器數據結構的EHCI標準。我們的高速USB控制器驅動程序和USB堆棧也有一個類似的嵌入式硬件,能夠以PC級速度運行。Micrium的中間件和功能強大的基于ARM9處理器非常適合那些尋求占用較少資源的實時操作系統(RTOS),而不需要大容量存儲器和高性能操作系統的替代方案的客戶!

  QNX公司

  QNX軟件系統公司業務聯盟經理Kroy Chang-Zeviar 表示:“在QNX開發者社群門戶網站Foundry27.com上,QNX專為愛特梅爾基于ARM 9之處理器而開發的板級支持包已成為最受歡迎的下載產品之一。愛特梅爾的SAM9G45-EK整合了硬實時性能、2D/3D加速圖形、Flash Lite HMI和QNX? Neutrino?操作系統的超級可靠性等優勢,可為自動化系統、HVAC控制、媒體設備及其它任務關鍵性應用的原型構建與設計提供理想的快捷方式。”

  Fluffy Spider Technologies公司

  Fluffy Spider Technologies公司首席執行官Robi Karp評論道:“愛特梅爾的SAM9G45 eMPU為智能設備制造商和應用開發商提供了一個功能豐富的高成本效益平臺。通過支持SAM9G45,我們的FancyPants多媒體和圖形引擎可幫助OEM廠商實現硅片增值,并利用專業的、引人注目的富媒體(media-rich)用戶界面實現產品的差異化!

  Timesys 公司

  Timesys公司業務發展副總裁Charlie Ashton表示:“我們的軟件開發框架LinuxLink一直廣為利用愛特梅爾處理器設計基于Linux的嵌入式產品的客戶所采納。我們針對最新推出的AT91SAM9G45處理器和參考板而開發的LinuxLink訂閱服務,可提供預先匯編的起始點,助力愛特梅爾客戶快速啟動Linux產品開發。這項訂閱服務是通過Linux內核和根文件系統而定制化,幫助客戶在其產品中采用Linux,然后進行最終的系統集成。有了LinuxLink,SAM9G45客戶能夠以更低的開發成本更快地將產品推向市場。此外,Timesys在客戶開發的每個階段均提供專業工程技術支持!

  Adeneo Embedded公司

  Adeneo Embedded 公司首席執行官Yannick Chammings表示:“Adeneo Embedded為OEM廠商提供Windows Embedded CE的培訓、系統開發支持和BSP維護,使他們基于SAM9G45之設計能繼續保持優勢。Adeneo Embedded和愛特梅爾正聯手在美國和歐洲進行針對AT91SAM9 系列的Windows Embedded CE培訓。這個為期一周的培訓基于標準微軟課程,將幫助參與人員掌握帶有Windows Embedded BSP的AT91SAM9評測工具包的使用方法,以及定制和開發應用的專業能力。”

]]>
突破硬件束縛wince 內存管理http://www.hufushizhe.com/bbs/dispbbs.asp?BoardID=35&ID=2795&Page=1wangxinxin2010-12-22 13:50:522002年10月 , 一種名為“VeriChip”的芯片突然在美國市場上銷售 。 將其植入皮下 , 不管是用金融卡提款 , 還是用信用卡消費 , 只需在現場讓刷卡機“刷自己” , 取得VeriChip的鑒別碼后就能完成交易 。 但是由于產品功能過于單一且必須冒著被致惡性腫瘤的風險 , 項目最終不了了之 。

“VeriChip”的芯片假如能獲得更大的軟件支持 , 提供更多“以人為本”的也許 , 即使基于“人體芯片”爭吵的暴風眼 , 或許也不致“幾年游說 , 僅2000人植入”的結果 。 “芯片的性能除了取決于芯片本身 , 也取決于軟件對它的支持 。 ” 飛思卡爾的開源研發經理楊欣欣說 。

拋開人體載體這一敏感話題 , IC嵌入式軟件開發如今已經應用到許多領域中 , 包含航空航天事業中的載人飛船;銀行中的一些服務設備;汽車中的車載信息娛樂系統或是家庭家電設備等 。 這意味著客戶對于IC嵌入式軟件開發的復雜性要求日益提高 , IC嵌入式軟件開發工程師扮演著越來越重要的角色 。

入職專業匹配度要高 軟性技能需團隊意識強

米萊iT科技網

大多企業將應聘標準設定在電腦/電子通信/自動控制專業本科以上學歷 , 部分民營/私營稍有降低標準 , 為?茖W歷 。 依據公司開發項目的需求IC嵌入軟件開發工程師還需要精通UcOS、VxWorks、WinCE、Linux等通用產品其中一項或多項開發平臺 。 鑒于Linux源代碼的開放化 , 使開發者能依據自己的需要進行裁剪 , 受到了開發者和企業的青睞 。 “精通Linux嵌入式操做系統”會是非常好的面試敲門磚 , “打擊面”廣 , 卻過于大眾化 。

對于工做經驗的要求 , 19%的企業要求至少一年相關工做經驗 , 42%的企業要求擁有三年及以上 , 尤其是在金融風險還未徹底消退的形勢下 , 企業招聘仍堅持保守政策 , 尤其是高端稀缺型人才 , 只有3%的企業愿意將機會留給應屆畢業生(以上是以2009年12月4日51job關鍵字“嵌入式軟件開發工程師”的統計結果) 。

在這些嵌入式操做系統中封裝了越來越多的功能 , 除了對任務的切換、調度、通信、同步、互斥、中斷管理、時鐘管理等 , 還可進一步封裝內存管理、網絡通訊協議、文件管理等功能 , 這些功能可以依據需要進行裁減 。 面對大量高技術難度的工做內容 , 幾乎所有的企業都要求應聘者具有高責任心和高團隊合做意識的軟性技能 。 除此之外 , 對于不善言辭的IT 男 , “善于溝通”這個技能可以獲得面試附加分 。

需求穩步攀升中放量 薪資一線城市待遇豐厚 www.mylove21.cn

據前程無憂數據庫顯示 , 嵌入式軟件開發人才的需求量由6月份上升23個點 , 達759個每日網上職位發表數 , 8月與11月成為該行業的兩個增長最為迅速的節點 。 VDC統計顯示嵌入式軟件的應用部分最大的兩個市場是消費類和電信/數據應用 , 兩者的營業額相加占有將近半壁江山 。 時值年關將近 , 嵌入式軟件開發人才可有針對性的尋覓新東家 , 為自己的職業發展生涯放手一搏 。

薪資方面 , 依據前程無憂薪酬數據顯示 , 中國北京的本行業平均年薪超過中國深圳和中國上海等沿海城市 , 中國上海稍有落后 , 但都逼近了9萬年薪的水平 , 中國深圳的行業平均年薪超過8萬 。 二線城市的薪資則被“腰斬” , 一般維持在4.3―4.8萬的水平 , 但隨著不少國際頂尖半導體公司選擇入住二線城市的技術開發區 , 我們有理由相信 , 二線城市薪資發展擁有較大的上升空間 。

]]>
關于M8使用WINdows CE操作系統http://www.hufushizhe.com/bbs/dispbbs.asp?BoardID=35&ID=2794&Page=1wangxinxin2010-12-22 13:49:45

圖片點擊可在新窗口打開查看
對業界而言,Windows CE絕對算不上新名詞,而且,隨著嵌入式系統及掌上型產品的日益受寵,"Windows CE"在各種場合露面的機會亦越來越多。但是,很多人對Windows CE的認識并非很清晰,甚至存在著一些誤區。那么,Windows CE到底是什么?微軟為什么要推出Windows CE?Windows CE有哪些特點?我們能用Windows CE干什么?……且聽微軟中國研究開發中心Windows CE產品部經理任健先生對Windows CE的解說。
(1)Windows CE是什么?
  簡而言之,Windows CE是一個搶先式多任務并具有強大通信能力的Win32嵌入式操作
系統,是微軟專門為信息設備、移動應用、消費類電子產品、嵌入式應用等非PC領域而從
頭設計的戰略性操作系統產品。
Windows CE所支持的編程界面是Win32 API的子集,它支持600多種最常用的Win32 A
PI。它具有專門為實時嵌入應用而設計的、搶先式多任務的操作系統核心,可以燒入ROM
。操作系統核心只用500KB的ROM和250KB的RAM。目前,Windows CE的最新版本是前不久剛
推出的5.0版。"CE"的來源已無處可查,但是微軟人普遍認為,"CE"中的"C"代表了消費類 (Consume
r)、袖珍 (Compact) 、通信能力 (Connectivity) 和伴侶(Companion),而"E"則代表了
電子產品 (Electronics)。嵌入式操作系統是一種用途廣泛的系統軟件。工業控制是它的傳統應用領域,在這一
領域里已有一些存在了多年的比較成功的嵌入式操作系統。但近年來,隨著家電信息化的
趨勢日益明顯,對嵌入式操作系統提出了許多新的要求,熟悉和友好的用戶界面、統一的
編程界面、強大的通信功能已變得日趨重要。微軟一直致力于把計算技術用于改善人們的工作和生活,不斷聽取用戶的需求,并根據技術發展的水平推出相應的產品。從DOS到Windows 3.1、Windows 95、Windows NT,直至Windows CE,都是滿足用戶需求的表現。我們希望通過我們和技術伙伴的努力,能使普通老百姓從計算技術中受惠,得以跨入信息時代或知識經濟的大門。
(2)為什么要推出Windows CE?
  生活中人們開始使用手機、PDA以及手持和掌上電腦等來存儲和處理各種重要信息,
這似乎預示著一場新的革命。
這場革命就是,計算機占領了桌面之后,繼續向小型化和分散化發展,更廣泛地進入人
們工作、生活和娛樂的各個方面和各個角落。近年來,這場革命又被Internet的迅猛普及
所推動,一個網上世界已經出現,人們隨時隨地獲取所需信息,保持與他人接觸的需求愈發
強烈。
  自微軟創辦之日起,比爾·蓋茨就確立了公司的使命,即創造出能夠鼓舞和豐富人類
生活的個人計算機軟件,無論是在辦公室、在學校,還是在家里。這就是后來著名的"信息
隨手可得"的夢想。今天,微軟已為PC提供了出色的操作系統平臺(Windows 9x/NT)、高效
率的軟件開發工具和功能強大且易用的通用軟件,使許多人的工作和生活從中受益。
但是,PC的價格及使用的復雜性仍使許多人與此無緣,尤其在中國更是如此。PC文化
仍不是徹底的"庶民文化",目前PC的復雜性對于更為普遍的大眾來說仍是一種"精英工具
"。PC已成為人們進入網上世界的最后一道門坎。例如中國已在Internet干線、接入、內
容提供等諸方面投入巨資,但就因為這"最后一公里"難題,中國的Internet產業遲遲不能
起飛。
  微軟不想重犯80年代一家著名公司犯下的錯誤。當年這家公司固守"主機文化"而錯
失了電腦向桌面這一新領域拓展的良機,成為自己引發的PC革命的旁觀者。因此,微軟在
向個人桌面和企業管理領域提供了兩個方便易用且功能強大的操作系統(Windows 9x/NT
)之后,又從頭設計了Windows CE,以面向更為廣大的被稱為移動計算、信息家電等應用領
域,我們稱之為"非PC"領域。我們希望在這一新的應用領域中仍然能夠扮演操作系統平臺
、開發工具和通用軟件供應商的傳統角色。
  所以,Windows CE是微軟順應計算技術小型化、分散化趨勢的產物,是發揚"庶民文化"傳統

的戰略性產品。微軟已投入并將繼續投入大量的資源,通過發揮我們善于運用現有
技術并進行技術創新而滿足市場需求的能力,以及引導、帶動相關產業的能力和強大的市
場推廣能力,并充分發揮我們在PC革命中所積累的豐富經驗和資源,繼續成為這場新的革
命的前驅。
(3)Windows CE的特點
1. 設計目標和體系結構
Windows CE 是一個基于Win32、多任務、具有強大通信能力和圖形功能的操作系統
,是專門為嵌入式應用而設計的。它使以更低的開發成本、在更短的時間內進入更廣闊的
市場成為可能。其設計目標為:
*模塊化可伸縮;
*實時性能好;
*通信功能強大;
*支持多種 CPU。
2. 支持多種處理器
Windows CE是一個可移植的操作系統

3. 強大的操作系統內核與良好的通信能力
Windows CE具有靈活的電源管理功能,包括睡眠/喚醒模式。使用對象存儲(ObjectS
tore)技術,包括文件系統、注冊表及數據庫。它具有高性能/效率的操作系統特性,包括
按需換頁、共享存儲、交叉處理同步、支持大容量堆(Heap)等。
Windows CE支持直接的局域網以及撥號連接,提供與PC、內部網以及Internet的連接
,包括用于應用級數據傳輸的設備至設備間的連接。提供各種基本的通信基礎結構,包括
:套接字(Socket)、TCP/IP、PPP、IrDA、遠程訪問、TAPI 以及Unimodem、WinInet、Wi
n32串行、SLIP、NDIS驅動程序,還有對SMB重定向程序、聯網以及PC 連接性的支持。同
時,還提供與Windows 95/98/NT的最佳集成和通信。支持廣泛的通信硬件。
4. 豐富的圖形用戶界面
提供基于Microsoft Internet Explorer的Internet瀏覽器。此外,還支持TrueType
字體,提供賞心悅目的顯示及打印效果。
可配置、可擴展、通用、精巧的基于Windows模型的控件庫,用于建立類Windows應用
的專門圖形用戶界面,可作為嵌入應用開發人員的范例和工作起始點。
支持特定目標應用的豐富服務,例如手寫體和聲音識別、動態影像、3D 圖形等。
5. 通用開發工具和可再用資源
通用開發工具有:
*Windows CE Embedded Toolkit for Visual C++;
*Windows CE Toolkit for Visual J++;
*Windows CE Toolkit for Visual Basic;
*其他第三方的工具。
目前,世界上有420多萬Win32 開發人員,其商務和嵌入式應用都使用同一種API,這將
大大方便開發人員。
發揮可重定目標應用代碼庫的作用。目前,已有超過1.7萬種Win32應用作為巨大的代
碼庫,OEM廠商可以從中獲得適當的技術許可,同時,軟件開發商們可將其現有的資源快速
移植到Windows CE平臺上。
Windows CE支持COM的進程內函數、部件化的Java VM和Visual Basic腳本,并提供豐
富的、經常在嵌入式應用中使用的部件化的軟件,包括通信、數學/統計、圖形/圖像、數
字信號處理、用戶界面等。
(4)Windows CE的產品線
1. 預制平臺 (Target Platform)
微軟公司推出和正在推出一系列基于Windows CE的預制平臺,它們可分為下面兩大類
移動式或便攜式產品 如掌上型電腦、手持式電腦以及汽車電腦等。
面向家庭以電視為主要顯示器的產品 如電視瀏覽器、頂置盒和游戲機等。
我們這里所使用的如手持式電腦這樣的平臺名稱,指的是軟件平臺,是微軟為該硬件
平臺所提供的軟件。硬件平臺通常是由微軟定義、硬件合作伙伴生產的。因此,只要符合
該定義的硬件,就可以運行與之相應的軟件平臺?ㄎ鳉W和飛利浦生產的掌上型電腦都預
裝了基于Windows CE 的掌上型電腦軟件平臺,只要是為掌上型電腦開發的軟件都可以在
上面運行。
換句話說,我們也可以把Windows CE內核加上掌上型電腦預制軟件平臺看作是Windo
ws CE的掌上型電腦版;而把Windows CE內核加上手持式電腦預制軟件平臺看作是Window
s CE的手持式電腦版。Windows CE的手持式電腦版與Windows 95/98/NT的用戶界面最接
近。
為了幫助軟件開發人員為這些預制目標平臺開發軟件,微軟還提供了相應的軟件開發
工具,例如Windows CE Tool Kit for VC、VB和VJ。軟件開發人員可以使用它們在Windo
ws NT上為各種預制目標平臺開發應用軟件。該工具中包括了現有預制目標平臺在Windo
ws NT上的仿真模擬器,以便軟件開發人員在沒有預制目標平臺硬件產品的情況下對應用
程序進行仿真調試。
2. 專用產品與嵌入式系統開發工具箱ETK
對于那些無法在微軟提供的預制目標平臺上實現的應用,微軟將Windows CE及其輔助
工具以ETK(Embedded Tool Kit)的形式提供給軟硬件開發商。他們可以用搭積木的方式
開發自己的軟硬件平臺,以滿足其獨特的需求。這類產品我們稱之為專用產品(Vertical
Product)。
(5)Windows CE在中國
  近年來,中國的IT、家電、個人通信設備等行業及其市場已取得了長足的進步,例如
,在中國家用電器市場中,國內品牌已經占據了主導地位,個人通信設備迅速增長。據統計
數字顯示,國內尋呼機持有量和手機持有量均已進入了世界前列。中國市場規模龐大,獨
具特色,只要把握住其脈搏,便可形成爆發性的成功,并可能走向并影響世界產業。例如在
世界上其他國家翹首盼望DVD時,VCD在中國卻異彩紛呈,形成世界上獨一無二的VCD市場,
并自行制定標準,提交國際標準化組織。
  此外,世界范圍的IT、家電、娛樂等傳統行業的融合趨勢業已波及中國。例如,國內
PC制造業者已轉向家用電腦、信息家電,學習機市場也在嘗試與家電產品的融合。在國內
家電市場趨于成熟和飽和之后,家電廠商便紛紛涌入IT行業,包括PC制造業,也有一些廠商
順應了信息家電的潮流,自行或與計算機廠商合作開發信息家電產品。
但由于中國的特殊國情,即經濟水平和教育水平的限制,國內計算機市場目前仍不能
提供一個規;挠脩羧,IT業仍是一個幼稚產業,未能形成規模經濟,苦于尋找出路,其
中軟件行業尤為突出。家電行業在迅速發展并成功地滿足了傳統家電市場的需求后,正面
臨生產能力過剩、過度市場競爭等難題,急于尋找新的增長點。
同時,國內業界還有一種強烈的需求,即希望有一種合理的產業分工模式和技術標準
化,以避免盲目競爭和重復性勞動;希望能站在高起點和世界技術發展的前沿,加入世界大
合作,快速推出滿足市場需求的產品。例如學習機在發展多年后,目前就面臨著技術提升
的問題。
  在這種情況下,Windows CE為國內產業界所帶來的不僅僅是其操作系統平臺、開發工
具和通用軟件所提供的一個較高的技術起點,還有微軟引導帶動相關產業的能力以及強大
的市場推動能力,這將有助于形成新的規;氖袌,這種規;袌稣侵袊浖袠I
、Internet行業等所急切需要的。同時,還提供了加入全球產業生態環境的機會,在這里
既有合作又有競爭,中國產業界完全可發揮在VCD、學習機市場中所表現出的強大動能而
直接走向世界。 ]]>
我的 ARM-WinCE 編程探索之旅(二)http://www.hufushizhe.com/bbs/dispbbs.asp?BoardID=35&ID=1807&Page=1wangxinxin2010-11-26 10:04:49經過多次測試,找到了使用 FPC(Free Pascal Compiler)加 SDL(SImple DirectMedia Layer)進行 ARM-WinCE 圖象編程的途徑(最終,建立過程中還是不得不借助于M$的開發工具eVC)。

1、從 http://www.libsdl.org/download-1.2.php 下載最新的 SDL 1.2.13 源碼,解壓其中 src 和 include 到 c:\,解壓其中 visualce.zip 到 c:\VisualCE。

2、下載并安裝eMbedded Visual C++ 4.0(同時附帶安裝了Platform SDK),運行,打開WorkSpace文件 c:\VisualCE\*.vcw,修改工程配置為 arm4,release,然后 Build SDL.DLL,生成 ARM-WinCE 下用的 SDL.DLL,約220K大小,將 SDL.DLL 拷入 PPC。

3、從 http://www.hu.freepascal.org/lazarus/ 下載并安裝最新的 Lazarus + fpc 2.2.5 win32 -> arm wince。修改 \lazarus\fpc\2.2.5\source\packages\sdl\src\sdl.pas 的源碼,注釋掉連續的多個 *getenv 和 *putenv 二函數,再用 ppcrossarm.exe 編譯 sdl.pas,得到libimpsdl.a、sdl.o、sdl.ppu三個文件,覆蓋原 \lazarus\fpc\2.2.5\units\arm-wince\sdl\ 下的文件。

至此,FPC+SDL的WinCE圖形編程環境構建完成。

接下來,將前些日子根據 PGCC 示例用 FPC 改寫的一個簡單的桌面版 SDL 測試程序,重新用 ppcrossarm.exe 編譯,生成的EXE文件大小為82K,只導入了額外的 SDL.DLL(前面已經放入PPC),在PPC上運行通過。運行時會先出現 SDL 初始化的控制臺窗口,顯示一些視頻信息(桌面版的SDL也是如此,類似于dosbox的運行),其運行結果是每秒20次在全屏幕上顯示隨機大小、隨機顏色的方塊,按任意鍵或觸筆點擊退出。

下面是昨天晚上最后的程序源碼(在事件查詢循環上好像有點邏輯問題,有時候退不出程序,待修正):
  1. program Test;
  2. uses windows, sysutils, sdl;

  3. var
  4.         screen: PSDL_Surface;
  5.         event: TSDL_Event;
  6.         draw_count:int64=0;
  7.         done:boolean;
  8.         l,t:integer;

  9. procedure Draw_Box(screen:PSDL_Surface; x,y,w,h:dword; r,g,b:dword);
  10. var
  11.         p:PByte;
  12.         p2:PWord;
  13.         i,j:dword;
  14.         c:dword;
  15. begin
  16.         if SDL_MUSTLOCK(screen) then begin
  17.                 if SDL_LockSurface(screen) < 0 then exit;
  18.         end;

  19.         c := SDL_MapRGB(screen^.format, R, G, B);
  20.         assert (screen^.format^.BytesPerPixel=2);
  21.         p := screen^.pixels + y*screen^.pitch + x*screen^.format^.BytesPerPixel;
  22.         for j:=1 to h do begin
  23.                 p2:=PWord(p);
  24.                 for i:=1 to w do begin
  25.                         p2^:=c;
  26.                         inc(p2);
  27.                 end;
  28.                 inc(p,screen^.pitch);
  29.         end;

  30.         if SDL_MUSTLOCK(screen) then SDL_UnlockSurface(screen);
  31.         SDL_UpdateRect(screen, x, y, w, h);
  32. end;

  33. procedure HandleKey(key: TSDL_KeyboardEvent);
  34. begin
  35.         done:=true;
  36. end;

  37. //main at here
  38. begin
  39.         SDL_Init(SDL_INIT_VIDEO or SDL_INIT_AUDIO);
  40.         screen := SDL_SetVideoMode(320, 240, 16, SDL_HWSurface);
  41.         SDL_WM_SetCaption('My SDL',nil);

  42.         while not done do begin
  43.                 //Set_Pixel(screen,random(320),random(240),random(255),random(255),random(255));
  44.                 l:=random(320-40);
  45.                 t:=random(240-30);

  46.                 Draw_Box(Screen,l,t,random(320-40-l)+41,random(240-30-t)+31,random(255),random(255),random(255));
  47.                 inc(draw_count);
  48.                 while SDL_PollEvent(@event)<>0 do begin
  49.                               case event.type_ of
  50.                               SDL_MouseButtonDown,
  51.                                 SDL_QUITEV, SDL_KEYDOWN,SDL_KEYUP: done := true;
  52.                                       //handleKey(event.key);
  53.                         end;
  54.                 end;
  55.                 SDL_Delay(50);
  56.         end;

  57.         SDL_Quit();
  58. end.
復制代碼
接下來打算搞點有實際用處的程序,比如說一個文本閱讀器,使用24點陣字體;還要嘗試是否能將一些 sdl 輔助庫(比如:SDL_Mixer)編譯成 ARM-WinCE 可用的 DLL。

]]>
關于WINCE系統的介紹和M8 MyMobile系統的介紹。喜歡技術歷史的和小白進http://www.hufushizhe.com/bbs/dispbbs.asp?BoardID=35&ID=1806&Page=1wangxinxin2010-11-26 10:03:41關于M8的系統
    貌似目前M8的Android系統受關注關注最多,很多煤油關注將來自己能否使用新的機器人系統,原本的M8 MyMobile系統倒是很少受關注,最新發布的 Windows Embedded CE 6.0 R3或許讓煤油對將來的MyMobile有了更多期待。不過也看到一些用戶連基本的M8的MyMobile系統也不清楚,不知道什么是WinCE,還跟Windows Mobile混淆對比新舊,這里就簡單介紹一下M8的MyMobile系統,以及其與WinCE的淵源,不過對此不感興趣的煤油可以無視此系統介紹章節看軟件安裝介紹了,不是誰使用M8都要搞清楚M8的系統的,有興趣的可以看看了解一下。

WinCE與Windows Mobile
    在介紹M8的MyMobile系統之前,有必要先介紹一下WinCE與Windows Mobile。

圖片點擊可在新窗口打開查看



官方介紹:
    WindowsCE是微軟公司嵌入式、移動計算平臺的基礎,它是一個開放的、可升級的32位嵌入式操作系統,是基于掌上型電腦類的電子設備操作系統,它是精簡的Windows 95,Windows CE的圖形用戶界面相當出色。其中CE中的C代表袖珍(Compact)、消費(Consumer)、通信能力(Connectivit)和伴侶(Companion);E代表電子產品(Electronics)。
    首先,WinCE是微軟的嵌入式、移動平臺的操作系統基礎,在其基礎上可以定制很多定制化操作系統。比如目前主流的Windows Mobile就是基于WinCE 5.0定制的,之前SP2003(Smart Phone 2003)和PPC 2003((PocketPC) 2003)則是基于WinCE 4.2定制的。其實WinCE不僅僅可以用來做手機系統,還可以用來做其他嵌入式設備的系統。WinCE可以用來做手機,掌上電腦,但是這不是WinCE唯一的用途,很多設備都可以用到WinCE,比如數控機床,信息家電,等等。

圖片點擊可在新窗口打開查看



       2000年,微軟專門為掌上電腦定制的包含一些特殊的API的Windows CE定制版本,命名為“PocketPC”,最早是“PocketPC2000”,之后升級為“PocketPC2002”,均為基于WindowsCE3.0的內核。PPC是基于WinCe高度定制的系統,是微軟因市場需要,統一掌上電腦操作系統的規格。它在WinCE的基礎上削減了一些功能,定制的專用于掌上電腦操作系統。另外,微軟為了搶占智能手機(“Smart Phone”)的市場份額,通過收購的技術借鑒,開發出一套外觀、風格和使用方法同PPC的系統很相似但是內核卻并不相同的智能手機專用的嵌入式操作系統,叫做“MicroSoft Smart Phone”。這個系統的手機典型特點是大多不支持觸摸屏的。SP(Smart Phone)則是獨立于 PPC 的操作系統,它不但功能更簡化,而且在內存使用上和WinCE,PPC都不一樣。

圖片點擊可在新窗口打開查看



        2003年,微軟為了方便,把它所有的用于手持式移動計算設備上的嵌入式操作系統統稱為“Windows Mobile”,如“Windows Mobile 2003”。但是其中又分為PPC版和SmartPhone版,他們分別和原來的PocketPC和SmartPhone操作系統是對應的。其中PPC版本的Windows Mobile 2003是基于WindowsCE4.2內核的。2005年,微軟將SmartPhone和PPC上的兩套系統作了進一步的整合,發布了“Windows Mobile 2005”,劃分標準版和專業版,分別對應SmartPhne和PPC版本,它們之間的差距在縮小,典型的差別就是是否支持觸摸手寫。目前Windows Mobile已經經歷了Windows Mobile 6.0、6.1以及最新的6.5的發展,Windows Mobile6.X 系列都是基于WinCE 5.0的。基于最新WinCE6的Windows Mobile7也在緊張開發中,不久的將來即將與大家見面。

圖片點擊可在新窗口打開查看



MyMobile
        通過上面的介紹我們了解了WinCE以及Windows Mobile的關系以及區別,再回頭看看魅族M8所采用的MyMobile系統。

圖片點擊可在新窗口打開查看



        M8的MyMobile系統同樣是基于微軟Windows CE系統定制的,不過是基于最新的WinCE6.0,由魅族定制。MyMobile最主要的就是要加入通信功能,同時定制一套更友好,具備更好用戶體驗的GUI。大家或許都知道,WinCE原始的GUI非常簡陋,用戶體驗很差,而M8也通過定制的GUI實現了高分辨率顯示下的絢麗界面和超酷觸摸操作。M8采用基于WinCE6的基礎來定制自己的操作系統,一方面可以節省一部分授權費用(使用Windows Mobile要支付一定的授權費用給微軟,而WinCE的授權很少甚至沒有),另外就是可以定制自己的GUI。作為一款手機操作系統,M8首先就是要加入通話功能,其中涉及聯系人,接打電話等,而之前Windows Mobile一貫丑陋簡陋的聯系人管理已經讓很多用戶抱怨了,Windows Mobile平臺的眾多聯系人管理軟件的出現就可見一斑。為此在定制的通話模塊中M8也人性化的加入了區號秀等功能,實現聯系人分組(早期的系統)等一些列定制化。而M8炫酷的操作界面自然不用說了,配合高分大屏操作,第一眼便吸引了眾多煤油。

圖片點擊可在新窗口打開查看



        另外,正是因為M8是基于WinCE定制的,而WinCE本身也不是專為手機而設計的,它是為更通用的嵌入式、移動設備設計的,由此也就導致采用WinCE系統開發的手機系統可能或多或少都存在信號問題,即使現在很成熟的Windows Mobile系統在不同的手機上也常見“信號門”事件,漏接無信號也時有發生。Radio模塊也是基于WinCE的手機經常要更新的。而M8也遇到了少數信號的問題,魅族也是經過反饋,調查,新近推出了信號增強版M8 SE,基本解決了偶爾的信號不好的問題。

圖片點擊可在新窗口打開查看 圖片點擊可在新窗口打開查看

]]>
基于WinCE模擬器的應用程序調試http://www.hufushizhe.com/bbs/dispbbs.asp?BoardID=35&ID=1805&Page=1wangxinxin2010-11-26 10:01:20 

在這里我假設你的PC上面什么工具都沒有,也沒錢買。那么你就去微軟的網站上面注冊,然后就可以下載WinCE6.0和VS2005的評估版了,下載后安裝,然后將你的WinCE6.0升級到WinCE6.0 R2,具體步驟參見我以前的Blog:如何安裝WinCE6.0。最后還要從微軟的網站上下載ActiveSync并安裝。

 

現在,我認為你已經完成了WinCE6.0 R2的安裝,你就可以打開VS2005創建一個WinCE的工程,在選擇BSP的時候請選擇”Device Emulator: ARMV4I”,在選擇模板的時候請選擇”PDA Device”,然后選擇”Mobile Handled”,完成后默認是Debug模式,切換成Release模式然后編譯,編譯成功以后,需要配置模擬器并最終將編譯好的WinCE下載到模擬器中運行,具體步驟參見我以前的Blog:WinCE Emulator使用介紹。

 

首先介紹模擬器上WinCE的配置:

1. 當WinCE在模擬器中運行以后,選擇Start->Settings->Control Panel,如圖:

 

 

2. 在彈出的控制面板對話框中選擇Network and Dail-up Connections,然后雙擊Make New Connection,在連接類型中選擇Direct Connection,如圖:

 

 

3. 選擇Next,然后選擇Serial Over DMA,如圖:

 

 

4. 最后選擇Finish就創建了一個新的連接。創建完成后,重新回到控制面板界面選擇PC Connection,在彈出界面中選擇Change,然后選擇剛剛添加的My Connection,如圖:

 

 

5. 完成后點擊OK按鈕,然后關閉控制面板,現在模擬器設備已經配置好了。

 

下面介紹ActiveSync的配置:

1. 安裝ActiveSync并運行,在菜單中選擇File,然后選擇Connect Settings,按照下圖進行設置:

 

 

2. 設置完成后選擇OK,在VS2005環境中選擇Tools,然后選擇Device Emulator Manager,會彈出一個應用界面,點擊界面上的refresh按鈕刷新,如圖:

 

 

3. 選擇當前的仿真設備,并又擊選擇Cradle,此時會看到ActiveSync進行連接,如圖:

 

 

在連接成功以后,就可以在ActiveSync中訪問模擬器上運行的WinCE中的文件了,此時基于模擬器的應用調試環境已經基本建立起來。

 

下面創建個應用程序調試一下:

1. 首先要做的就是基于先前創建的WinCE工程,導出SDK,具體步驟不介紹了,在導出SDK并安裝以后,就可以基于導出的SDK來創建一個應用程序。重新打開一個VS2005,然后新建一個項目,具體如圖:

 


 

2. 輸入名稱以后,就Next,在選擇平臺SDK的時候,可以只選擇自己訂制的WinCE的SDK,這里我訂制的WinCE的SDK叫EmulatorSDK,如圖:

 


 

3. 然后選擇Next,可以選擇單文檔,多文檔,基于對話框,你隨便吧,最后點完成。下面就和以前在PC上面編寫VC程序一樣了,簡單點,添加個按鈕,然后彈出一個MessageBox來,在完成以后,就可以編譯并調試了,按F5就可以。如果程序編譯沒有錯誤,就會被下載到模擬器上面運行,這個過程需要等一會,然后你就會在你的模擬器上面看到你剛剛編寫的應用程序了,如圖:

 

 

如果你的應用程序是Debug模式,那你可以在你的應用程序中設置斷點,程序執行到后會停下來,然后可以單步跟蹤,都沒有問題。

 

不知道前面說明白了沒有,總之,只要安裝了VS2005和WinCE6.0 R2之后就可以完全在PC上的模擬器上面調試WinCE內核和應用程序,可以自己定制內核,導出自己的SDK,并用自己的SDK來編應用程序和調試

]]>
ARM上網本還有市場嗎?兼談ARM(WinCE)上網本的設計思路http://www.hufushizhe.com/bbs/dispbbs.asp?BoardID=35&ID=1804&Page=1wangxinxin2010-11-26 9:56:40
以下內容含腳本,或可能導致頁面不正常的代碼
說明:上面顯示的是代碼內容。您可以先檢查過代碼沒問題,或修改之后再運行.
]]>
關于WinCE同步軟件ActiveSync的應用接口函數http://www.hufushizhe.com/bbs/dispbbs.asp?BoardID=35&ID=1803&Page=1wangxinxin2010-11-26 9:53:22背景:
現在的巡檢系統是自定義通訊協議來進行數據傳輸的,由于協議的不可靠導致數據傳輸不穩定,大數據量是容易產生故障。
改進分析和設想:
有兩個程序,一個為App1運行在PC上,另一個為App2運行在PDA的WinCE上,我想利用ActiveSync來進行兩個應用程序的數據交換,以下設想了兩種方式來實現:

設想1:  App1直接訪問PC上的同步文件夾,然后把ActiceSync設置為隨時同步,  這樣下面APP2的數據文件更新后,重新連到PC自動更新PC的同步文件夾.
不知道這樣是否可以?
技術問題:
APP1訪問同步文件夾識別文件;
App1能修改文件;
App1能自動啟動同步操作;
App1能控制ActiceSync的連接和斷開操作;
APP1能自動設置ActiceSync的配置;

設想2: 找到ActiveSync的外部應用通訊接口函數,然后在App1和App2中調用這些接口函數來實現對ActiveSync的操作.   這個方法我找了很久,找到相關信息!
技術問題:
App1能自動啟動同步操作;
App1能控制ActiceSync的連接和斷開操作;
APP1能自動設置ActiceSync的配置;
App1能調用PC上ActiceSync的外部應用通訊接口;(比如象MSCOMM的Write,Read函數)
App2能調用PDA上ActiceSync的外部應用通訊接口;
App1和App2能互相識別對方更新的文件;

]]>
讓您知道什么是Series操作系統的手機http://www.hufushizhe.com/bbs/dispbbs.asp?BoardID=35&ID=1802&Page=1wangxinxin2010-11-26 9:35:35如何學編程http://www.hufushizhe.com/bbs/dispbbs.asp?BoardID=35&ID=1801&Page=1wangxinxin2010-11-26 9:30:30如何學編程,這是一個老話題,是一個老生常談的話題。百度一下,找到相關網頁約195,000篇(2009.11.15),除了重復的文章外,足以知道多少人在問,多少人在談,但是還有多少人迷茫?

  關于這個問題自然是仁者見仁,智者見智。如果你在網上百度一下和編程相關內容,一定會看到:Visual Basic 、Delphi 、C、C++、VC++、匯編語言、Visual Foxpro 、SQL Server、Oracle、DB2、Sybase、Power Builder、Java、J2SE、JavaEE、JavaScript、PHP 、ASP(ASP.NET) 、JSP 、ISAPI 、NSAPI 、CGI、VS2005/VS2008 等等(這些有語言、數據庫或者開發工具)。

  這些不是全部,如果你在網上問該怎么學呢?有讓你從C語言開始學的,也有讓你從Pascal開始學的,也有讓你從VB開始學的,也有讓你直接學習C#的,更有讓直接學Java的……,網友的熱心反而讓你更是一頭霧水,很難知道誰對誰錯。

  實際上如果是學習一門入門語言,任何一個都夠了,區別僅在于入門的難與易。但是倘若作為“就業”之本,僅有一門語言基礎顯然不夠,欲知后事,請接著往下看:

一、學習目的與軟件企業招人要求

  (一)準備從事軟件開發職業:無論你是一個在校大學生也好,還是一個已經在職但準備轉行也罷。

  1、首先,最好了解一下軟件的開發模式:C/S模式、B/S模式。

  C/S模式:我們看到的一些客戶關系管理、進銷存軟件、醫院管理系統。顯著特點需要在電腦上裝一個軟件才能使用。可以使用語言有:VB、Delphi、PB、VC++等。多用于局域網,但也有不少用于互聯網(典型的有QQ等)。
  
  B/S模式,也稱WEB開發:網上銀行、163與126電子郵件、網上納稅等。只需要瀏覽器就可以了?梢允褂谜Z言有:VB Script(ASP)、C#(ASP.NET)、JAVA(JSP)、PHP等。多用于互聯網,但也有不少用于局域網。

  2、其次,你看一下軟件企業都招什么樣的人。

  除了個別領域,不難看到目前主要分為兩大陣營:.NET陣營和JavaEE陣營。兩大體系都非常不錯,不要看網上互相攻擊的那些無聊文章。在后面我會談到,這只是工具。

  看看用人單位要求:這才是你真正的學習導向。

.NET體系

 。1)計算機相關專業大專或本科學歷,二年以上.NET開發工作經驗;

 。ǎ玻┦炀欳#語言、.net平臺,vs2005,vs2008開發環境;熟練C/S,B/S結構軟件,有相關項目經驗。

 。ǎ常┦炀氝\用SQL Server數據庫設計與開發,熟悉存儲過程及觸發器,有過大批量數據處理與優化經驗;

  (4)精通ASP.NET、WebService進行相關的開發,有HTML、XML、JavaScript經驗者優先;

 。ǎ担┝己玫膱F隊開發意識,較強的溝通、學習能力,認真負責的工作態度。

.JavaEE體系

  (1)計算機相關專業,大;虮究茖W歷,具有1年以上相關工作經驗;               

  (2) 要求精通Java語言,精通JavaEE技術框架,熟悉SPRING、HIBERNATE、STRUTS、WEBWORK、MVC架構,熟悉Weblogic,jboss,Tomcat等應用服務器,并可做應用部署及調優;   

  (3)對網絡系統有相當的理解,熟悉Oracle/SQL-Server/Sybase等數據庫,可以熟練的使用PL/SQL語言進行存儲過程和函數等的編寫;                  

 。4)熟悉UML建模技術優先,熟悉現代軟件項目管理優先,英語技能較好者優先;   

 。5)具有編寫需求說明書、設計說明書等軟件開發相關文檔的能力;   

 。6)思路清晰,工作規范,良好的執行能力、較強的團隊協作精神和高度的責任心;

 。7)2年以上軟件開發工作經驗。

.其他

  諸如單片機、PLC等也很多。

――――――――――――――――――――――――――――――――――――

  不難看出,近年來盡管學歷一路飆升,但是軟件企業卻仍然定位是大;蛘弑究茖W歷,但是都要求有項目經驗(對此,你將來當了老板會更明白,你也不愿意替別人作嫁衣)。

  選擇一個體系作為你的目標很重要,無論是.NET還是JavaEE都行,千萬不要什么都學,最終卻什么都不懂。

  另:你在網上也許看到很多這樣的建議,學習C語言、C++ For Dos(面向對象的思想用DOS就足夠了)、C For Windows、C++ For Windows(MFC),我是這樣一路學過來的,更知道其中的艱辛。但是我更堅信按照這個建議,更多人的不到山頂就放棄了。并不是學美術的一定都要成為畫家,做廣告設計也是挺有意思的一件事。

(二)純粹的編程愛好者

  這個我沒有太多的發言權,只要你認為怎么適合你都行。

二、關于文化基礎:

  (一)數學:很多人都談到要有高數、離散、線性等基礎。但如果你做的只是一個網站后臺、普通的管理系統,那么也許有高中的數學知識足夠了。

  (二)英語:入門學習編程不需要過四、六級,高中英語基礎學習編程沒有一點問題。但是還是希望英語你能夠更上一層樓。道理很簡單,原因有二:

  1、如果你英語不好,不可能等你過了六、八級再學編程,可以邊學編程邊學英語,畢竟英語高手≠編程高手。即使先用拼音作為變量名,先學會編程也是好的,但最好能用英文命名。請看一個表名Yybrdab(拼音首字母),你再看一個表名Yiyuanbinrendanganbiao(拼音全拼),再看表名PatientFiles(英文縮寫),你有什么看法呢?Yybrdab很難猜,Yiyuanbinrendanganbiao全拼太長了,英文命名PatientFiles是不是更容易理解一些,

  2、畢竟國外在軟件開發方面比我國先進不少,有時你查閱的是英文資料,如果你的英語好自然會助你一臂之力。

三、語言是工具、功夫在詩外

  你想一下,一個知名作家,不會用電腦而是用普通的鋼筆寫文章、甚至是鉛筆,一個打字員每分鐘在電腦打一百字以上,那么誰寫的文章好呢?編程語言也一樣,你應聘工作時說:我會VB、Delphi、JAVA、C#等等,但是什么樣的項目也做不出來,和那個打字員有什么區別呢?

  李白的《靜夜思》我們每一個字都認識,是否每一個人都能寫得一首好詩呢?我們知道一個演員、一個作家、一個詩人必須要具備更多的生活閱歷與歷練才能演出好作品、寫出好文章、寫出好詩,我們程序員又何嘗不是呢?

  當然能夠用好工具則能更好的為你服務,作家能夠用電腦寫文章,估計效率更高一些,你選擇正確的編程語言,至少會讓你如虎添翼,但千萬不要認為你學的是比較流行的語言而對別人學的可能不入時的語言而不屑一顧,你的道行修得越高才會知道高手并不是都寫在臉上,你會有更好的心態去學習,明白人外有人,天外有天,自己實在微不足道。

  知識是無窮的,但我們生命是有限的,所以我們應該在有限的生命里學習更有用的知識應用到實踐中來。學習編程是為了更好解決我們工作和生活中的問題,而不是讓你成為紙上談兵的軍事家。

四、如何學習?

  就像武術一樣,門派如此之多,很難一下都告訴你。我也從一個門派說起吧,就從.NET體系(B/S模式)說吧。

(一)打基礎

    勿在沙丘上建浮雕!
           避免眼高手低,切忌急功近利!


  你可能要學習的有以下內容:Dreamweaver、HTML/XHTML、CSS、JavaScript、XML、SQL SERVER、VS2005/VS2008與IIS設置、C#、WebForm(ASP.NET)、Ajax。

  1、Dreamweaver:可能沒有人會把它和編程聯系起來,我們更多的認為它是做網頁用的(網頁三劍客之一),的確是這樣,之所以我列出來,是希望你如果做B/S模式開發,它做界面有時比VS2005/VS2008好的多,這可能要引出你可能還要懂點Photoshop。門面也很重要,它會讓你的程序增色不少,不見得你進的公司都會給你配一個專業美工。

  2、HTML/XHTML:超文本標記語言/擴展超文本標記語言,盡管聽起來是個“語言”,但嚴格來說,它確實不是語言,只是一堆標簽而已。在瀏覽器上點右鍵,“查看源文件”,里面有不少類似HTML、TABLE、TR、TD等,這些都是HTML的一部分。懂了它你會更明白將來Javascript腳本語言放在哪。

  3、CSS:層疊樣式表,它常常和HTML、Javascript結合起來做出更絢麗和大方的界面。

  4、JavaScript:這是客戶端的腳本語言,你可能還不能一下子理解什么是客戶端、什么是服務器端,這都沒有關系。你一定見過很多網站顯示今天是:xxxx年xx月xx日,大多數就是用Javascript做的,曾記得1998年,一個朋友問我是不是每天晚上要把網頁上傳一遍,我奇怪問他為什么?(他那時不懂腳本編程),他說日期每天都要變的。也許今天很多人看了都是笑話(但他現在已經是高手了)。

  5、 XML:擴展標記語言,盡管它與HTML名字很相似,但骨子里面的東西卻大不一樣,如果讓我說有什么用還真得想一想怎么給你說,但將來你一定會明白,它真的很有用。

  6、SQL SERVER:數據庫,你去銀行取錢,你的信息存在哪呢?就是在數據庫中。所以如果你開發的是管理系統,那么數據庫是非常有用的。還有Oracle、DB2,這些你只要懂一個就行了,它們都是相通的。盡管數據庫系統往往是幕后英雄,紅花尚需綠葉襯。

  7、VS2005/VS2008與IIS設置:前者是搭建C#運行的集成環境IDE,后者則是學習ASP.NET的環境搭建。

  8、C#:這是一門真正的語言,微軟比爾·蓋茨靠basic起家,直到現在.NET框架中都有VB.NET語言,但C#則更是其推薦語言,如果你懂點C++或者Java學習一定會很輕松,沒有也沒有關系,很重要的語言啊。

  9、Asp.NET:.NET體系不僅可以開發B/S模式的程序,還可以開發C/S模式的程序或者手機WinCE上的程序,當然Asp.NET則是指B/S模式開發。

  10、Ajax:你一定有過在網上注冊過,發現有的是在你填入用戶名尚未登錄就提示有重復的登錄名,而有的直到你提交后才提示,你輸入的東西可能還要重新輸入,這就是前者利用了Ajax的妙用。

  上面列出的十項是不是已經嚇住你了,如果你感覺太多了,不妨先學第6、8、9項,其余的放到后面再學也可以。

  紙上得來終覺淺,絕知此事要躬行。  ——陸游

  學習每一門都要理論與實踐相結合,不要認為這個簡單那個簡單,一看都明白,做起來眼高手低,唯有實踐才能有更深的體會?纯磿鲎鲱},這個時候你僅僅學會了造句而已,還要參考一些優秀的文章和代碼,模仿著寫才能真正的提高。

  大多數人學習主要還是靠自學的,但學習方法還是至關重要的,有的人喜歡從第一頁一頁頁往后翻,一種可能是堅持下來了,最后可能會“頓悟”,還有一種可能每次都是看前面幾十頁,不信你可以看一下,你的多少本書都是開了個頭,從側面看前面黑乎乎的(不是你手臟),而后面卻是嶄新的。最終也未能攻克。放棄了重新撿起再放棄。
  我推薦一種方法先囫圇吞棗,你想一下你做的第一道菜是如何做出來的(從沒有做飯經驗的朋友是沒有……),難道是一字不拉地研究了一遍菜譜嗎?NO,這就對了,計劃做什么樣的一道菜,然后挑相關章節選讀,有些難以讀懂的章節暫時跳過去,等以后再回來讀,你應該有這種體會,剛開始看時很難的東西,過一段時間再看卻變得如此易解。注意我說的是先囫圇吞棗,想成為廚師還是要好好研究菜譜了。但往往是萬事開頭難,等你熟悉了就可以在業界內為解決實際問題而結交高手的時候了。絕不會像BBS中許多問的傻呆問題了。

  學而不思則罔,思而不學則殆。  ——孔子

  你在學習任何一門編程語言一定學過循環與條件,你會讓電腦計算1+2+3+…+100也是會用循環了;先給x賦值為9,會讓電腦判斷x的值大于5輸出“大于”,否則輸出“小于”,也是你會了。

  但是如果你模擬一下銀行取款的過程:在ATM上可以有機會輸入三次密碼,如果密碼正確則可以進行取錢操作,密碼錯誤提示重新輸入,一旦超過三次則卡被吞掉,相信你的功力已經提升了不少,而且感覺編程與現實并不遙遠。

(二)仿照真實項目

  經過基礎知識的修煉,也許你已經感覺自己差不多了,滿懷信心的去應聘工作,結果卻碰壁了,問你有項目經驗嗎?你一臉的委屈:沒有上過班則沒有項目經驗?沒有項目不能上班?是不是陷入兩難境地?你可能說我在你們這實習吧,不要工錢都可以,你會發現這個機會對方一般都不會給你,別怨天尤人了,求人不如求己!

  實際上現在網上已經有很多試用版,你完全可以比葫蘆畫瓢,你能真正的做一個項目,對前面知識的理解和運用一定會更上一個臺階!

(三)提升

  不登高山,不知天之高也;不臨深溪,不知地之厚也。——荀子

  我們看電視,看到高手總是殺人于無形,編程也一樣,經過第二階段,這回你可能已經躊躇滿志了,呵呵,一不小心又碰壁了,但也許你幸運的找到了一份工作,這是軟件企業急著用人,看你“孺子可教”,收留了你。如果不要你,一點也不奇怪,是別人比你優秀!

  比如,添加一個客戶,你是不是在頁面上畫了幾個文本框和按鈕,然后再按鈕上寫了個事件就提交到數據庫了,能夠做得出來固然比不會要好,但是你面向對象了嗎?太多太多的人學的是面向對象的語言,但是寫的卻是面向過程的程序。關于學習.NET體系的不妨看一下伍迷先生的《戲說面向對象程序設計C#版》、《大話設計模式》,我與伍迷先生不認識,沒有替他推銷圖書之意,只是他的創作與我心有戚戚焉,挺適合入門或者進階者。然而由于很多面向對象以及軟件工程、項目管理、設計模式之類的書籍過于深奧,或者國內有些為了評高級職稱而胡拼亂湊的狗屁書籍,讓更多人忘而卻步。

  能不能更上一層樓,那就看你的造化了!

  不經歷風雨,哪能見彩虹!

五、學習編程的捷徑

  我們做任何事情都喜歡找捷徑,世上根本沒有捷徑!實際上不走彎路就是捷徑!

  我的這篇文章就是力爭讓你避免或少走彎路,也就成為了捷徑。

  當然加入我們的QQ群(95472365)也是一個不錯的方法!

  或者到“跟我學編程”網站轉轉也許有一個意外的收獲!

六、成功和失敗的唯一區別,就是堅持與否

  “想起來一件有意思的事情,上大學時,到了晚上11點就關燈,我是很喜歡看書,就跑到男廁所去看看技術方面的書籍,唉想想那時候的確是苦了一點兒,不過沒有當時的努力,怎么可能就有今天的我呢,雖然比上不足,比下還是蠻有余的,知足常樂,何必跟自己過不去呢!

  這是從網上看到的一位,與我當年頗為相似。不過似乎我比他幸運一些,圖書館里面老書居多,平時省吃儉用買一些書,盡管父親告訴我:孩子,買書只管買,不要為了學習舍不得花錢!所以過早的學習了C語言、數據結構(那時候教學語言Pascal幾乎一統天下),有一次去圖書館借一本新書,圖書館管理員認為我看不懂,就是不借給我(當時恨透她了,這個老太太,太可惡了)。我固執地說可以看懂,這位老師說明天你來一下,第二天接到了一份試卷,所幸我答的不錯,后來我借書幾乎不限本數,因為老師知道書的資源不多,總是借給需要的學生和老師,那種恨瞬間變為一種感動。

  再后來,由于前面打的基礎,班主任(輔導員)把我推薦給了我們學校一名權威,這是一名我們當時只能仰視的學者,自己比較愚笨,此后得到導師一年有余的指導,平生受益匪淺。自此我也幾乎是在宿舍熄燈后才從教研室回到宿舍,故而在靜謐的晚上經常有繁星或明月相伴,工作這么多年則很少看到星星,很懷念大學那段時光。

]]>
關注S3C6410開發板的Linux2.6.28/winCE6.0系統版本http://www.hufushizhe.com/bbs/dispbbs.asp?BoardID=35&ID=1800&Page=1wangxinxin2010-11-26 9:24:49ARMSYS 6410開發板充分展示了三星S3C6410處理器在視頻媒體編解碼、2D/3D圖形加速、顯示處理和縮放等方面的性能優勢,并提供了LCD接口、TVout接口、攝像頭輸入接口、4路串口、1路紅外口、2路SD卡接口、1路CF卡接口、1路10/100M網口、1路USB2.0-OTG,1路USB Host,具有更高的主頻和更豐富外設,能適用于對性能和處理能力有更高要求的嵌入式系統應用場合。

ARMSYS 6410開發套件由ARMSYS 6410核心板+擴展板構成,用戶可以自由選配各種尺寸和分辨率的液晶屏、130萬攝像頭、無線網卡等配套模塊。
秉承立宇泰一 貫的精良品質,充分展現了S3C6410處理器的各項功能,并在設計上著重考慮了實用性和產品化設計,采用結構輕巧緊湊的一體機模式,不僅適合開發和研究的需要,也可以非常容易地集成到用戶系統上。衷心希望ARMSYS6410能帶給每一位用戶優越的性能體驗!

硬件配置如下:
 
圖片點擊可在新窗口打開查看

1,CPU:三星S3C6410處理器,ARM1176JZF-S內核,667MHz系統頻率穩定工作;

2,Flash Memory:256MB Nand Flash,可定制128M-2G容量;

3,SDRAM:128M Bytes mDDR內存,運行速133MHz,可以升級到256M Bytes DDR內存;

4,時鐘晶振:12MHz系統外部時鐘源;32.768KHz的RTC時鐘源;27MHz的TV Encoder時鐘源;48MHz的USB OTG時鐘源;

5,核心板接口:采用320針1.27間距,板子尺寸約68mm×42mm;

6,電源:采用獨立1.2V和3.3V電源芯片提供核心板各路電源。

7,Norflash:1M Bytes NorFlash,采用29LV800DB芯片,可以用來啟動系統,支持USB下載;

8,8位撥碼開關,用來配置系統啟動方式;

9,4路UART接口:可通過2個8位撥碼開關選擇輸出TTL電平或RS-232電平;

10,紅外接口,支持IrDA1.1協議,可以無線地向支持IrDA的設備無線連接來實現信息資源的共享;

11,CF卡接口,支持CF3.0規格CF卡;

12,IDE接口,支持掛接硬盤; 

13,USB HOST,支持USB1.1協議;

14,USB OTG,支持USB 2.0協議;

15,JTAG接口,標準20 pin JTAG接口;

16,9個用戶按鍵,功能上、下、左、右、確定、取消和返回等(用戶也可自定義其功能);

17,復位按鍵,采用專用的復位芯片;

18,指示燈:4個用戶LED指示燈; 2個電源指示燈;

19,SD/MMC接口:兩個高速SD/MMC接口,其中一個可支持8位模式?梢詫崿FSD Memory功能和SDIO功能;作為SD Memory最大可以支持8GB容量;

20,攝像頭接口:支持ITU-R BT 601/656 8位模式,可以和我公司130萬像素攝像頭連接使用;

21,LCD接口:一個50針LCD、觸摸屏插針接口,方便連接我公司各種類型的LCD模塊相連接;

22,AC97音頻接口:包括一路音頻輸出、一路音頻輸入和一路麥克風輸入;板上帶有兩個1W喇叭;

23,10/100Mbps以太網接口:采用集成隔離變壓器的RJ45接口;

24,視頻輸出接口:一路TV Out接口、一路S-Video接口;

25,2路高速SPI接口;

26,1路I2C接口;

27,擴展接口,引出數據、部分地址總線,部分控制總線、I/O信號線、AD信號線。


]]>
WINCE驅動開發之DMA的使用http://www.hufushizhe.com/bbs/dispbbs.asp?BoardID=35&ID=1799&Page=1wangxinxin2010-11-26 9:22:53以下是MSDN中的說法:

The Windows CE NDIS implementation does not support direct memory access (DMA). Do not use the NdisSetupDmaTransfer, NdisCompleteDmaTransfer, NdisMRegisterDmaChannel, NdisMDeregisterDmaChannel, NdisMAllocateMapRegisters, NdisMFreeMapRegisters, NdisMReadDmaCounter, and NdisGetSharedDataAlignment functions. 

Use the NdisMAllocateSharedMemory and NdisMFreeSharedMemory functions for PCI bus master DMA transfers. 


具體如何實現DMA呢?

在microsoft windows CE device driver kit中有一節是:Implementing DMA for NDIS Miniport Drivers 
專門提到了這個問題,當前ce還沒有自己的DMA機制,然而開發人員可以在他們自己的小端口卡驅動程序中實現相同的功能,但是寫的太簡單了

Implementing DMA for NDIS Miniport Drivers
DMA is important for efficient networking because it enables the layers in 
the networking architecture to share data without first copying that data

two categories of DMA: slave DMA and busmaster DMAB
 
Slave DMA
Slave DMA is appropriate for OEMs because it requires a block of memory that 
is pre-allocated in the device memory map of the Windows CE–based platform. 
Miniport drivers can map that block of physical memory to the driver’virtual
memory space, and then use the VirtualAlloc and VirtualCopy functions to move 
data in and out of that space
 
busmaster DMA 
To receive data, the driver allocates a shared memory block, transfers the 
data to buffers within that block, and uses NDIS functions to indicate that a 
packet has arrived. To send data, the driver uses the LockPages and 
UnlockPages functions to map the virtual memory to device memory, informs the 
NIC of the addresses of the data, and instructs the NIC to send the data. 
This method can be faster for larger data block sizes.

后來發MAIL給一位曾經遇到此問題的朋友,回復如下:

事實上在使用DMA是的關鍵是得到一個連續的物理地址空間,然后將該空間的物理地址放入DMA控制器的源地址或者目的地址寄存器中(根據你使用DMA的方向決定);
然后等待DMA中斷;
由于DMA使用的是物理地址但是在wince中只能使用虛擬地址,所以在DMA中斷產生之后如需分析數據請使用虛擬地址;
特別提示參考一下的文章:
 DMA的使用
1、 芯片DMA的使用要點:
AK3224芯片的DMA使用中,RAM的地址作為DMA傳輸的目標地址、源地址,必須要4字節對齊。而且DMA的操作長度以內的RAM地址,必須連續。
不過在使用中發現:Nandflash驅動中RAM地址作為目標地址時,只需要2字節對齊。RAM地址作為源地址可不需對齊。(其他情況需要逐一驗證)
2、 wince中的DMA使用:
根據DMA一次操作的RAM地址必須連續的特性,在驅動DMA使用時,我們需要確保虛擬地址映射的物理地址是連續的。有3個途徑:
1:數據區地址是由應用層或者其他進程、線程傳入的,驅動并不知道其虛擬地址對應的物理地址是否一直連續。
由于wince的內存申請,是以4K字節為一個頁,一段數據的內存申請可能跨越多個頁。因此,只要數據區長度大于1字節,就有可能其物理地址是跨越的、不連續的。為了確保DMA操作,我們必須查詢這段數據區在RAM上的物理分布。
首先,得到數據區所在的虛擬頁: VirPageStart = (ULONG)pSourceBuffer & 0xFFFFF000;
其次,得到數據區在頁內的偏移地址 :offset = (ULONG)pSourceBuffer & 0x0FFF;
計算數據區是否跨越頁段
if(offset + NumberOfBytes > 4096)
PageSize = WCE_UNIFORM_SIZE - offset;       //整個數據跨越此頁,則DMA傳輸需要分多個部分,一次一個頁段的傳
else
PageSize = NumberOfBytes;                //數據區沒有跨越頁
由得到的頁地址,查詢映射的物理地址。
if(!LockPages((LPVOID)VirPageStart, 4096, &TransAddr, LOCKFLAG_READ))
{
        //異常處理
}
UnlockPages((LPVOID)VirPageStart, 4096);
得到了映射的物理地址TransAddr后,根據RAM是目標地址還是源地址,做進一步的處理。
假設一個數據區作為DMA源地址,大小為9K。在虛擬地址首頁的偏移為4K。那么它必然跨越3個頁段。
首先查詢第一頁的物理地址發送,第一個頁的2K數據。然后查詢第二頁的物理地址,發送4K數據。最后查詢第三頁的物理地址,發送3K數據。

2:數據區的申請可以使用AllocPhysMem函數申請。
LPVOID AllocPhysMem(
DWORD cbSize,                 參數1:數據區大小
DWORD fdwProtect,             參數2:保護標記
DWORD dwAlignmentMask,         參數3:0(default system)
DWORD dwFlags,                參數4:0(Reserved for future use)
PULONG pPhysicalAddress         參數5:得到數據區對應的物理地址
);
AllocPhysMem函數返回值為指向申請后的虛擬地址指針。
如:pSerialHead->RxBufferInfo.RxCharBuffer =            //alloc physical memory
AllocPhysMem(pSerialHead->RxBufferInfo.Length + 16, PAGE_READWRITE, 0, 0, &RX_PhyAddr);
由于此函數必定申請到一片連續的物理地址,因此pSerialHead->RxBufferInfo.RxCharBuffer的使用不再需要查詢是否跨越多個頁段。
但是,AllocPhysMem函數申請的物理地址可能會跨越多個RAM CHIP。因此,在使用1片以上RAM芯片的系統中,依然需要查詢是否跨越CHIP。
       AllocPhysMem函數使用后,需要使用FreePhysMem函數進行釋放。
3:數據區可以在系統config.bib文件中,預先定義好一片連續、不跨越CHIP的RAM空間。
如下,系統保留了虛擬地址0x80024000開始,大小為0x3000的一段RAM。
SER_DMA                80024000 00003000 RESERVED
那么驅動DMA使用中,不再需要對這段內存,進行任何的查詢動作。我們只需要在進程空間中做映射即可。
pSerialHead->RxBufferInfo.RxCharBuffer = VirtualAlloc(0, RX_PhySize, MEM_RESERVE, PAGE_NOACCESS);
    if (pSerialHead->RxBufferInfo.RxCharBuffer == NULL)
    {
        DEBUGMSG(ZONE_ERROR, (TEXT("COM_Init:: VirtualAlloc failed!\r\n")));
        return(NULL);
    }
    else
    {
        if (!VirtualCopy((PVOID)pSerialHead->RxBufferInfo.RxCharBuffer, (PVOID)(RX_PhyAddr),
            RX_PhySize, (PAGE_READWRITE | PAGE_NOCACHE)))
        {
           DEBUGMSG(ZONE_ERROR, (TEXT("COM_Init:: VirtualCopy failed!\r\n")));
           return(NULL);
        }
    }
上面這段程序中,先使用函數VirtualAlloc,在進程空間中申請一段保留的虛擬地址空間。然后使用VirtualCopy,把需要使用的物理地址空間,映射到已經申請好的虛擬地址上。使用完畢,必須使用函數VirtualFree進行釋放。
LPVOID VirtualAlloc(
LPVOID lpAddress,                  
DWORD dwSize,
DWORD flAllocationType,
DWORD flProtect
);
BOOL VirtualCopy(
LPVOID lpvDest,
LPVOID lpvSrc,
DWORD cbSize,
DWORD fdwProtect
);
BOOL VirtualFree(
LPVOID lpAddress,
DWORD dwSize,
DWORD dwFreeType
);

]]>
開帖討論WINCE下24位色顯示瓶頸http://www.hufushizhe.com/bbs/dispbbs.asp?BoardID=35&ID=1798&Page=1wangxinxin2010-11-26 9:18:52有搞過的朋友,指點指點




24BPP圖片顯示慢的原因:讀寫內存的速度限制
16BPP 30-40ms之間
另外,輸出24BPP圖片好像有經過二次轉化,16BPP就轉化一次
即16BPP輸出圖片,只要一次寫LCD Buffer
24BPP好像是將3字節排列的源文件圖片,轉化為4字節格式的保存在中轉地址,然后從中轉地址轉化成最終顯示圖片,寫入LCD buffer,而第二次的LCD buffer地址可能為unchche的,將其cache一下,和16BPP的顯示速度就相當了


例如:
Volatile int x,y;
for(y=0;y<272;y++)
{
for(x=0;x<480;x++);
}

實測用時:14.3ms。!其中,變量是放在堆棧中,對變量的處理時間:(STR*3+LDR*4)*272*480=14.30ms-1.94ms=12.36ms

反匯編如下:
.text:10001134 SUB SP, SP, #8
.text:10001138 MOV R2, #0
.text:1000113C STR R2, [SP,#8+var_4] //y值存堆棧[SP,#8+var_4]
.text:10001140 B loc_10001170
.text:10001140
========================循環開始========================
.text:10001144 ; ---------------------------------------------------------------------------
.text:10001144
.text:10001144 loc_10001144 ; CODE XREF: LCD_TST+44j
.text:10001144 STR R2, [SP,#8+var_8] //x值存堆棧[SP,#8+var_8]
.text:10001148 B loc_10001158
.text:10001148
.text:1000114C ; ---------------------------------------------------------------------------
.text:1000114C
.text:1000114C loc_1000114C ; CODE XREF: LCD_TST+2Cj
.text:1000114C LDR R3, [SP,#8+var_8] //從堆棧取出x
.text:10001150 ADD R3, R3, #1 //x++
.text:10001154 STR R3, [SP,#8+var_8] //x值存入堆棧
.text:10001154
.text:10001158
.text:10001158 loc_10001158 ; CODE XREF: LCD_TST+14j
.text:10001158 LDR R3, [SP,#8+var_8] //堆棧取出x
.text:1000115C CMP R3, #0x1E0 //x<480?
.text:10001160 BLT loc_1000114C //x<480則跳到114C處
.text:10001160
.text:10001164 LDR R3, [SP,#8+var_4] //取出y
.text:10001168 ADD R3, R3, #1 //y++
.text:1000116C STR R3, [SP,#8+var_4] //y存入堆棧
.text:1000116C
.text:10001170
.text:10001170 loc_10001170 ; CODE XREF: LCD_TST+Cj
.text:10001170 LDR R3, [SP,#8+var_4] //從堆棧取出y
.text:10001174 CMP R3, #0x110 //y<272?
.text:10001178 BLT loc_10001144 //y<272,則跳到1144處
.text:10001178
====================循環結束============================
.text:1000117C ADD SP, SP, #8
.text:10001180 BX LR


]]>
WinCE開始菜單中添加應用程序http://www.hufushizhe.com/bbs/dispbbs.asp?BoardID=35&ID=1797&Page=1wangxinxin2010-11-26 9:14:47先說一下原理,其實在WinCE啟動以后,點擊Start,然后點擊Programs,里面所能看到的應用其實也都是以文件的形式存放的,它們存放在\Windows\Programs目錄下面,都是一些快捷方式文件,這些快捷方式文件連接了真正的應用程序,就這么簡單。
理解了這個原理,也就清楚該怎么做了,步驟如下:

1. 更改project.bib文件,添加應用程序,這里以Hello, world為例如下:

hello.exe     d:\WINCE600\OSDesigns\Emulator\Emulator\RelDir\DeviceEmulator_ARMV4I_Release\hello.exe           NK S


2. 為該應用程序創建一個快捷方式文件,可以新建一個*.txt文件,然后在里面添加:18#\windows\hello.exe,其中18表示后面的字符數,然后關閉該txt文件,重命名為hello.lnk,并將該文件拷貝到WinCE工程的release目錄下面。


3. 更改project.bib文件,包含hello.lnk文件,如下:

hello.lnk     d:\WINCE600\OSDesigns\Emulator\Emulator\RelDir\DeviceEmulator_ARMV4I_Release\hello.lnk           NK SH

4. 打開project.dat文件,將hello.lnk重新定位到\Windows\Programs目錄下面,如下:

Directory("\Windows\Programs"):-File("HELLO.lnk", "\Windows\hello.lnk")

5. 將project.dat和project.bib拷貝到工程的release目錄下面,然后Makimge就可以了。 

最后運行WinCE的時候,應該可以看到應用程序已經被添加到StartMenu的Programs中了,如圖:

通過這個例子可以看出,BIB中包含的文件在Makeimg以后,都會放在WinCE系統的\Windows目錄下面,而我們可以通過更改DAT文件來將他們重定向到另一個文件夾中。通過這種方式可以添加程序到Programs中,但是如果想改StartMenu本身,就需要更改源代碼了,在\WINCE600\PUBLIC\SHELL\OAK\HPC\EXPLORER\TASKBAR\stmenu.cpp下面。


]]>
WinCE文件目錄定制及內存調整http://www.hufushizhe.com/bbs/dispbbs.asp?BoardID=35&ID=1796&Page=1wangxinxin2010-11-26 9:14:03MUI是指多語言的支持,可以在WinCE系統中支持多種語言,并根據需要進行切換。下面介紹一下具體的實現:

1. 添加多種語言:

創建一個WinCE工程,然后在”Solution Explorer”中右擊工程,選擇”Properties”,會彈出一個對話框。在左側的列表中選擇”Local”,在右側選擇所要支持的語言,這里我選擇了French,Japanese,Chinese(PRC)和English四種語言。在”Default Locale:”中選擇系統的默認語言,這里選擇的是英語。如圖:

2. 添加MUI組件

在”Catalog Item View”中選擇支持MUI的組件,選擇”Core OS”->”CEBASE”->”International”->”Multilingual User Interface(MUI)”,如圖:

在上面選擇了French,Japanese,English和Chinese四種語言,如果要想WinCE能夠正確顯示,還要選擇相應的字體。在這里只需為Chinese和Japanese添加字體。選擇”Core OS”->”CEBASE”->”International”->”Locale Specify Support”->”Chinese(Simplified)”->”Fonts”->”SimSun & NSimSun”->”SimSun & NSimSun”來添加中文字體,同樣的方法在”Locale Specify Support”下找到”Japanese”然后添加日語字體。

3. 編譯MUI工程


重新編譯工程。編譯成功后,打開工程的release目錄,調用createmui命令來創建多種語言的資源文件,每種語言對應一個LCID,可以在WinCE的幫助文檔中查到,如下:

English:0409

Chinese(PRC):0804

French:040C

Japanese:0411

命令如下:

createmui 0409,0804,040C,0411

運行成功后會生成一個MultiUI.bib文件,打開該文件,拷貝所有內容到common.bib文件的末尾。MutiUI.bib文件中可能包含k.coredll.dll.xxx,在common.bib文件中刪除所有的k.coredll.dll.xxx項。

最后重新Makeimg就可以了。

4. 運行測試

下載并運行WinCE,可以看到默認的語言是英文的。選擇”start”->”setting”->”Control Panel”彈出控制面板,然后選擇”Regional Settings”,再選擇”User Interface Language”,選擇要切換的語言,比如Chinese(PRC),如圖:

重新啟動目標板,如果你用WinCE模擬器的話,在菜單中選擇File,然后選擇Reset,選擇Soft來重新啟動。重起以后,界面就會變成中文的WinCE系統了。

]]>
WinCE系統USB Mass Storage實現http://www.hufushizhe.com/bbs/dispbbs.asp?BoardID=35&ID=1795&Page=1wangxinxin2010-11-26 9:13:02WinCE支持遠程桌面功能,可以在PC端訪問目標設備的WinCE桌面。這個功能在調試的時候很有用。有些時候,你的目標板不帶顯示設備,這時你想訪問目標板的WinCE系統感覺很不爽,畢竟習慣了桌面操作。通過WinCE遠程桌面,你可以在PC上面訪問目標板的WinCE桌面并進行操作。

下面來介紹一下具體步驟:

1. 選擇支持WinCE遠程桌面的組件:

在WinCE的工程中選擇”Core OS”->”CEBASE”->”Core OS Services”->”Debugging Tools”->”Remote Display Application”,如下圖:

在這里建議同時添加telnet組件,在”Core OS”->”CEBASE”->”Communication Services and Networking”->”Servers”->”Telnet Server”。由于目標板可能沒有任何輸入輸出設備,所以添加Telnet組件可以在系統啟動以后,登陸Telnet來執行命令。


2. 配置遠程桌面主機IP地址:

打開WinCE工程的注冊表文件project.reg,然后添加下面的內容。

[HKEY_LOCAL_MACHINE\SOFTWARE\CERDISP]

"Hostname"="192.168.0.88"

其中Hostname為PC機的IP地址,也可以是計算機名。

還可以同時添加Telnet注冊表配置,如下:

[HKEY_LOCAL_MACHINE\COMM\TELNETD]

"IsEnabled "=dword:1

"UseAuthentication"=dword:0

該配置實現了無需身份驗證,直接登錄Telnet的功能。

3. 重新編譯,下載運行WinCE:

由于添加了新的WinCE組件,需要重新編譯WinCE工程。編譯成功后,可以下載到目標板上面運行。

4. 啟動PC端遠程桌面程序:

WinCE在目標板運行以后,首先在\WINCE600\Public\Common\Oak\Bin\I386目錄下找到cerhost.exe,然后運行。運行后選擇File,然后選擇Connect,在彈出的對話框中輸入目標板的IP地址,然后點擊OK等待連接。

5. 啟動目標板遠程桌面程序:

首先通過Telnet登錄目標板,然后再命令行中輸入如下命令:

Cerdisp –c

這時,就可以在PC上的cerhost界面中看到目標板WinCE的桌面了,而且可以通過鼠標鍵盤進行操作,如圖:

其實很簡單,要注意的是首先運行PC端的cerhost,它應該是Server。然后運行目標板上的Cerdisp,這個應該是Client

]]>
WinCE應用開發——觸摸屏輸入http://www.hufushizhe.com/bbs/dispbbs.asp?BoardID=35&ID=1794&Page=1wangxinxin2010-11-26 9:10:54一,信息

觸摸屏信息同鼠標信息,不過只有WM_LBUTTONDOWN,WM_LBUTTONUP, WM_MOUSEMOVE 三種。

二,捕捉函數

BOOL GetMouseMovePoints (PPOINT pptBuf, UINT nBufPoints,

UINT *pnPointsRetrieved);

三,實例

PenTrac.h
#define dim(x) (sizeof(x) / sizeof(x[0]))
struct decodeUINT {                             // Structure associates
    UINT Code;                                  // messages 
                                                // with a function. 
    LRESULT (*Fxn)(HWND, UINT, WPARAM, LPARAM);
}; 
struct decodeCMD {                              // Structure associates
    UINT Code;                                  // menu IDs with a 
    LRESULT (*Fxn)(HWND, WORD, HWND, WORD);     // function.
};
HWND InitInstance (HINSTANCE, LPWSTR, int);
int TermInstance (HINSTANCE, int);
LRESULT CALLBACK MainWndProc (HWND, UINT, WPARAM, LPARAM);
LRESULT DoPaintMain (HWND, UINT, WPARAM, LPARAM);
LRESULT DoMouseMain (HWND, UINT, WPARAM, LPARAM);
LRESULT DoDestroyMain (HWND, UINT, WPARAM, LPARAM);
PenTrac.cpp
#include <windows.h>                 // For all that Windows stuff
#include "pentrac.h"                 // Program-specific stuff
const TCHAR szAppName[] = TEXT ("PenTrac");
HINSTANCE hInst;                     // Program instance handle
const struct decodeUINT MainMessages[] = {
    WM_LBUTTONDOWN, DoMouseMain,
    WM_MOUSEMOVE, DoMouseMain,
    WM_DESTROY, DoDestroyMain,
};
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    LPWSTR lpCmdLine, int nCmdShow) {
    MSG msg;
    int rc = 0;
    HWND hwndMain;
    hwndMain = InitInstance (hInstance, lpCmdLine, nCmdShow);
    if (hwndMain == 0)
        return 0x10;
    while (GetMessage (&msg, NULL, 0, 0)) {
        TranslateMessage (&msg);
        DispatchMessage (&msg);
    }
    return TermInstance (hInstance, msg.wParam);
}
HWND InitInstance (HINSTANCE hInstance, LPWSTR lpCmdLine, int nCmdShow) {
    WNDCLASS wc;
    HWND hWnd;
#if defined(WIN32_PLATFORM_PSPC)
    hWnd = FindWindow (szAppName, NULL);
    if (hWnd) {
        SetForegroundWindow ((HWND)(((DWORD)hWnd) | 0x01));    
        return 0;
    }
#endif
    hInst = hInstance;
    wc.style = 0;                             // Window style
    wc.lpfnWndProc = MainWndProc;             // Callback function
    wc.cbClsExtra = 0;                        // Extra class data
    wc.cbWndExtra = 0;                        // Extra window data
    wc.hInstance = hInstance;                 // Owner handle
    wc.hIcon = NULL,                          // Application icon
    wc.hCursor = LoadCursor (NULL, IDC_ARROW);// Default cursor
    wc.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);
    wc.lpszMenuName =  NULL;                  // Menu name
    wc.lpszClassName = szAppName;             // Window class name
    if (RegisterClass (&wc) == 0) return 0;
    hWnd = CreateWindowEx (WS_EX_NODRAG, szAppName, TEXT ("PenTrac"),
                         WS_VISIBLE | WS_CAPTION | WS_SYSMENU,
                         CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, 
                         CW_USEDEFAULT, NULL, NULL, hInstance, NULL);
    if (!IsWindow (hWnd)) return 0;
    ShowWindow (hWnd, nCmdShow);
    UpdateWindow (hWnd);
    return hWnd;
}
int TermInstance (HINSTANCE hInstance, int nDefRC) {
    return nDefRC;
}
LRESULT CALLBACK MainWndProc (HWND hWnd, UINT wMsg, WPARAM wParam,
                              LPARAM lParam) {
    INT i;
    for (i = 0; i < dim(MainMessages); i++) {
        if (wMsg == MainMessages[i].Code)
            return (*MainMessages[i].Fxn)(hWnd, wMsg, wParam, lParam);
    }
    return DefWindowProc (hWnd, wMsg, wParam, lParam);
}
LRESULT DoMouseMain (HWND hWnd, UINT wMsg, WPARAM wParam, 
                     LPARAM lParam) {
    POINT pt[64];
    POINT ptM;
    UINT i, uPoints = 0;
    HDC hdc;
    ptM.x = LOWORD (lParam);
    ptM.y = HIWORD (lParam);
    hdc = GetDC (hWnd);
    if (wMsg == WM_MOUSEMOVE) {
        if (wParam & MK_SHIFT) 
            GetMouseMovePoints (pt, 64, &uPoints);
        for (i = 0; i < uPoints; i++) {
            pt[i].x /= 4;  // Convert move pts to screen coords
            pt[i].y /= 4;
            MapWindowPoints (HWND_DESKTOP, hWnd, &pt[i], 1);
            SetPixel (hdc, pt[i].x,   pt[i].y, RGB (255, 0, 0));
            SetPixel (hdc, pt[i].x+1, pt[i].y, RGB (255, 0, 0));
            SetPixel (hdc, pt[i].x,   pt[i].y+1, RGB (255, 0, 0));
            SetPixel (hdc, pt[i].x+1, pt[i].y+1, RGB (255, 0, 0));
        }
    }
    SetPixel (hdc, ptM.x, ptM.y, RGB (0, 0, 0));
    SetPixel (hdc, ptM.x+1, ptM.y, RGB (0, 0, 0));
    SetPixel (hdc, ptM.x, ptM.y+1, RGB (0, 0, 0));
    SetPixel (hdc, ptM.x+1, ptM.y+1, RGB (0, 0, 0));
    ReleaseDC (hWnd, hdc);
    Sleep(25);
    return 0;
}
LRESULT DoDestroyMain (HWND hWnd, UINT wMsg, WPARAM wParam,
                       LPARAM lParam) {
    PostQuitMessage (0);
    return 0;
}

clip_image001

]]>
WinCE Display驅動開發介紹http://www.hufushizhe.com/bbs/dispbbs.asp?BoardID=35&ID=1793&Page=1wangxinxin2010-11-26 9:06:22       1. Display驅動模型
        WinCE下的Display驅動直接由GWES模塊管理,它會直接被GWES模塊管理和調用。Display驅動實際上也是分層的,其中包括GPE庫,該庫處理一些默認的繪圖,相當于驅動的MDD層。用戶只需要開發和硬件相關的PDD層驅動就可以了。在WinCE中,整個架構如圖:
圖片點擊可在新窗口打開查看
如圖,Application為一個應用程序,該程序會調用圖形設備接口函數(GDI),而GDI函數是由Coredll.dll模塊導出的。Coredll.dll會將函數調用的參數打包,然后觸發對另一個進程的本地過程調用(LPC),所有的繪圖和開窗口的工作被傳給內核中GWES模塊。GWES模塊被稱為圖形,窗口和事件子系統,專門處理圖形輸出和用戶輸入等事件及相關的所有交互。GWES模塊會調用Display驅動完成對顯示硬件的操作。Display驅動由GPE和DDL.dll組成,GPE完成基本的默認繪圖工作,而DDI.dll實際上從GPE類上繼承而來的,并實現了相關的顯示硬件的操作。]]>
SD card技術了解并WINCE下SDHC驅動開發http://www.hufushizhe.com/bbs/dispbbs.asp?BoardID=35&ID=1792&Page=1wangxinxin2010-11-26 9:05:34

SD Card Driver on ADS Summary

http://www.cnblogs.com/songtitan/archive/2007/02/11/647293.html

了解SD card

SD是Secure Digital Card卡的簡稱,直譯成漢語就是“安全數字卡”,是由日本松下公司、東芝公司和美國SANDISK公司共同開發研制的全新的存儲卡產品。SD存儲卡是一個完全開放的標準(系統),多用于MP3、數碼攝像機、數碼相機、電子圖書、AV器材等等,尤其是被廣泛應用在超薄數碼相機上。SD卡在外形上同Multimedia Card卡保持一致,大小尺寸比MMC卡略厚,容量也大很多。并且兼容MMC卡接口規范。不由讓人們懷疑SD卡是MMC升級版。另外,SD卡為9引腳,目的是通過把傳輸方式由串行變成并行,以提高傳輸速度。它的讀寫速度比MMC卡要快一些,同時,安全性也更高。SD卡最大的特點就是通過加密功能,可以保證數據資料的安全保密。它還具備版權保護技術,所采用的版權保護技術是DVD中使用的CPRM技術(可刻錄介質內容保護)。

 

規格


主要特點:

1.精巧而且超薄

SD記憶卡的尺寸只有24毫米x 32毫米 x 2.1毫米。作為“橋梁媒體”的重要特征,它精致小巧,方便您在不同設備上使用。兼容SD記憶卡的設備可以采用解碼器軟件來播放音樂、影像短片以及更多其他類型的內容,無需像CD播放機或DVD播放機那樣采用驅動裝置。從而使設備的外形更加精巧,同時也賦予了產品設計者發揮自由創意的全新空間。由于消除了播放音樂時的跳音現象,提高了播放的穩定性。

2.大容量栽體

目前,SD記憶卡已經具備各種容量可供選擇,同時,2GB、4GB和8GB的SDHC也出現了。

3.高速數據傳輸

為了提供快速響應和容易處理數字內容,SD記憶卡可以用每秒10MB的速率寫入和讀取數據。當其能夠用于遠程通信終端,直接下載內容時,記憶卡的高速傳送能力將可使存取時間和通信成本降至最低,同時可減輕網絡壓力。

4.擁有版權保護功能

先進的數碼技術使高保真音樂和其他高質量內容的錄制成為現實。日新月異的數碼技術,借助因特網,實現了全球范圍的信息快速共享。這一進步也帶來了對原版內容的大量復制,因此,作為21世紀的一種切實可行的記憶載體就必須具備高水平的版權保護技術,這樣才能保護大量高質的數碼數據。SD記憶卡可以自由復制各種數碼數據,并采用獨特的內置CPRM技術保存和轉移版權所有的內容,這也是建立一個全新的音樂及其他商業媒體的發布體系的關鍵所在。

 

硬件結構


(參看附錄中SD卡和其他卡的一個對比表)

 

SDIO卡

SDIO(輸入/輸出)卡是一種擴展帶SD卡插孔設備之功能的接口。正在開發各種SDIO卡,如相機、Bluetooth 、GPS和802.11b等。




如果編寫以上設備的驅動,當然前提是有一個合格的SD Host Controller。如同編寫USB STORAGE/HID設備的驅動一樣,需要USB HCD支持。MX31的ADS支持基于SDIO的LP1070 SDIO WLAN Card(在Wince 5.0的SD卡驅動模型里,這種驅動稱為client driver)。

]]>
在Bootloader, WinCE,應用程序間傳遞參數的方法http://www.hufushizhe.com/bbs/dispbbs.asp?BoardID=35&ID=1791&Page=1wangxinxin2010-11-26 9:03:36
基本思想就是在Nand Flash等固態存儲器中保存這個變量
實現方法有很多種,如果你使用的是EBoot,EBoot的例子中會有一個BOOT_CFG的結構體,默認保存EBoot參數的,這個參數保存在固態存儲器上,可以參考WINCE500\PLATFORM\SMDK2410\SRC\BOOTLOADER\EBOOT\main.c
這樣解決了保存變量的問題,但是如何在Bootloader與操作系統間傳遞參數呢,
同樣對于2410的例子,OEMPlatformInit里面會有一個BSP_ARGS的結構體,用來在EBoot與WinCE之間傳遞參數,這塊區域是SDRAM的區域,一般是保留出來作為參數傳遞的,WinCE不會覆蓋這塊區域,這個結構體在EBoot中被填充,所以,可以將參數放在BOOT_CFG中,然后EBoot初始化時從Nand中讀出來,放到BSP_ARGS,以達到傳遞給WinCE的目的。
但是這樣只是解決了讀取的問題,這個參數在CE中的修改還是不會被保存。
這種默認的方法最一般的用途就是來控制KITL,這種單向參數傳遞的
如果需要雙向傳遞或保存,最簡單的方法就是在WinCE驅動中添加一個IOCTL,比如FMD的IOCTL,用來讀寫這塊參數區域
這樣子,應用程序也就可以訪問這塊參數了。

如果不使用EBoot的默認方式,就直接規定一個或幾個Nand區域,讀寫方案同上,以達到多個應用的參數分開保存的目的,比如BT MAC在Block2, WIFI MAC在Block3, 其他參數在Block4。這樣做可以將經常讀寫的參數和不經常讀寫的參數分開,以免經常讀寫的塊損壞,而破壞其他的功能

]]>
主站蜘蛛池模板: 精品久久久久香蕉网| 久久99久久99精品免观看| 福利视频你懂的| 国产成人精品福利色多多| 一二三四国语在线观看视频 | 国产伦精品一区二区三区免费下载| 99精品免费观看| 少妇大战黑吊在线观看| 二个人的视频www| 欧美性猛交xxxx| 免费观看无遮挡www的视频| 老师开嫩苞在线观看| 国产精品久久久久999| juy-432君岛美绪在线播放| 成人欧美一区二区三区的电影| 亚洲av无码一区二区三区性色| 欧美日韩亚洲国产精品| 加勒比综合在线| 色yeye香蕉凹凸视频在线观看| 国产精品JIZZ在线观看无码| jizzjizz丝袜老师| 强行扒开双腿猛烈进入免费视频| 久久青草免费91线频观看不卡| 欧美人与动性xxxxx杂性| 免费h视频在线观看| 精品国产Av一区二区三区| 国产在线观看中文字幕| 8090韩国理伦片在线天堂| 国内自拍成人网在线视频| 一级特级aaaa毛片免费观看| 无码人妻精品中文字幕免费东京热| 亚洲人成人77777网站| 欧美手机在线视频| 免费人成激情视频| 精品一区二区三区在线观看l| 国产午夜精品一区二区三区漫画| 57pao一国产成永久免费| 国产高清一区二区三区| 一本色道久久hezyo无码| 性欧美18-19sex性高清播放| 久久午夜精品视频|