자료출처 : http://microsoft-personal-operating-systems.hostweb.com/TopicMessages/microsoft.public.windowsce.embedded/2095530/1/Default.aspx

I placed eboot at the start of Flash chip whose physical addreass base is
0x60000000, and place Os image at 0x60080000. In the Bootloadermain() I
added the following code:

case BL_JUMP:
// (5) final call to launch the image. never returned

if((dwAction == BL_JUMP)&&(dwLaunchAddr == 0))
{
EdbgOutputDebugString("marviny -- BL_JUMP mode returned from
OEMPreDownload()!!!!\n");
dwLaunchAddr = 0x60080000;
EdbgOutputDebugString("So we JUMP to default address at 0x%X...\r\n",
dwLaunchAddr);
//
// Delay 1 Millisecond to flush the Uart fifo and stop the UART.
//
if(bEthLaunch)
{
DelayInuSec(1000);
// OEMUartStop();
}

((PFN_LAUNCH)(dwLaunchAddr))();

EdbgOutputDebugString("SpinForever...\r\n");
SPIN_FOREVER;
}

There is no Launch() function in my Bsp, but there is a typedef:

typedef VOID (*PFN_LAUNCH)(VOID);

'Kernel Porting > Windows 관련' 카테고리의 다른 글

WINCE 어드레스 맵핑 ....  (0) 2008.02.08



// BANK_A BOOT AREA
#define  OEM_MEM_BOOTLOADER_START  0x00000000
#define  OEM_MEM_BOOTLOADER_SIZE  0x200
#define  OEM_MEM_BOOTLOADER_SAVE_START  0x00008000
#define  OEM_MEM_BOOTLOADER_SAVE_SIZE  0x200
#define  OEM_MEM_PAGE_TABLE_START  0x00010000
#define  OEM_MEM_PAGE_TABLE_SIZE  0x1000
#define  OEM_MEM_BOOTARG_START  0x00018000
#define  OEM_MEM_BOOTARG_SIZE  0x600
#define  OEM_MEM_MBOOT_START  0x00020000
#define  OEM_MEM_MBOOT_SIZE  0x3f800
#define  OEM_MEM_IMAGE_SHARE_ARGS_PA_START  0x00080000
#define  OEM_MEM_IMAGE_SHARE_ARGS_PA_SIZE  0x180000
#define  OEM_MEM_OSIMAGE_START  0x80200000
#define  OEM_MEM_NANDSAVE_BUFFER_START  0x83900000


#include <windows.h>

#include <bsp.h>

typedef void (ApplicationFunction)(void);
#define ApplicationStart ((ApplicationFunction*)OEM_MEM_MBOOT_START)

extern"C"
extern void ReadNand( unsigned int* Dst, unsigned int NANDPage, int Size4 );

extern"C"
void BootMain(void)
{
 // Nand use fixed power
 // Nand interface is not shared any gpio
 // NAND_nWP seted to Low ( only read, write protected ) but Anything will do.
 //--------------------------------------------------------------------------
 // Read copy from NAND Flash
 ReadNand( (unsigned int*)OEM_MEM_MBOOT_START, OEM_NAND_MBOOT_START, OEM_NAND_MBOOT_SIZE);

 for (register int i=0; i<OEM_NAND_BOOTLOADER_SIZE; i++)  //copy bootloader except cpu vectors area for nand save
  *(unsigned char*)(i+OEM_MEM_BOOTLOADER_SAVE_START)= *(unsigned char *)(i);

 //--------------------------------------------------------------------------
 // go to MultiBootloader
 ApplicationStart();
}




OEM_SYSTEM_ADDRTABLE.h

// Virtual,  Physical,  Size(MB)
// Hole Space Address
 0x80000000,  0x00000000,    64,   // BANK_A
 0x88000000,  0x40000000,    32,   // BANK_B
 0x90200000,  0x80000000,     1,   // nSCS0
 0x90300000,  0x84000000,     1,   // nSCS1
 0x90400000,  0x88000000,     1,   // nSCS2
 0x90500000,  0x8c000000,     1,   // DTK:EthernetI/O
 0x90600000,  0x8d000000,     1,   // DTK:EthernetMem
 0x90700000,  0x8e000000,     1,   // DTK:SRAM
 0x90800000,  0x8f000000,     1,   // DTK:Debug
 0x90900000,  0x9c000000,     1,   // NANDFlash
 0x94000000,  0xa0000000,    64,   // PCMCIA#0IO
 0x98000000,  0xa4000000,    64,   // PCMCIA#1
 0x9c000000,  0xa8000000,    64,   // PCMCIA#0MEM
 0x90a00000,  0xbc000000,     1,   // IDE
 0x90000000,  0xc0000000,     1,   // NOMALIO
 0x90100000,  0xe0000000,     1,   // FASTIO
 0,



#include <windows.h>
#include <mes_mp2530f.h>
#include <OEM_SYSTEM.h>

const DWORD g_oalAddressTable[] = {
 #include "OEM_SYSTEM_ADDRTABLE.h"
};

extern void KernelStart(PDWORD pAddress);

void BootMain(PDWORD pAddressTable)
{
 KernelStart(pAddressTable);
}






DirectX 9.0 한글 사이트 ...

http://www.telnet.or.kr/sec_directx/
후지쯔 노트북 A6020DuoX2  WIN-XP / Vista 64 bit 설치 가이드 ....


자료출처 : http://www.kelp.or.kr

== 다시 나온 pixel 찍기 소스
===============================
/*
* fbpixel2.c : Frame buffer draw pixel example(using mmap)
*
* Copyright(C) 2002 holelee
*
*/

#include <stdio.h>
#include <stdlib.h> /* for exit */
#include <unistd.h> /* for open/close .. */
#include <fcntl.h> /* for O_RDWR */
#include <sys/ioctl.h> /* for ioctl */
#include <sys/mman.h> /* for mmap */
#include <linux/fb.h> /* for fb_var_screeninfo, FBIOGET_VSCREENINFO */

#define FBDEVFILE "/dev/fb"

typedef unsigned char ubyte;

unsigned short makepixel(ubyte r, ubyte g, ubyte b)
{
return (unsigned short)(((r>>3)<<11)|((g>>2)<<5)|(b>>3));
}

int main()
{
int fbfd;
int ret;
struct fb_var_screeninfo fbvar;
unsigned short pixel;
int offset;
unsigned short *pfbdata;

fbfd = open(FBDEVFILE, O_RDWR);
if(fbfd < 0)
{
perror("fbdev open");
exit(1);
}

ret = ioctl(fbfd, FBIOGET_VSCREENINFO, &fbvar);
if(ret < 0)
{
perror("fbdev ioctl");
exit(1);
}

if(fbvar.bits_per_pixel != 16)
{
fprintf(stderr, "bpp is not 16\n");
exit(1);
}

pfbdata = (unsigned short *) mmap(0, fbvar.xres*fbvar.yres*16/8, PROT_READ|PROT_WRITE, MAP_SHARED, fbfd, 0);

if((unsigned)pfbdata == (unsigned)-1)
{
perror("fbdev mmap");
exit(1);
}

/* red pixel @ (0,0) */
pixel = makepixel(255,0,0); /* red pixel */
*pfbdata = pixel;

/* green pixel @ (100,50) */
offset = 50*fbvar.xres+100;
pixel = makepixel(0,255,0); /* green pixel */
*(pfbdata+offset) = pixel; /* draw pixel */


/* blue pixel @ (50,100) */
offset = 100*fbvar.xres+50;
pixel = makepixel(0,0,255); /* blue pixel */
*(pfbdata+offset) = pixel; /* draw pixel */

/* white pixel @ (100,100) */
offset = 100*fbvar.xres+100;
pixel = makepixel(255,255,255); /* white pixel */
*(pfbdata+offset) = pixel; /* draw pixel */

munmap(pfbdata, fbvar.xres*fbvar.yres*16/8);
close(fbfd);
exit(0);
return 0;
}

2007년 9월초 수원 영통 홈플러스에서 후지쯔 노트북을 100 만원에 구입했다.
창업하기전에 제품개발을 집에서 하다보니 데스크톱으로 4년전에 구입한 삼보제품말고 큰마음먹고 하나 더 구입하게 되었다.  4 달 가까이 임베디드 S/W 개발용으로 후지쯔 노트북을 사용했는데 그다지 문제점은 없었다.
사용자 삽입 이미지


그리고 개인 기술자료 보관을 위해 LG XTick USB 메모리를 4 GB 와 2 GB 두개를 각각 5 만 5 천원과 3 만 6 천원에 구입해서 1 달 가까이 쓰고 있는데 특별히 문제가 없었다.


 
  

+ Recent posts