Hi, I used the foc_x86_32 platform to try part_blk run script ,there was a error.
[init -> atapi_drv] 5 and below: yes enabled: yes [init -> atapi_drv] PRD base at 002f9000 (physical) at 00002000 (virtual) [init -> atapi_drv] Device initialized! Enabling interrupts ... Error: Test execution timed out make: *** [run/part_blk] Error 254
I try to find where is wrong and I get it
I add some print function in file : genodedir/os/src/drivers/atapi/ata_device.cc
void Ata::Device::read_capacity() { _block_start = 0; _block_size = 512;
enum { CMD_NATIVE_MAX_ADDRESS = 0xf8 };
if (_lba48) { PERR("_LBA48 TRUE"); //PERR("dev_num= %c\n",dev_num()); PERR("dev_num= %d\n",dev_num()); if (!reg_non_data_lba48(dev_num(), CMD_NATIVE_MAX_ADDRESS, 0, 1, 0UL, 0UL)) { PERR("reg in");
_block_end = _pio->inb(CB_SN); /* 0 - 7 */ _block_end |= _pio->inb(CB_CL) << 8; /* 8 - 15 */ _block_end |= _pio->inb(CB_CH) << 16; /* 16 - 23 */ _block_end |= _pio->inb(CB_DH) << 24; /* 24 - 31 */ } PERR("reg out"); } else { ...
and log message like this
[init -> atapi_drv] Bus master interface base addr: 0000c040 (I/O) secondary (no) (supported) [init -> atapi_drv] LBA48 [init -> atapi_drv] UDMA Modes supported: [init -> atapi_drv] 0 and below: yes enabled: no [init -> atapi_drv] 1 and below: yes enabled: no [init -> atapi_drv] 2 and below: yes enabled: no [init -> atapi_drv] 3 and below: yes enabled: no [init -> atapi_drv] 4 and below: yes enabled: no [init -> atapi_drv] 5 and below: yes enabled: yes [init -> atapi_drv] PRD base at 002f9000 (physical) at 00002000 (virtual) [init -> atapi_drv] Device initialized! Enabling interrupts ... [init -> atapi_drv] _LBA48 TRUE [init -> atapi_drv] dev_num= 0 Error: Test execution timed out make: *** [run/part_blk] Error 254
I think the dev_num =0 is the reason to cause my issue , but i can not solve it . Any help is appreciated.
Regards Yuqing Wang