-
看不懂啊
-
我倒是发现,我自己没有用好KEIL。IAR没有用过!从51到现在的M3,都是用的KEIL。萝卜酸菜,各有所爱嘛!
-
RESULT Joystick_Data_Setup(u8 RequestNo)
{
u8 *(*CopyRoutine)(u16);
?? CopyRoutine = NULL;
if ((RequestNo == GET_DESCRIPTOR)
&& (Type_Recipient == (STANDARD_REQUEST | INTERFACE_RECIPIENT))
&& (pInformation->USBwIndex0 == 0))
{
if (pInformation->USBwValue1 == REPORT_DESCRIPTOR)
{
CopyRoutine = Joystick_GetReportDescriptor;
}
else if (pInformation->USBwValue1 == HID_DESCRIPTOR_TYPE)
{
CopyRoutine = Joystick_GetHIDDescriptor;
}
} /* End of GET_DESCRIPTOR */
/*** GET_PROTOCOL ***/
else if ((Type_Recipient == (CLASS_REQUEST | INTERFACE_RECIPIENT))
&& RequestNo == GET_PROTOCOL)
{
CopyRoutine = Joystick_GetProtocolValue;
}
?/***********************************************************
?上面是已有的,下面是我添加的?
*****************/
else if (pInformation->USBbmRequestType == CLASS_REQUEST|INTERFACE_RECIPIENT
&& RequestNo == SET_REPORT)
? {?
CopyRoutine = My_GetReport;
}
? else if(pInformation->USBbmRequestType == 0xa1) ?
? {
CopyRoutine = My_Cmd;
}
else
{
}
if (CopyRoutine == NULL)
{
return USB_UNSUPPORT;
}
pInformation->Ctrl_Info.CopyData = CopyRoutine;
pInformation->Ctrl_Info.Usb_wOffset = 0;
(*CopyRoutine)(0);
return USB_SUCCESS;
}
-
marking
-
unsigned int index="是";
是错的。
char hz[3]="是";
-
还是没搞定.
板子是友善之臂的 s3c2410, 应该跟其他2410的板子电路是通用的, 烧过自带的linux, 触摸屏功能正常.
驱动的init部分是这样的:
static int __init s3c2410_ts_init(void)
{
int ret;
tsEvent = tsEvent_dummy;
ret = register_chrdev(0, DEVICE_NAME, &s3c2410_fops);
if (ret < 0) {
printk(DEVICE_NAME " can't get major number\n");
return ret;
}
else
{
printk("S3C2410 gpio_led_driver register success!!! \n");
}
tsMajor = ret;
// clk_enable(adc_clock);//
/*
#if 0
set_GPIO_mode(GPIO106_nYPON_MD);
set_GPIO_mode(GPIO105_YMON_MD);
set_GPIO_mode(GPIO104_nXPON_MD);
set_GPIO_mode(GPIO103_XMON_MD);
GPUP(GPIO106_nYPON) |= GPIO_bit(GPIO106_nYPON);
GPUP(GPIO105_YMON) &= GPIO_bit(GPIO105_YMON);
GPUP(GPIO104_nXPON) |= GPIO_bit(GPIO104_nXPON);
GPUP(GPIO103_XMON) &= GPIO_bit(GPIO103_XMON);
#else
// set_gpio_ctrl(GPIO_YPON);
// set_gpio_ctrl(GPIO_YMON);
// set_gpio_ctrl(GPIO_XPON);
// set_gpio_ctrl(GPIO_XMON);
s3c2410_gpio_cfgpin(S3C2410_GPG12, S3C2410_GPG12_XMON);
s3c2410_gpio_cfgpin(S3C2410_GPG13, S3C2410_GPG13_nXPON);
s3c2410_gpio_cfgpin(S3C2410_GPG14, S3C2410_GPG14_YMON);
s3c2410_gpio_cfgpin(S3C2410_GPG15, S3C2410_GPG15_nYPON);
#endif
*/
adc_clk = clk_get(NULL, "adc");
if(!adc_clk)
{
/*错误处理*/
printk(KERN_ERR "falied to find adc clock source\n");
return -ENOENT;
}
clk_enable(adc_clk);
base2= ioremap(0x4a000008,0x08); //中断有效
__raw_writel(0x00000000,(base2+(0x00)));
base3= ioremap(0x4a00001c,0x08);//中断有效
__raw_writel(0x00000000,(base3+(0x00)));
base1= ioremap(0x56000060,0x20);//GPG口定义成触摸口
// __raw_writel(0xff000000,(base1+(0x00)));//io口定义成触摸功能
__raw_writel(0x00000800,(base1+(0x08)));//
base_addr = ioremap(S3C2410_PA_ADC,0x20);
__raw_writel(0x00007fc0, S3C2410_GPGCON);
//__raw_writel(30000, S3C2410_ADCDLY); //added by hzh
//__raw_writel(0x000000d3,S3C2410_ADCTSC);
ret = request_irq(IRQ_ADC, s3c2410_isr_adc, SA_INTERRUPT,DEVICE_NAME, s3c2410_isr_adc);
// printk(ret "\n");
if (ret) goto adc_failed;
ret = request_irq(IRQ_TC, s3c2410_isr_tc, SA_INTERRUPT,DEVICE_NAME, s3c2410_isr_tc);
// printk(ret "\n");
printk("irq-tc:%d,%d\n",EIO,ret);
if (ret) goto tc_failed;
wait_down_int();
printk("TP1 ok \n");
return 0;
tc_failed:
printk("tc failed\n");
free_irq(IRQ_ADC, s3c2410_isr_adc);
adc_failed:
printk( "adc failed\n");
return ret;
}
这一部分执行都是没问题, 我cat /proc/interrupt发现里面有 79 80两个中断出现, 但是触发次数为0. 目前 无论如何就是不能进入IRQ_TC中断处理程序.
我快麻木了. 求助呀.
-
顶贴接分,我是秀才...
-
听到了吗,要学费了,呵呵,希望你能够无师自通!
-
我原本想问的是:对于一个硬件设备,如果我在一台电脑上远程管理它,除了走浏览器和telnet到该设备上以外,是不是用过专门的软件也可以进行管理。
看到有的防火墙、IDS之类的硬件设备可以通过配套的客户端软件进行远程配置了。
问一个新问题:像这种情况客户端软件一般通过什么协议访问防火墙、IDS之类的硬件设备呢?如果中间再隔着防火墙,也得开特定的端口吧?
-
系统已经起来了,但是显示一片空白,不知是显存地址冲突还是什么原因,打印信息如下:
Microsoft Windows CE Ethernet Bootloader Common Library Version 1.1 Built Apr 12 2010 09:47:46
Microsoft Windows CE Bootloader for the Samsung SMDK2440 Version 2.4 Built Apr 14 2010
FMD: ReadID (Mfg=ec, Dev=76)
FMD_Init: finished successful
FMD_Init: reserved_blocks 104
FMD_GetInfo
Press [ENTER] to launch image stored on boot media, or [SPACE] to enter boot monitor.
Initiating image launch in 5 seconds.
Ethernet Boot Loader Configuration:
0) IP address: 192.168.1.115
1) Subnet mask: 255.255.255.0
2) DHCP: Disabled
3) Boot delay: 5 seconds
4) Reset to factory default configuration
5) Startup image: LAUNCH EXISTING
6) Program disk image into SmartMedia card: Enabled
7) Program CS8900 MAC address (00:11:22:33:44:55)
8) Kernel Debugger: DISABLED
9) Format Boot Media for BinFS
F) Low-level format the Smart Media card
D) Download image now
L) LAUNCH existing Boot Media image
U) DOWNLOAD image now(USB)
R) Read Configuration
W) Write Configuration Right Now
Enter your selection: u
System ready!
Preparing for download...
Please send the Image through USB.
pUSBCtrlAddr->OCSR1.out_pkt_rdy = 0x1
Ep3Handler : downPtIndex = 0x30800040
Download BIN file information:
-----------------------------------------------------
[0]: Base Address=0x80200000 Length=0x22620b0
-----------------------------------------------------
ROMHDR at Address 80200044h
Writing single region/multi-region update, dwBINFSPartLength: 36053168
IsValidMBR: MBR sector = 0x1a0
g_pbMBRSector[0] = 0xe9
g_pbMBRSector[1] = 0xfd
g_pbMBRSector[2] = 0xff
g_pbMBRSector[SECTOR_SIZE-2] = 0x55
g_pbMBRSector[SECTOR_SIZE-1] = 0xaa
OpenPartition: Partition Exists=0x1 for part 0x21.
BP_SetDataPointer at 0x0
WriteData: Start = 0x0, Length = 0x22620b0.
Log2Phys: Logical 0x1c0 -> Physical 0x360
IsBlockBad(43A): TRUE
Updateded TOC!
IsValidMBR: MBR sector = 0x1a0
g_pbMBRSector[0] = 0xe9
g_pbMBRSector[1] = 0xfd
g_pbMBRSector[2] = 0xff
g_pbMBRSector[SECTOR_SIZE-2] = 0x55
g_pbMBRSector[SECTOR_SIZE-1] = 0xaa
OpenPartition: Partition Exists=0x1 for part 0xb.
TOC {
dwSignature: 0x434F544E
BootCfg {
ConfigFlags: 0x830
BootDelay: 0x5
ImageIndex: 1
IP: 192.168.1.115
MAC Address: 00:11:22:33:44:55
Port: 0.0.0.0
SubnetMask: 255.255.255.0
}
ID[0] {
dwVersion: 0x20004
dwSignature: 0x45424F54
String: 'eboot.nb0'
dwImageType: 0x2
dwTtlSectors: 0x200
dwLoadAddress: 0x80038000
dwJumpAddress: 0x80038000
dwStoreOffset: 0x0
sgList[0].dwSector: 0xA0
sgList[0].dwLength: 0x200
}
ID[1] {
dwVersion: 0x1
dwSignature: 0x43465348
String: ''
dwImageType: 0x2
dwTtlSectors: 0x11311
dwLoadAddress: 0x80200000
dwJumpAddress: 0x8022C480
dwStoreOffset: 0x0
sgList[0].dwSector: 0x360
sgList[0].dwLength: 0x11311
}
chainInfo.dwLoadAddress: 0X00000000
chainInfo.dwFlashAddress: 0X00000000
chainInfo.dwLength: 0X00000000
}
waitforconnect
INFO: OEMLaunch: Jumping to Physical Address 0x3022C480h (Virtual Address 0x8022C480h)...
Windows CE Kernel for ARM (Thumb Enabled) Built on Aug 4 2008 at 18:38:38
ProcessorType=0920 Revision=0
sp_abt=ffff5000 sp_irq=ffff2800 sp_undef=ffffc800 OEMAddressTable = 8022c354
DCache: 8 sets, 64 ways, 32 line size, 16384 size
ICache: 8 sets, 64 ways, 32 line size, 16384 size
Sp=ffffc7cc
OEMIoControl: Unsupported Code 0x10100b4 - device 0x0101 func 45
OEMIoControl: Unsupported Code 0x101008c - device 0x0101 func 35
FMD: ReadID (Mfg=ec, Dev=76)
FMD_Init: finished successful
FMD_Init: reserved_blocks 104
FMD_GetInfo
IsBlockBad(6C): TRUE
IsBlockBad(43A): TRUE
OEMIoControl: Unsupported Code 0x1010104 - device 0x0101 func 65
OEMIoControl: Unsupported Code 0x10100c4 - device 0x0101 func 49
OEMIoControl: Unsupported Code 0x10100c4 - device 0x0101 func 49
OEMIoControl: Unsupported Code 0x10100d0 - device 0x0101 func 52
OEMIoControl: Unsupported Code 0x10100f8 - device 0x0101 func 62
+CS8900:DriverEntry
CS8900:CSInit failure!!
dm9000 init.
[dm9]: Chip signature is 0000291E
INFO: CReg2440Uart::CReg2440Uart using processor frequency reported by the OAL (50000000).
I2C Init
IIC IRQ mapping: [IRQ:27->sysIRQ:19].
Key: DLL_PROCESS_ATTACH.
[Pwrbtn2440.c] EINT_InitializeAddresses Success
[Pwrbtn2440.c] KEY_Init Sucessfully!
[Pwrbtn2440.c] Wait EINT4...
INFO: WAVEDEV.DLL: SetI2SClockRate: Using processor frequency reported by the OAL (50000000).
Prescaler:2
[Bak_hw.cpp] BL_InitializeAddresses - Success
BL_ON progress bar thread closed!
++S3C2440DISP::S3C2440DISP
[s3c2440disp.cpp] rGPCCON = 0xaaaaaaaa
[s3c2440disp.cpp] LCDCON1 = 0x6300179
[s3c2440disp.cpp] LCDCON2 = 0x1577c043
[s3c2440disp.cpp] LCDCON3 = 0x2c31f28
[s3c2440disp.cpp] LCDCON4 = 0xd80
[s3c2440disp.cpp] LCDCON5 = 0x14b09
--S3C2440DISP::InitDisplay done
DISPLAY:800*480
OEMIoControl: Unsupported Code 0x10100fc - device 0x0101 func 63
BL_OFF 复制代码
二楼那篇文章很牛,按照那文章,系统已经正常运行。
-
我的也是2410,交流一下
你的nand是小页的吧?
你的nand有没有做坏块处理,可能nand中快到128K的那些block有坏块,而你init.s中代码搬运时没有考虑
-
如果不想使用常用的U盘形式,就自己开发一个USB的驱动,接收PC的命令并访问WINCE设备的数据。
-
TI和LT 都有,MAX 也有。
-
我安装Windows Embedded CE 6.0失败,不知道Windows Embedded CE 6.0是什么?
-
友情帮顶下,一会找个高手帮你解答下。
-
极有可能是组件没有选全。
-
通常监控上用的模拟摄像头输出接口多是BNC,可转为AV输出。现在有不少USB视频采集盒,带有AV输入可通过USB接口与S3C2440连接。对于楼主的需求,存在两个难点:
1、需要视频采集盒的Windows CE驱动程序和SDK,除了我们正在开发的,我们目前没有发现有任何厂家提供CE驱动;
2、由于2440上带的是USB 1.1接口,因此视频采集盒势必具备视频编码压缩功能,比如MPEG4。而市面上很多PC上用的USB采集盒,比如easycap等,多是没有压缩的,没有USB2.0基本上没法用。我们已经开发出easycap在CE下的驱动,但在USB1.1接口上测试只能获得176x144大小的低质量实时图象。这样的话需要在2440上进行视频解码。在400MHz的ARM9上实现至少QVGA(320x240)的MPEG4实时解码并非易事。不过放心,我们有这样的软件解码器。
-
除了ZTG328外,其他人都是胡说八道,
这问题,当初我也遇到过,而且装了不下30次.每次都回滚
要解决这问题:
如果可以就拿个新的硬盘来安装xp和pb5
如果嫌麻烦就把pb5改在D:(和ce6不同目录)
这样就可以了. 试试
-
操作还需关键技术?我晕,你说话还挺能上纲上线的。。。。。。。。。。。。。
-
你在外部只RAM定义一个100的数组,无绝对地址条件下,编译看看结果。如果编译成功,建议看看反汇编。
IAR支持,只不过本身还不够完善,强烈建议在主程序中处理全局变量。