[U-Boot-Users] Problems with an E1000 driver

Dear All
This is my first post - so a quick background. In my spare time I am working on the Qnap Turbostation series of NAS devices; which uses an extended version of U-Boot 1.2. (the modified code - only sandpoint8245.c can be obtained from Qnap). Further board specifications and info can be found at http://scratchpad.wikia.com/wiki/Open_Turbostation:TS101
A colleague is looking at porting the existing U-Boot to version 1.6 - and trying to enable network support (the Qnap version is based on sandpoint 8245). There are two board variants - one with an RTL 8139 ethernet driver (which seems to work no problems); and mine which has an Intel 8250 OEM.
Currently my version of the boot code fails; and generates program exceptions. Working backwards we have identified that the failure is occurring in e1000.c between lines 2580 and 2625 - within the e1000_sw_init function. In particular I suspect the code problem is with reading the E1000_STATUS register. <<<>>> if (hw->mac_type >= e1000_82543) { uint32_t status = E1000_READ_REG(hw, STATUS); <<<>>>
I had a quick look on the tracker list; and google but was not able to find anything specific. (perhaps im just blind ;-)
Currently we daisy chain to the new U-Boot version (as JTAG access is somewhat unreliable at the moment). Thus we download the new version to RAM; then copy it to spare flash; and issue the 'go' command from the U-Boot prompt. I know this is not the recommended path - and therefore wonder if this might also be the associated with the problem. A program trace is attached.
I would be grateful if someone could provide some pointers about what might be going wrong. I do know (from debug messages) that the code point never reaches the end of the function - i.e. return E1000_SUCCESS;
Many thanks,
Marc
Ps Please note: to aid initial debugging I had issued extra printf statements - showing "Marc:...".
participants (1)
-
Marc Lawrence