RISC-V MCU中文社区

【求助】 【求助】flash模式在最初程序启动时如何修改对应的寄存器

发表于 开源蜂鸟E203 2022-09-07 10:30:01
8
236
0

flash模式时指令启动时是flash模式通过IDE程序从自动到itcm中,请问在这个过程中flash寄存器是如何配置的,比如IDE程序中应该是有一个文件负责启动时候默认配置这些寄存器(如spi_ffmt寄存器)的,也就是负责调用hbirdv2_spi.c和hbirdv2_spi.h的,但是似乎在system_hbirdv2.c中没看到相关的调用。

喜欢0
用户评论 (8)
  • dyli

    2022-09-28 16:29:42 dyli 1#

    胡灿

    启动代码在startup_hbirdv2.S里面,从flash搬运数据到itcm也是在这个里面操作的,可以看看注释

    我用BRAM模拟内置FLASH来启动的话,应该要设置那些地方呢,工程是用FLASH模式,但是能下载程序,不能运行程序

  • yishao

    2022-09-26 19:01:35 yishao 2#

    yishao

    好的,我去看看,感谢

        /* ===== Startup Stage 3 ===== */

        /*

         * Load code section frm FLASH to ILM

         * when code LMA is different with VMA

         */

        la a0, _ilm_lma

        la a1, _ilm

        /* If the ILM phy-address same as the logic-address, then quit */

        beq a0, a1, 2f

        la a2, _eilm

        bgeu a1, a2, 2f

    1:

        /* Load code section if necessary */

        lw t0, (a0)

        sw t0, (a1)

        addi a0, a0, 4

        addi a1, a1, 4

        bltu a1, a2, 1b

    2:

        /* Load data section */

        la a0, _data_lma

        la a1, _data

        la a2, _edata

        bgeu a1, a2, 2f

    1:

        lw t0, (a0)

        sw t0, (a1)

        addi a0, a0, 4

        addi a1, a1, 4

        bltu a1, a2, 1b

    2:

        /* Clear bss section */

        la a0, __bss_start

        la a1, _end

        bgeu a0, a1, 2f

    1:

        sw zero, (a0)

        addi a0, a0, 4

        bltu a0, a1, 1b

    2:

        /*

         * Call vendor defined SystemInit to

         * initialize the micro-controller system

         */

        call SystemInit

        /* Call global constructors */

        la a0, __libc_fini_array

        call atexit

        /* Call C/C++ constructor start up code */

        call __libc_init_array

        /* do pre-init steps before main */

        call _premain_init

        /* ===== Call Main Function ===== */

        /* argc = argv = 0 */

        li a0, 0

        li a1, 0

    胡总监,我看了这部分汇编应该只是把flash的代码按地址赋给ilm中,相关的ld文件似乎也是划分内存空间和赋值,请问从flash启动相关的spi寄存器的赋值是否是在e203的verilog中,使用reset的默认值进行寄存器配置呢,并不涉及软件部分呢?

  • yishao

    2022-09-08 16:02:45 yishao 3#

    胡灿

    启动代码在startup_hbirdv2.S里面,从flash搬运数据到itcm也是在这个里面操作的,可以看看注释

    好的,我去看看,感谢

  • 胡灿

    2022-09-08 15:56:54 胡灿 4#

    yishao

    想要改的地方是指令从flash加载到itcm那个初始启动的过程。

    启动代码在startup_hbirdv2.S里面,从flash搬运数据到itcm也是在这个里面操作的,可以看看注释

  • yishao

    2022-09-08 15:24:36 yishao 5#

    yishao

    比如修改ffmt或者fmt

    想要改的地方是指令从flash加载到itcm那个初始启动的过程。

  • yishao

    2022-09-08 15:18:32 yishao 6#

    yishao

    但是现在想要改flash的工作模式,比如从read模式切换到fast read模式,但是不知道软件那边在哪里配置启动的时候的寄存器

    比如修改ffmt或者fmt

  • yishao

    2022-09-08 15:17:57 yishao 7#

    胡灿

    默认配置是工作在XIP模式,所以读取flash就可以直接访问地址

    但是现在想要改flash的工作模式,比如从read模式切换到fast read模式,但是不知道软件那边在哪里配置启动的时候的寄存器

  • 胡灿

    2022-09-08 15:14:47 胡灿 8#

    默认配置是工作在XIP模式,所以读取flash就可以直接访问地址

yishao

yishao 实名认证

懒的都不写签名

积分
问答
粉丝
关注
  • RV-STAR 开发板
  • RISC-V处理器设计系列课程
  • 培养RISC-V大学土壤 共建RISC-V教育生态
RV-STAR 开发板