Hi Oak,
Your code looks fine, but where do these numbers come from?
void* vaddr = (void*) 0x1980000;
uintptr_t paddr = (uintptr_t) 0x119a7000;
vaddr should be the virtual address of a buffer to which the block
should be read, and paddr should be the physical address of this buffer.
- Alex
> ______________________________
On Thu, 2016-10-13 at 17:33 -0700, Norrathep Rattanavipanon wrote:
> Is there any example on how to use sdhc driver in
> (https://github.com/SEL4PROJ/projects_libs/tree/master/ )?libsdhcdrivers
>
>
> Currently, I'm struggling to read a block of data from micro-sd in
> seL4.
> I use the following code (assertions are omitted here for readability)
> to instantiate the driver :
>
>
>
>
> ps_io_mapper_t io_mapper = {0};
> error = sel4platsupport_new_io_mapper(simple, vspace, vka,
> &io_mapper);
>
> ps_dma_man_t dma_man = {0};
> error = sel4utils_new_page_dma_alloc(&vka, &vspace, &dma_man);
>
> ps_io_ops_t io_ops = {
> .io_mapper = io_mapper,
> .dma_manager = dma_man
> };
>
> sdio_host_dev_t* dev = (sdio_host_dev_t*) malloc(sizeof(*dev));
> assert(dev != NULL);
> memset(dev,0, sizeof(*dev));
>
>
> enum sdio_id id = sdio_default_id();
> error = sdio_init(id, &io_ops, dev);
>
> mmc_card_t* mmc_card = (mmc_card_t*) malloc(sizeof(*mmc_card));
> error = mmc_init(dev, &io_ops, mmc_card);
>
>
> void* vaddr = (void*) 0x1980000;
>
> uintptr_t paddr = (uintptr_t) 0x119a7000;
>
> long read_len = mmc_block_read(*mmc_card, 0, 5, vaddr, paddr, NULL,
> NULL);
>
>
>
> And the code's stuck in mmc_block_read function where interrupt status
> (BRR and BWR) are never on.
>
>
> Thanks in advance,
> Oak
>
>
>
>
> --
> Norrathep (Oak) Rattanavipanon
> M.S. in Computer Science
> University of California - Irvine
_________________
> Devel mailing list
> Devel@sel4.systems
> https://sel4.systems/lists/listinfo/devel