Member | Action | Date |
---|---|---|
![]() |
Replied to
F34x/F38x bInterval Serious Issue (Get/Set Idle too)
Yah, it’s BIOS bug.
Tsuneo |
Nov 07 2017, 4:10 PM |
![]() |
Replied to
F34x/F38x bInterval Serious Issue (Get/Set Idle too)
Where does the hang occur, BIOS or Windows? { // interface_descriptor hid_interface_descriptor 0x09, // bLength 0x04, // bDescriptorType 0x00, // bInterfaceNumber 0x00, // bAlternateSetting 0x02, // bNumEndpoints 0x03, // bInterfaceClass (3 = HID) 0x00, // bInterfaceSubClass <------ 0x00:No Subclass, 0x01: Boot Interface Subclass 0x00, // bInterfaceProcotol 0x00 // iInterface },
This setup packet means Set_Idle(0); "indefinite" interval, which is always put by Windows at enumeration. In principle by this "indefinite" value, Windows expect a report, just when any change occurs. But actually, though it is bad practice, Windows should accept reports at every interval, even if they are identical reports. In this reason, report duration control have not been implemented positively.
I'm not sure NAKs would work around this issue (maybe not). |
Nov 07 2017, 4:10 PM |
![]() |
Replied to
F34x/F38x full speed 8 byte EP0 packet size?
I picked up old SiLabs IDE (and examples) v2.61 from my archive.
A couple of Get_Descriptor error were seen after above one. At last, Windows gave up enumeration. F34x_USB_ISR.c void Handle_Setup(void) { ... if (ControlReg & rbSUEND) // If last setup transaction was ended { // prematurely then set POLL_WRITE_BYTE(E0CSR, rbDATAEND); // <------------------ delete this line POLL_WRITE_BYTE(E0CSR, rbSSUEND); // Serviced Setup End bit and return EP0 Ep_Status[0] = EP_IDLE; // to idle state } |
Nov 07 2017, 4:10 PM |
![]() |
Replied to
F34x/F38x full speed 8 byte EP0 packet size?
I remember,
// USB Core Registers #define BASE 0x00 #define FADDR BASE #define POWER BASE + 0x01 #define IN1INT BASE + 0x02 #define OUT1INT BASE + 0x04 #define CMINT BASE + 0x06 #define IN1IE BASE + 0x07 #define OUT1IE BASE + 0x09 #define CMIE BASE + 0x0B #define FRAMEL BASE + 0x0C #define FRAMEH BASE + 0x0D #define INDEX BASE + 0x0E #define CLKREC BASE + 0x0F #define INMAX BASE + 0x10 // <-- #define E0CSR BASE + 0x11 #define EINCSRL BASE + 0x11 #define EINCSRH BASE + 0x12 #define OUTMAX BASE + 0x13 // <-- #define EOUTCSRL BASE + 0x14 #define EOUTCSRH BASE + 0x15 #define E0CNT BASE + 0x16 #define EOUTCNTL BASE + 0x16 #define EOUTCNTH BASE + 0x17 #define FIFO_EP0 BASE + 0x20 #define FIFO_EP1 BASE + 0x21 #define FIFO_EP2 BASE + 0x22 #define FIFO_EP3 BASE + 0x23
While these registers are left in the default value (0), the SIE isn’t aware of Max Packet Size, at all. Actually, above F34x_MouseExample doesn’t touch to these registers. If your stack would set up these registers, your stack could be set them wrongly.
Tsuneo |
Nov 07 2017, 4:10 PM |
![]() |
Replied to
F34x/F38x full speed 8 byte EP0 packet size?
What is the USB stack on which you are working?
I tested F34x_MouseExample (Si8051 SDK v2.0.0) - Simplicity Studio v2, on SiLabs F34x dev board. It worked without any problem on 8, 16, 32 and 64 of bMaxPacketSize0
F3xx_USB0_InterruptServiceRoutine.h // Define Endpoint Packet Sizes #ifdef _USB_LOW_SPEED_ #define EP0_PACKET_SIZE 0x08 // This value can be 8,16,32,64 // depending on device speed, see // USB spec #else //#define EP0_PACKET_SIZE 0x40 //#define EP0_PACKET_SIZE 0x20 //#define EP0_PACKET_SIZE 0x10 #define EP0_PACKET_SIZE 0x08 #endif /* _USB_LOW_SPEED_ */
Tsuneo |
Nov 07 2017, 4:10 PM |
![]() |
Replied to
C8051Fxxxx Development on Linux or MAC?
Not so much any more. SiLabs have opened FLASH programming protocols over JTAG and C2 interfaces. AN105 Programming FLASH through the JTAG Interface F12xJTAGProgramming.zip attached to this MCU KB AN127 FLASH Programming via the C2 Interface and AN127SW.zip Thanks to Matt Otto, most of C2 debug stuff has been revealed. c2_prog2.tar.bz2 on Wojtek page. It worked well. I've also used the information to play with SiLabs C2 MCUs. Locking RAM access through C2 dbg IF The rest is just matching it to gdb, etc. I don't agree with the EC2DRV project, because they've tried to trace EC2/EC3 (USB one) protocol, which SiLabs have often changed with the firmware update of the adapters. They stick to use EC2/EC3 as is, but it's better to make up their own adapter, or even their own firmware FLASHed to EC2/EC3. And then, the project would have survived, without so much update. Tsuneo [This message has been edited by Tsuneo (edited December 16, 2009).] |
Oct 28 2017, 1:52 PM |
![]() |
Replied to
lost watch window?
SiLabs IDE is a MDI (Multi-Document Interface) application with docking panes. The watch window (pane) should be displayed somewhere in the parent window.
Show more
It may be shrunk because so many panes (disasm window and other debugger windows) are displayed on the parent window. Close other panes temporarily, and the watch window will be displayed. Tsuneo |
Oct 28 2017, 1:52 PM |
![]() |
Replied to
New user: debugging and line numbers
for the assemble I have blinky.asm
Show more
In the left hand box (project files) I have blinky.c and bliny.asm for assemble and compile but only blinky.rel for the linker option. You don't need to register blinky.asm which is generated by the compiler, in either pane. Register just the original source file, either C or asm My other question was getting the editor to display line numbers, is that possible? Maybe not. I'm usually using UltraEdit for coding. ![]() Tsuneo [This message has been edited by Tsuneo (edited April 04, 2008).] |
Oct 28 2017, 1:52 PM |
![]() |
Replied to
New user: debugging and line numbers
Hello mike,
Show more
The flags in the tool chain are fine. Absolute OMF file name doesn't need any extension. a) Is there any compile error message? Scroll the bottom Build message pane of the IDE and find error messages. b) Are all of .c and .asm files on the left pane assigned to Build (with down arrow mark)? Tsuneo |
Oct 28 2017, 1:50 PM |
![]() |
Replied to
New user: debugging and line numbers
for the assemble I have blinky.asm
Show more
In the left hand box (project files) I have blinky.c and bliny.asm for assemble and compile but only blinky.rel for the linker option. You don't need to register blinky.asm which is generated by the compiler, in either pane. Register just the original source file, either C or asm My other question was getting the editor to display line numbers, is that possible? Maybe not. I'm usually using UltraEdit for coding. ![]() Tsuneo [This message has been edited by Tsuneo (edited April 04, 2008).] |
Oct 28 2017, 1:49 PM |