驱动内存映射修改为缺页模拟方式
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
cmake_minimum_required(VERSION 3.13)
|
||||
|
||||
# set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ")
|
||||
# set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0 ")
|
||||
|
||||
#appfs lib
|
||||
file(GLOB appfs_src src/appfs.c src/appfs_open.c)
|
||||
|
||||
@@ -14,21 +14,21 @@ static int drv_iomem_init(void)
|
||||
{
|
||||
addr_t addr;
|
||||
msg_tag_t tag;
|
||||
tag = u_vmam_alloc(VMA_PROT, vma_addr_create(VPAGE_PROT_RWX, 0, 0),
|
||||
tag = u_vmam_alloc(VMA_PROT, vma_addr_create(VPAGE_PROT_RWX, VMA_ADDR_PAGE_FAULT_SIM, 0),
|
||||
XMC_MEM_BASE - PERIPH_BASE, PERIPH_BASE, &addr);
|
||||
if (msg_tag_get_val(tag) < 0)
|
||||
{
|
||||
printf("periph mem alloc failed..\n");
|
||||
return -1;
|
||||
}
|
||||
tag = u_vmam_alloc(VMA_PROT, vma_addr_create(VPAGE_PROT_RWX, 0, 0),
|
||||
tag = u_vmam_alloc(VMA_PROT, vma_addr_create(VPAGE_PROT_RWX, VMA_ADDR_PAGE_FAULT_SIM, 0),
|
||||
0x4000000, XMC_MEM_BASE, &addr);
|
||||
if (msg_tag_get_val(tag) < 0)
|
||||
{
|
||||
printf("periph mem alloc failed..\n");
|
||||
return -1;
|
||||
}
|
||||
tag = u_vmam_alloc(VMA_PROT, vma_addr_create(VPAGE_PROT_RWX, 0, 0),
|
||||
tag = u_vmam_alloc(VMA_PROT, vma_addr_create(VPAGE_PROT_RWX, VMA_ADDR_PAGE_FAULT_SIM, 0),
|
||||
0x10000, XMC_REG_BASE, &addr);
|
||||
if (msg_tag_get_val(tag) < 0)
|
||||
{
|
||||
|
||||
@@ -79,7 +79,7 @@ static int display_test(void)
|
||||
printf("display addr:0x%x\n", info.display_addr);
|
||||
msg_tag_t tag;
|
||||
addr_t addr;
|
||||
tag = u_vmam_alloc(VMA_PROT, vma_addr_create(VPAGE_PROT_RWX, 0, 0),
|
||||
tag = u_vmam_alloc(VMA_PROT, vma_addr_create(VPAGE_PROT_RWX, VMA_ADDR_PAGE_FAULT_SIM, 0),
|
||||
512, info.display_addr, &addr);
|
||||
if (msg_tag_get_val(tag) < 0)
|
||||
{
|
||||
|
||||
@@ -81,7 +81,7 @@ add_custom_target(
|
||||
COMMAND
|
||||
cp nes.elf ${CMAKE_SOURCE_DIR}/build/output/nes.elf
|
||||
COMMAND
|
||||
cp ${CMAKE_CURRENT_SOURCE_DIR}/nes_rom/sm.nes ${CMAKE_SOURCE_DIR}/build/output/cpio/
|
||||
cp ${CMAKE_CURRENT_SOURCE_DIR}/nes_rom/*.nes ${CMAKE_SOURCE_DIR}/build/output/cpio/
|
||||
)
|
||||
|
||||
add_dependencies(nes_dump nes.elf)
|
||||
|
||||
@@ -121,7 +121,7 @@ again:
|
||||
}
|
||||
msg_tag_t tag;
|
||||
addr_t addr;
|
||||
tag = u_vmam_alloc(VMA_PROT, vma_addr_create(VPAGE_PROT_RWX, 0, 0),
|
||||
tag = u_vmam_alloc(VMA_PROT, vma_addr_create(VPAGE_PROT_RWX, VMA_ADDR_PAGE_FAULT_SIM, 0),
|
||||
512, info.display_addr, &addr);
|
||||
if (msg_tag_get_val(tag) < 0)
|
||||
{
|
||||
|
||||
@@ -65,7 +65,7 @@ int dev_regs_map(mk_dev_t *dev, void *fdt)
|
||||
reg[1] = fdt32_to_cpu((fdt32_t)reg_raw[i + 1]);
|
||||
|
||||
printf("reg:0x%x size:0x%x\n", reg[0], reg[1]);
|
||||
tag = u_vmam_alloc(VMA_PROT, vma_addr_create(VPAGE_PROT_RWX, 0, 0),
|
||||
tag = u_vmam_alloc(VMA_PROT, vma_addr_create(VPAGE_PROT_RWX, VMA_ADDR_PAGE_FAULT_SIM, 0),
|
||||
reg[1], reg[0], &vaddr);
|
||||
if (msg_tag_get_val(tag) < 0)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user