跳到主要內容

發表文章

目前顯示的是有「Embadded」標籤的文章

[8051]MCB 8051MicroControl Class Note

Use Keil C to Complie 8051 Program, and Write to ROM 1. Create New Project Project -> New Project 2.Select Device for Target A. Choice "Data Base Contact" belong your MicroControl Chip (we use Atmel. AT89C52) B. Set "Optionals for Target" ->[Target]->[Xtal] , [Output]->[Create HEX File] 3.Write the C Code 4.bulid Project 5. Open Chip-Writer Program 6. Set the Chip Type 7. Load .Hex Code 8. Test Board switch to Write-Mode and Trun On 9. Write to ROM 10. Reset Borad in Use-Model to Test Program

[WinCE] Driver Designe Course Note

BootLoader write process Connet Board by ICE install Banyan-UE-1.8.7b.exe Pass:5678088 execute Banyan-UE\DaemonU Unzip FlashWrite-V0.4.6b.zip execute FlashWrite-V0.4.6a.exe   >Initialize   >Detect   >Auto     Select "eboot.nb0"     Start Write Flash RAM Connet Board by COM Cable and Ethnet Cable(port cs8900) execute dnw.exe   Select com3 and 115200bps   [Serial Port]->[Connect]   and switch the Device power execute Platform Builder   open $MyOSDesign Workspace   [Target]->[Connectivity Options]->[Donwload]/[Setting]   [Target]->[Attach Device]       Build parameter setting set wincerel = 1 build 後自動複製 Driver *.reg write special [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\LED] "Dll"="leddrv.dll" /*Driver DLL檔名* "Prefix"="LED" /*Device名稱* "Index"=dword:1 /*設定driver共用編號* "Order"=dwo...

[WinCE] Driver-

ActivateDevice This function loads a device driver. HANDLE ActivateDevice( LPCWSTR lpszDevKey, DWORD dwClientInfo ); ActivateDeviceEx This function loads a driver and adds its registry values to the Active key in the registry. HANDLE ActivateDeviceEx( LPCWSTR lpszDevKey, LPCVOID lpRegEnts, DWORD cRegEnts, LPVOID lpvParam ); Loading Device Drivers Developing a Device Driver

[WinCE]WinCE Drivers--Stream Interface Drivers

Stream Interface is appropriate for any I/O device that produces or consumes streams of data. A good example: Serial port device, bad example: Display device Stream Driver is a DLL and has 12 standard Entry Points(函式/介面) (Init 、Deinit、I OControl、PowerDown、PowerUp、Open、 Read、 Write、 Seek、 Close..etc ) 怎麼判斷是否為Stream Driver ? ? public\common\oak\drivers下 的 def 檔,通常會使用 CreateFile("XXXN:", FILES_EXIST, ....) DeviceIoControl 操作的 Driver 都是 Stream Driver,即將 Driver 模擬成檔案來操作 Several ways to implement the stream driver: 1. With only Init and Deinit entry points and no device prefix. ==>You cannot access this driver using CreateFile. (e.g. %_WINCEROOT%\Public\Common\OAK\Drivers\RegEnum) 2.With device prefix in driver entry points. ==> DWORD DEM_ Init( LPCTSTR pContext, LPCVOID lpvBusContext) { OutputDebugString(L"DEM_DRIVER - DEM_Init - Context: "); OutputDebugString(pContext); OutputDebugString(L"\n"); OutputDebugString(L"DEM_DRIVER - Exit DEM_In...

[WinCE] Driver-

DllMain Callback Function ---Windows架構下呼叫dll的主程式結構 BOOL WINAPI DllMain( __in HINSTANCE hinstDLL , __in DWORD fdwReason , __in LPVOID lpvReserved ); XXX_IOControl (Device Manager) This function sends a command to a device. BOOL XXX_IOControl( DWORD hOpenContext, DWORD dwCode, PBYTE pBufIn, DWORD dwLenIn, PBYTE pBufOut, DWORD dwLenOut, PDWORD pdwActualOut ); Parameters hOpenContext [in] Handle to the open context of the device. The XXX_Open (Device Manager) function creates and returns this identifier. dwCode [in] I/O control operation to perform. These codes are device-specific and are usually exposed to developers through a header file. pBufIn [in] Pointer to the buffer containing data to transfer to the device. dwLenIn [in] Number of bytes of data in the buffer specified for pBufIn. pBufOut [out] Pointer to the buffer used to transfer the output data from the device. dwLenOut [in] Maximum number of bytes in the buffer specified by pBufOut. pdwActualOut [out] Pointer to the DWORD bu...

[WinCE] SOURCES文件詳解

SOURCES文件是WINCE底层开发中最重要的文件之一,主要的配置项如下: TARGETNAME,定义模块名称. TARGETTYPE,模块的种类,可以是DYNLINK, LIBRARY,EXE. 如果TARGETTYPE是DLL,则可以定义DLLENTRY,将Dll入口定义成别的不是DLLMain的函数,如果DLL的入口是DllMain,则不需要别的定义。 如果TARGETTYPE是EXE,则可以定义EXEENTRY,用于指定EXE的入口函数. 如果TARGETTYPE是LIBRARY,则不需要定义入口函数。 INCLUDES,如果一个模块需要使用非标准路径下的头文件时,需要定义INCLUDES,用于包含更多的头文件路径,用法如下: INCLUDES=$(INCLUDES);\new directory\...,注意定义新的INCLUDES时,需要包含INCLUDES原来的值,否则就需要包含所有可能的目录。 TARGETLIBS,SOURCELIBS用于定义该模块需要链接哪些库文件. TARGETLIBS,如果一个库以DLL的形式提供给调用者,就需要用TARGETLIBS,它只链接一个函数地址,系统执行时会将被链接的库加载。比如coredll.lib就是这样的库文件。即动态链接。 SOURCELIBS,将库中的函数实体链接进来。即静态链接,用到的函数会在我们的文件中形成一份拷贝。 注意,内核这个执行文件是没有TARGETLIBS的,GIISR.DLL也不能有TARGETLIBS。 WINCECOD,如果将其定义为1,则编译器会为每一个文件生成.cod文件,它是一个汇编文件,调试时查看汇编代码也是一种很好的办法。 SOURCES,定义该模块需要哪些源文件. 文章轉載自 WINCE Driver and BSP Develop Blog