您尚未登录。

#1 Re: 全志 SOC » libxnes开源了,这是一款纯C99标准拥有超强的可移植性,可读性,可玩性的高精度NES模拟器库,纯手写打造,感兴趣的可以在这帖子里恰饭。 » 2024-10-14 09:29:52


贴一个倒带的演示视频,默认缓存30S,现在ppu部分占用内存较多,这个地方需要优化一下,降低对内存的要求。

#2 Re: 全志 SOC » libxnes开源了,这是一款纯C99标准拥有超强的可移植性,可读性,可玩性的高精度NES模拟器库,纯手写打造,感兴趣的可以在这帖子里恰饭。 » 2024-10-11 20:38:14

Mesen比较强大的,支持CRT滤镜,反射边框等等,但上这些效果,对显卡有点要求,集成显卡的机器,开这个感觉卡卡的

#3 Re: 全志 SOC » libxnes开源了,这是一款纯C99标准拥有超强的可移植性,可读性,可玩性的高精度NES模拟器库,纯手写打造,感兴趣的可以在这帖子里恰饭。 » 2024-10-11 09:43:18

为了增强代码的可读性,将卡带的读写接口进行拆分,拆分成完全独立的cpu总线读写以及完全独立的ppu总线读写,新接口如下:

		uint8_t (*cpu_read)(struct xnes_ctx_t * ctx, uint16_t addr);
		void (*cpu_write)(struct xnes_ctx_t * ctx, uint16_t addr, uint8_t val);
		uint8_t (*ppu_read)(struct xnes_ctx_t * ctx, uint16_t addr);
		void (*ppu_write)(struct xnes_ctx_t * ctx, uint16_t addr, uint8_t val);
		void (*ppu_step)(struct xnes_ctx_t * ctx);
		void (*apu_step)(struct xnes_ctx_t * ctx);

红白机系统里面有两条总线,一条是CPU总线,另一条是PPU总线,两者完全独立,CPU是无法直接访问PPU总线上的内容的,必须通过PPU的寄存器来间接访,因为PPU寄存器才8个,只靠这8个来通信效率肯定不太高,所有这8个寄存器里面又有个OAM DMA,可以通过DMA来提供通信效率。

顺便再导出一个ppu step接口,以及apu step接口,某些卡带里面带有音频扩展能力,虽然现在没实现,但先预留接口,增强扩展能力。

#4 Re: 全志 SOC » libxnes开源了,这是一款纯C99标准拥有超强的可移植性,可读性,可玩性的高精度NES模拟器库,纯手写打造,感兴趣的可以在这帖子里恰饭。 » 2024-10-11 09:16:08

现在的实现,虽说是精确到每一个指令的准确周期,但每一条指令都是原子化的,这就意味着,要么不干活,要干就干完,但实际情况,并不是这样,比如一条指令需要多个周期,取指周期,译码周期,执行周期,访问内存周期,跨页周期,条件跳转判断周期,每个周期都需要干特别的事情,说白了点,就是现在的实现粒度不够细,(当然对于模拟器也没必要特别细,比如精确到电路的电平及时序这种级别)。之所以会思考粒度问题,就是因为测试发现,nesdev网站上的那些刁钻的测试rom,就专门针对这种情况而设计的,要想通过测试,就必须将原子化的指令拆分出各种过程,这个任务是当前的重点任务了,比起支持更多的mapper这些来说,显得更关键了点。

网上有完全精确的模拟器实现,但是效率太低,不太实用,这个粒度的细分就需要好好考究了,要分但又不能太细,需要做好折中。估计接下来一段时间会优先考虑这些问题,估计结构上会做较大变化了。

#5 Re: 全志 SOC » libxnes开源了,这是一款纯C99标准拥有超强的可移植性,可读性,可玩性的高精度NES模拟器库,纯手写打造,感兴趣的可以在这帖子里恰饭。 » 2024-10-09 18:01:18

关于图像拉升缩放,这个对于NES用传统的拉伸缩放算法,对于像素级游戏简直就是灾难,有很多缩放算法专门针对像素级游戏的,这些都值得深入研究。

#6 Re: 全志 SOC » libxnes开源了,这是一款纯C99标准拥有超强的可移植性,可读性,可玩性的高精度NES模拟器库,纯手写打造,感兴趣的可以在这帖子里恰饭。 » 2024-10-09 17:54:36

armstrong 说:

各种mapper是有标准的吗?还是全靠逆向分析出来的?

mapper资料网上很齐全,NES已经被研究很彻底了,现在开发有很多现成的资源可以捡。

楼上有mapper连接,这些mapper要支持全,挑战性不小,有点哭笑不得的事,不少mapper就几个游戏,甚至有些mapper就只有一个游戏,投入产出不成正比。

#8 Re: 全志 SOC » libxnes开源了,这是一款纯C99标准拥有超强的可移植性,可读性,可玩性的高精度NES模拟器库,纯手写打造,感兴趣的可以在这帖子里恰饭。 » 2024-10-08 11:42:21

放弃大好国庆,将去年写的半拉子工程,硬肝了一下。期待同志们,在各种平台各显神通,顺便检验libxnes的可移植性。

#10 Re: 全志 SOC » 45块顺丰包邮买到的10.1寸保资LCD价签F1C200S 值不值 » 2024-09-26 01:08:17

11, SPI NAND Flash 128MB

xfel spinand
Found spi nand flash 'MX35LF1GE4AB' with 134217728 bytes

12,上传一个dump固件,从0地址dump到0x03140000,后面UDISK分区没必要dump了。
blozi_0x0_0x3140000.7z

花了几个小时的初步研究成果,先贴出来,期待大家再接再厉!

#11 Re: 全志 SOC » 45块顺丰包邮买到的10.1寸保资LCD价签F1C200S 值不值 » 2024-09-26 01:01:51

补充一些有用的信息:
1,供电12V
2,调试串口uart1
3,ssd2828使用spi1来初始化
4,一些gpio

GPIOs 0-191, platform/pio, pio:
 gpio-1   (lcd_reset           ) out hi
 gpio-130 (wlan_regon          ) out hi
 gpio-131 (wlan_hostwake       ) in  lo
 gpio-133 (?                   ) out hi
platform/1c21000.pwm, 2 PWM devices
 pwm-0   (lcd                 ): requested enabled
 pwm-1   ((null)              ):

5,分区表

-total partitions:9-
-name-        -start-       -size-      
bootlogo    : 400000        80000       
env         : 480000        40000       
boot        : 4c0000        600000      
rootfs      : ac0000        f00000      
rootfs_data : 19c0000       f00000      
recovery    : 28c0000       800000      
misc        : 30c0000       40000       
private     : 3100000       40000       
UDISK       : 3140000       0           

6,LCD屏参,只跑38帧,估计怕性能不够吧

[    0.223950] ***
[    0.223961] *** Interface:
[    0.223972] *** Parallel HV Panel
[    0.223983] *** Lcd Frm to RGB666
[    0.223992] ***
[    0.224002] *** Timing:
[    0.224013] *** lcd_x:      800
[    0.224025] *** lcd_y:      1280
[    0.224036] *** lcd_ht:     1220
[    0.224047] *** lcd_hbp:    70
[    0.224058] *** lcd_vt:     1315
[    0.224069] *** lcd_vbp:    22
[    0.224081] *** lcd_hspw:   20
[    0.224092] *** lcd_vspw:   6
[    0.224103] *** lcd_frame_frq:  38Hz
[    0.224112] ***
[    0.224125] *** WRN03: Recommend "lcd_dclk_frq = 96"
[    0.224135] ***
[    0.224145] *** LCD Panel Parameter Check End

7.内核入口点0x80008000
8,设备树内存地址0x81000000
9,sd2828 RGB转MIPI初始化代码,可以从内核里逆向,或者直接上逻辑分析仪

[    2.944530] ssd2828 spi1.0: ssd2828_probe
[    2.949253] ssd2828 spi1.0: reg_value = 0x2828
[    2.954267] ssd2828 spi1.0: ssd2828_init START
[    3.312945] ssd2828 spi1.0: ssd2828_init SUCCESS!

10, pinctrl-maps

Pinctrl maps:
device twi0
state default
type MUX_GROUP (2)
controlling device pio
group PD12
function twi0

device twi0
state default
type CONFIGS_GROUP (4)
controlling device pio
group PD12
config 00000000
config 00000000
config 00000000

device twi0
state default
type MUX_GROUP (2)
controlling device pio
group PD0
function twi0

device twi0
state default
type CONFIGS_GROUP (4)
controlling device pio
group PD0
config 00000000
config 00000000
config 00000000

device twi0
state sleep
type MUX_GROUP (2)
controlling device pio
group PD12
function io_disabled

device twi0
state sleep
type CONFIGS_GROUP (4)
controlling device pio
group PD12
config 00140009
config 00000005

device twi0
state sleep
type MUX_GROUP (2)
controlling device pio
group PD0
function io_disabled

device twi0
state sleep
type CONFIGS_GROUP (4)
controlling device pio
group PD0
config 00140009
config 00000005

device uart1
state default
type MUX_GROUP (2)
controlling device pio
group PA2
function uart1

device uart1
state default
type CONFIGS_GROUP (4)
controlling device pio
group PA2
config 00000003
config 00000000
config 00000000

device uart1
state default
type MUX_GROUP (2)
controlling device pio
group PA3
function uart1

device uart1
state default
type CONFIGS_GROUP (4)
controlling device pio
group PA3
config 00000003
config 00000000
config 00000000

device uart1
state sleep
type MUX_GROUP (2)
controlling device pio
group PA3
function io_disabled

device uart1
state sleep
type CONFIGS_GROUP (4)
controlling device pio
group PA3
config 00140009
config 00000003

device uart1
state sleep
type MUX_GROUP (2)
controlling device pio
group PA2
function io_disabled

device uart1
state sleep
type CONFIGS_GROUP (4)
controlling device pio
group PA2
config 00140009
config 00000003

device spinand
state default
type MUX_GROUP (2)
controlling device pio
group PC1
function spi0

device spinand
state default
type CONFIGS_GROUP (4)
controlling device pio
group PC1
config 00000003
config 00000000
config 00000000

device spinand
state default
type MUX_GROUP (2)
controlling device pio
group PC0
function spi0

device spinand
state default
type CONFIGS_GROUP (4)
controlling device pio
group PC0
config 00000000
config 00000000
config 00000000

device spinand
state default
type MUX_GROUP (2)
controlling device pio
group PC3
function spi0

device spinand
state default
type CONFIGS_GROUP (4)
controlling device pio
group PC3
config 00000000
config 00000000
config 00000000

device spinand
state default
type MUX_GROUP (2)
controlling device pio
group PC2
function spi0

device spinand
state default
type CONFIGS_GROUP (4)
controlling device pio
group PC2
config 00000000
config 00000000
config 00000000

device spinand
state sleep
type MUX_GROUP (2)
controlling device pio
group PC0
function io_disabled

device spinand
state sleep
type CONFIGS_GROUP (4)
controlling device pio
group PC0
config 00140009
config 00000005

device spinand
state sleep
type MUX_GROUP (2)
controlling device pio
group PC1
function io_disabled

device spinand
state sleep
type CONFIGS_GROUP (4)
controlling device pio
group PC1
config 00140009
config 00000005

device spinand
state sleep
type MUX_GROUP (2)
controlling device pio
group PC2
function io_disabled

device spinand
state sleep
type CONFIGS_GROUP (4)
controlling device pio
group PC2
config 00140009
config 00000005

device spinand
state sleep
type MUX_GROUP (2)
controlling device pio
group PC3
function io_disabled

device spinand
state sleep
type CONFIGS_GROUP (4)
controlling device pio
group PC3
config 00140009
config 00000005

device spi1
state default
type MUX_GROUP (2)
controlling device pio
group PE7
function spi1

device spi1
state default
type CONFIGS_GROUP (4)
controlling device pio
group PE7
config 00000003
config 00000000
config 00000000

device spi1
state default
type MUX_GROUP (2)
controlling device pio
group PE9
function spi1

device spi1
state default
type CONFIGS_GROUP (4)
controlling device pio
group PE9
config 00000000
config 00000000
config 00000000

device spi1
state default
type MUX_GROUP (2)
controlling device pio
group PE8
function spi1

device spi1
state default
type CONFIGS_GROUP (4)
controlling device pio
group PE8
config 00000000
config 00000000
config 00000000

device spi1
state default
type MUX_GROUP (2)
controlling device pio
group PE10
function spi1

device spi1
state default
type CONFIGS_GROUP (4)
controlling device pio
group PE10
config 00000000
config 00000000
config 00000000

device spi1
state sleep
type MUX_GROUP (2)
controlling device pio
group PE7
function io_disabled

device spi1
state sleep
type CONFIGS_GROUP (4)
controlling device pio
group PE7
config 00140009
config 00000005

device spi1
state sleep
type MUX_GROUP (2)
controlling device pio
group PE8
function io_disabled

device spi1
state sleep
type CONFIGS_GROUP (4)
controlling device pio
group PE8
config 00140009
config 00000005

device spi1
state sleep
type MUX_GROUP (2)
controlling device pio
group PE9
function io_disabled

device spi1
state sleep
type CONFIGS_GROUP (4)
controlling device pio
group PE9
config 00140009
config 00000005

device spi1
state sleep
type MUX_GROUP (2)
controlling device pio
group PE10
function io_disabled

device spi1
state sleep
type CONFIGS_GROUP (4)
controlling device pio
group PE10
config 00140009
config 00000005

device sdc0
state default
type MUX_GROUP (2)
controlling device pio
group PF0
function sdc0

device sdc0
state default
type CONFIGS_GROUP (4)
controlling device pio
group PF0
config 00280009
config 00000003
config 00000000

device sdc0
state default
type MUX_GROUP (2)
controlling device pio
group PF1
function sdc0

device sdc0
state default
type CONFIGS_GROUP (4)
controlling device pio
group PF1
config 00280009
config 00000003
config 00000000

device sdc0
state default
type MUX_GROUP (2)
controlling device pio
group PF2
function sdc0

device sdc0
state default
type CONFIGS_GROUP (4)
controlling device pio
group PF2
config 00280009
config 00000003
config 00000000

device sdc0
state default
type MUX_GROUP (2)
controlling device pio
group PF3
function sdc0

device sdc0
state default
type CONFIGS_GROUP (4)
controlling device pio
group PF3
config 00280009
config 00000003
config 00000000

device sdc0
state default
type MUX_GROUP (2)
controlling device pio
group PF4
function sdc0

device sdc0
state default
type CONFIGS_GROUP (4)
controlling device pio
group PF4
config 00280009
config 00000003
config 00000000

device sdc0
state default
type MUX_GROUP (2)
controlling device pio
group PF5
function sdc0

device sdc0
state default
type CONFIGS_GROUP (4)
controlling device pio
group PF5
config 00280009
config 00000003
config 00000000

device sdc0
state sleep
type MUX_GROUP (2)
controlling device pio
group PF0
function io_disabled

device sdc0
state sleep
type CONFIGS_GROUP (4)
controlling device pio
group PF0
config 00140009
config 00000003

device sdc0
state sleep
type MUX_GROUP (2)
controlling device pio
group PF1
function io_disabled

device sdc0
state sleep
type CONFIGS_GROUP (4)
controlling device pio
group PF1
config 00140009
config 00000003

device sdc0
state sleep
type MUX_GROUP (2)
controlling device pio
group PF2
function io_disabled

device sdc0
state sleep
type CONFIGS_GROUP (4)
controlling device pio
group PF2
config 00140009
config 00000003

device sdc0
state sleep
type MUX_GROUP (2)
controlling device pio
group PF3
function io_disabled

device sdc0
state sleep
type CONFIGS_GROUP (4)
controlling device pio
group PF3
config 00140009
config 00000003

device sdc0
state sleep
type MUX_GROUP (2)
controlling device pio
group PF4
function io_disabled

device sdc0
state sleep
type CONFIGS_GROUP (4)
controlling device pio
group PF4
config 00140009
config 00000003

device sdc0
state sleep
type MUX_GROUP (2)
controlling device pio
group PF5
function io_disabled

device sdc0
state sleep
type CONFIGS_GROUP (4)
controlling device pio
group PF5
config 00140009
config 00000003

device lcd0
state active
type MUX_GROUP (2)
controlling device pio
group PD1
function lcd0

device lcd0
state active
type CONFIGS_GROUP (4)
controlling device pio
group PD1
config 00000005
config 00000000
config 00000000

device lcd0
state active
type MUX_GROUP (2)
controlling device pio
group PD2
function lcd0

device lcd0
state active
type CONFIGS_GROUP (4)
controlling device pio
group PD2
config 00000005
config 00000000
config 00000000

device lcd0
state active
type MUX_GROUP (2)
controlling device pio
group PD3
function lcd0

device lcd0
state active
type CONFIGS_GROUP (4)
controlling device pio
group PD3
config 00000005
config 00000000
config 00000000

device lcd0
state active
type MUX_GROUP (2)
controlling device pio
group PD4
function lcd0

device lcd0
state active
type CONFIGS_GROUP (4)
controlling device pio
group PD4
config 00000005
config 00000000
config 00000000

device lcd0
state active
type MUX_GROUP (2)
controlling device pio
group PD5
function lcd0

device lcd0
state active
type CONFIGS_GROUP (4)
controlling device pio
group PD5
config 00000005
config 00000000
config 00000000

device lcd0
state active
type MUX_GROUP (2)
controlling device pio
group PD6
function lcd0

device lcd0
state active
type CONFIGS_GROUP (4)
controlling device pio
group PD6
config 00000005
config 00000000
config 00000000

device lcd0
state active
type MUX_GROUP (2)
controlling device pio
group PD7
function lcd0

device lcd0
state active
type CONFIGS_GROUP (4)
controlling device pio
group PD7
config 00000005
config 00000000
config 00000000

device lcd0
state active
type MUX_GROUP (2)
controlling device pio
group PD8
function lcd0

device lcd0
state active
type CONFIGS_GROUP (4)
controlling device pio
group PD8
config 00000005
config 00000000
config 00000000

device lcd0
state active
type MUX_GROUP (2)
controlling device pio
group PD9
function lcd0

device lcd0
state active
type CONFIGS_GROUP (4)
controlling device pio
group PD9
config 00000005
config 00000000
config 00000000

device lcd0
state active
type MUX_GROUP (2)
controlling device pio
group PD10
function lcd0

device lcd0
state active
type CONFIGS_GROUP (4)
controlling device pio
group PD10
config 00000005
config 00000000
config 00000000

device lcd0
state active
type MUX_GROUP (2)
controlling device pio
group PD11
function lcd0

device lcd0
state active
type CONFIGS_GROUP (4)
controlling device pio
group PD11
config 00000005
config 00000000
config 00000000

device lcd0
state active
type MUX_GROUP (2)
controlling device pio
group PD13
function lcd0

device lcd0
state active
type CONFIGS_GROUP (4)
controlling device pio
group PD13
config 00000005
config 00000000
config 00000000

device lcd0
state active
type MUX_GROUP (2)
controlling device pio
group PD14
function lcd0

device lcd0
state active
type CONFIGS_GROUP (4)
controlling device pio
group PD14
config 00000005
config 00000000
config 00000000

device lcd0
state active
type MUX_GROUP (2)
controlling device pio
group PD15
function lcd0

device lcd0
state active
type CONFIGS_GROUP (4)
controlling device pio
group PD15
config 00000005
config 00000000
config 00000000

device lcd0
state active
type MUX_GROUP (2)
controlling device pio
group PD16
function lcd0

device lcd0
state active
type CONFIGS_GROUP (4)
controlling device pio
group PD16
config 00000005
config 00000000
config 00000000

device lcd0
state active
type MUX_GROUP (2)
controlling device pio
group PD17
function lcd0

device lcd0
state active
type CONFIGS_GROUP (4)
controlling device pio
group PD17
config 00000005
config 00000000
config 00000000

device lcd0
state active
type MUX_GROUP (2)
controlling device pio
group PD18
function lcd0

device lcd0
state active
type CONFIGS_GROUP (4)
controlling device pio
group PD18
config 00280009
config 00000005
config 00000000

device lcd0
state active
type MUX_GROUP (2)
controlling device pio
group PD19
function lcd0

device lcd0
state active
type CONFIGS_GROUP (4)
controlling device pio
group PD19
config 00280009
config 00000005
config 00000000

device lcd0
state active
type MUX_GROUP (2)
controlling device pio
group PD20
function lcd0

device lcd0
state active
type CONFIGS_GROUP (4)
controlling device pio
group PD20
config 00280009
config 00000005
config 00000000

device lcd0
state active
type MUX_GROUP (2)
controlling device pio
group PD21
function lcd0

device lcd0
state active
type CONFIGS_GROUP (4)
controlling device pio
group PD21
config 00280009
config 00000005
config 00000000

device pwm0.0
state active
type MUX_GROUP (2)
controlling device pio
group PE12
function pwm0

device pwm0.0
state active
type CONFIGS_GROUP (4)
controlling device pio
group PE12
config 00140009
config 00000005

device pwm0.0
state sleep
type MUX_GROUP (2)
controlling device pio
group PE12
function io_disabled

device pwm0.0
state sleep
type CONFIGS_GROUP (4)
controlling device pio
group PE12
config 00140009
config 00000005

#12 Re: 全志 SOC » 45块顺丰包邮买到的10.1寸保资LCD价签F1C200S 值不值 » 2024-09-26 00:47:15

我来贴个dts

/memreserve/ 0x81000000 0x10000;
/ {
    model = "sun3iw1p1";
    compatible = "arm,sun3iw1p1", "arm,sun3iw1p1";
    interrupt-parent = <0x00000001>;
    #address-cells = <0x00000002>;
    #size-cells = <0x00000002>;
    clocks {
        compatible = "allwinner,sunxi-clk-init";
        device_type = "clocks";
        #address-cells = <0x00000002>;
        #size-cells = <0x00000002>;
        ranges;
        reg = <0x00000000 0x01c20000 0x00000000 0x000002d0>;
        losc {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,fixed-clock";
            clock-frequency = <0x00008000>;
            clock-output-names = "losc";
        };
        hosc {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,fixed-clock";
            clock-frequency = <0x016e3600>;
            clock-output-names = "hosc";
            linux,phandle = <0x00000008>;
            phandle = <0x00000008>;
        };
        pll_cpu {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,sunxi-pll-clock";
            lock-mode = "none";
            assigned-clock-rates = <0x20e6da00>;
            clock-output-names = "pll_cpu";
        };
        pll_audio {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,sunxi-pll-clock";
            lock-mode = "none";
            clock-output-names = "pll_audio";
            linux,phandle = <0x00000002>;
            phandle = <0x00000002>;
        };
        pll_video {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,sunxi-pll-clock";
            lock-mode = "none";
            assigned-clock-rates = <0x11b3dc40>;
            clock-output-names = "pll_video";
            linux,phandle = <0x00000003>;
            phandle = <0x00000003>;
        };
        pll_ve {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,sunxi-pll-clock";
            lock-mode = "none";
            clock-output-names = "pll_ve";
            linux,phandle = <0x0000000a>;
            phandle = <0x0000000a>;
        };
        pll_ddr {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,sunxi-pll-clock";
            lock-mode = "none";
            assigned-clock-rates = <0x1298be00>;
            clock-output-names = "pll_ddr";
        };
        pll_periph {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,sunxi-pll-clock";
            lock-mode = "none";
            clock-output-names = "pll_periph";
            linux,phandle = <0x00000004>;
            phandle = <0x00000004>;
        };
        pll_audiox8 {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,fixed-factor-clock";
            clocks = <0x00000002>;
            clock-mult = <0x00000008>;
            clock-div = <0x00000001>;
            clock-output-names = "pll_audiox8";
        };
        pll_audiox4 {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,fixed-factor-clock";
            clocks = <0x00000002>;
            clock-mult = <0x00000008>;
            clock-div = <0x00000002>;
            clock-output-names = "pll_audiox4";
        };
        pll_audiox2 {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,fixed-factor-clock";
            clocks = <0x00000002>;
            clock-mult = <0x00000008>;
            clock-div = <0x00000004>;
            clock-output-names = "pll_audiox2";
        };
        pll_videox2 {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,fixed-factor-clock";
            clocks = <0x00000003>;
            clock-mult = <0x00000002>;
            clock-div = <0x00000001>;
            clock-output-names = "pll_videox2";
        };
        pll_periphx2 {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,fixed-factor-clock";
            clocks = <0x00000004>;
            clock-mult = <0x00000002>;
            clock-div = <0x00000001>;
            clock-output-names = "pll_periphx2";
        };
        cpu {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,sunxi-periph-clock";
            clock-output-names = "cpu";
        };
        pll_periphahb {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,sunxi-periph-clock";
            clock-output-names = "pll_periphahb";
        };
        ahb1 {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,sunxi-periph-clock";
            clock-output-names = "ahb1";
            linux,phandle = <0x0000001e>;
            phandle = <0x0000001e>;
        };
        apb1 {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,sunxi-periph-clock";
            clock-output-names = "apb1";
        };
        sdmmc0_mod {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,sunxi-periph-clock";
            clock-output-names = "sdmmc0_mod";
            linux,phandle = <0x0000002a>;
            phandle = <0x0000002a>;
        };
        sdmmc0_bus {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,sunxi-periph-clock";
            clock-output-names = "sdmmc0_bus";
            linux,phandle = <0x0000002b>;
            phandle = <0x0000002b>;
        };
        sdmmc0_rst {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,sunxi-periph-clock";
            clock-output-names = "sdmmc0_rst";
            linux,phandle = <0x0000002c>;
            phandle = <0x0000002c>;
        };
        sdmmc1_mod {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,sunxi-periph-clock";
            clock-output-names = "sdmmc1_mod";
            linux,phandle = <0x0000002f>;
            phandle = <0x0000002f>;
        };
        sdmmc1_bus {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,sunxi-periph-clock";
            clock-output-names = "sdmmc1_bus";
            linux,phandle = <0x00000030>;
            phandle = <0x00000030>;
        };
        sdmmc1_rst {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,sunxi-periph-clock";
            clock-output-names = "sdmmc1_rst";
            linux,phandle = <0x00000031>;
            phandle = <0x00000031>;
        };
        spi0 {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,sunxi-periph-clock";
            clock-output-names = "spi0";
            linux,phandle = <0x0000001f>;
            phandle = <0x0000001f>;
        };
        spi1 {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,sunxi-periph-clock";
            clock-output-names = "spi1";
            linux,phandle = <0x00000026>;
            phandle = <0x00000026>;
        };
        usbphy0 {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,sunxi-periph-clock";
            clock-output-names = "usbphy0";
            linux,phandle = <0x00000043>;
            phandle = <0x00000043>;
        };
        usbotg {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,sunxi-periph-clock";
            clock-output-names = "usbotg";
            linux,phandle = <0x00000044>;
            phandle = <0x00000044>;
        };
        audio {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,sunxi-periph-clock";
            clock-output-names = "audio";
            linux,phandle = <0x00000045>;
            phandle = <0x00000045>;
        };
        avs {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,sunxi-periph-clock";
            clock-output-names = "avs";
        };
        codec {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,sunxi-periph-clock";
            clock-output-names = "codec";
            linux,phandle = <0x0000004b>;
            phandle = <0x0000004b>;
        };
        spdif {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,sunxi-periph-clock";
            clock-output-names = "spdif";
            linux,phandle = <0x00000048>;
            phandle = <0x00000048>;
        };
        debe {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,sunxi-periph-clock";
            clock-output-names = "debe";
            linux,phandle = <0x00000034>;
            phandle = <0x00000034>;
        };
        defe {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,sunxi-periph-clock";
            clock-output-names = "defe";
            linux,phandle = <0x00000035>;
            phandle = <0x00000035>;
        };
        tcon {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,sunxi-periph-clock";
            clock-output-names = "tcon";
            linux,phandle = <0x00000036>;
            phandle = <0x00000036>;
        };
        deinterlace {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,sunxi-periph-clock";
            clock-output-names = "deinterlace";
            linux,phandle = <0x00000038>;
            phandle = <0x00000038>;
        };
        tve_clk2 {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,sunxi-periph-clock";
            clock-output-names = "tve_clk2";
            linux,phandle = <0x00000037>;
            phandle = <0x00000037>;
        };
        tve_clk1 {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,sunxi-periph-clock";
            clock-output-names = "tve_clk1";
        };
        tvd {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,sunxi-periph-clock";
            clock-output-names = "tvd";
            linux,phandle = <0x00000039>;
            phandle = <0x00000039>;
        };
        csi_m {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,sunxi-periph-clock";
            clock-output-names = "csi_m";
            linux,phandle = <0x00000040>;
            phandle = <0x00000040>;
        };
        ve {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,sunxi-periph-clock";
            clock-output-names = "ve";
            linux,phandle = <0x0000000b>;
            phandle = <0x0000000b>;
        };
        sdram {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,sunxi-periph-clock";
            clock-output-names = "sdram";
        };
        dma {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,sunxi-periph-clock";
            clock-output-names = "dma";
            linux,phandle = <0x00000006>;
            phandle = <0x00000006>;
        };
        pio {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,sunxi-periph-clock";
            clock-output-names = "pio";
            linux,phandle = <0x00000005>;
            phandle = <0x00000005>;
        };
        uart0 {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,sunxi-periph-clock";
            clock-output-names = "uart0";
            linux,phandle = <0x0000000c>;
            phandle = <0x0000000c>;
        };
        uart1 {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,sunxi-periph-clock";
            clock-output-names = "uart1";
            linux,phandle = <0x0000000f>;
            phandle = <0x0000000f>;
        };
        uart2 {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,sunxi-periph-clock";
            clock-output-names = "uart2";
            linux,phandle = <0x00000012>;
            phandle = <0x00000012>;
        };
        twi0 {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,sunxi-periph-clock";
            clock-output-names = "twi0";
            linux,phandle = <0x00000015>;
            phandle = <0x00000015>;
        };
        twi1 {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,sunxi-periph-clock";
            clock-output-names = "twi1";
            linux,phandle = <0x00000018>;
            phandle = <0x00000018>;
        };
        twi2 {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,sunxi-periph-clock";
            clock-output-names = "twi2";
            linux,phandle = <0x0000001b>;
            phandle = <0x0000001b>;
        };
        rsb {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,sunxi-periph-clock";
            clock-output-names = "rsb";
        };
        cir {
            #clock-cells = <0x00000000>;
            compatible = "allwinner,sunxi-periph-clock";
            clock-output-names = "cir";
            linux,phandle = <0x00000009>;
            phandle = <0x00000009>;
        };
    };
    soc {
        compatible = "simple-bus";
        #address-cells = <0x00000002>;
        #size-cells = <0x00000002>;
        device_type = "soc";
        ranges;
        pinctrl@01c20800 {
            compatible = "allwinner,sun3iw1p1-pinctrl";
            reg = <0x00000000 0x01c20800 0x00000000 0x00000400>;
            interrupts = <0x00000026 0x00000027 0x00000028>;
            device_type = "pio";
            clocks = <0x00000005>;
            gpio-controller;
            interrupt-controller;
            #interrupt-cells = <0x00000002>;
            #size-cells = <0x00000000>;
            #gpio-cells = <0x00000006>;
            linux,phandle = <0x00000024>;
            phandle = <0x00000024>;
            ir@0 {
                allwinner,function = "ir";
                allwinner,muxsel = <0x00000004>;
                allwinner,drive = <0x00000001>;
                allwinner,pull = <0x00000001>;
                linux,phandle = <0x00000007>;
                phandle = <0x00000007>;
            };
            uart0@1 {
                allwinner,pins = "PF2", "PF4";
                allwinner,function = "io_disabled";
                allwinner,muxsel = <0x00000007>;
                allwinner,drive = <0x00000001>;
                allwinner,pull = <0x00000001>;
                linux,phandle = <0x0000000e>;
                phandle = <0x0000000e>;
            };
            uart1@1 {
                allwinner,pins = "PA3", "PA2";
                allwinner,function = "io_disabled";
                allwinner,muxsel = <0x00000007>;
                allwinner,drive = <0x00000001>;
                allwinner,pull = <0x00000001>;
                linux,phandle = <0x00000011>;
                phandle = <0x00000011>;
            };
            uart2@0 {
                allwinner,pname = "uart2_tx", "uart2_rx";
                allwinner,function = "uart2";
                allwinner,muxsel = <0x00000003>;
                allwinner,drive = <0x00000001>;
                allwinner,pull = <0x00000001>;
                linux,phandle = <0x00000013>;
                phandle = <0x00000013>;
            };
            uart2@1 {
                allwinner,function = "io_disabled";
                allwinner,muxsel = <0x00000007>;
                allwinner,drive = <0x00000001>;
                allwinner,pull = <0x00000001>;
                linux,phandle = <0x00000014>;
                phandle = <0x00000014>;
            };
            twi0@1 {
                allwinner,pins = "PD12", "PD0";
                allwinner,function = "io_disabled";
                allwinner,muxsel = <0x00000007>;
                allwinner,drive = <0x00000001>;
                allwinner,pull = <0x00000000>;
                linux,phandle = <0x00000017>;
                phandle = <0x00000017>;
            };
            twi1@1 {
                allwinner,pins = "PB0", "PB1";
                allwinner,function = "io_disabled";
                allwinner,muxsel = <0x00000007>;
                allwinner,drive = <0x00000001>;
                allwinner,pull = <0x00000000>;
                linux,phandle = <0x0000001a>;
                phandle = <0x0000001a>;
            };
            twi2@1 {
                allwinner,function = "io_disabled";
                allwinner,muxsel = <0x00000007>;
                allwinner,drive = <0x00000001>;
                allwinner,pull = <0x00000000>;
                linux,phandle = <0x0000001d>;
                phandle = <0x0000001d>;
            };
            spi0@2 {
                allwinner,pins = "PC0", "PC1", "PC2";
                allwinner,function = "io_disabled";
                allwinner,muxsel = <0x00000007>;
                allwinner,drive = <0x00000001>;
                allwinner,pull = <0x00000000>;
                linux,phandle = <0x00000022>;
                phandle = <0x00000022>;
            };
            spi0@3 {
                allwinner,pins = "PC3";
                allwinner,function = "io_disabled";
                allwinner,muxsel = <0x00000007>;
                allwinner,drive = <0x00000001>;
                allwinner,pull = <0x00000000>;
                linux,phandle = <0x00000023>;
                phandle = <0x00000023>;
            };
            spi1@2 {
                allwinner,pins = "PE7", "PE8", "PE9", "PE10";
                allwinner,function = "io_disabled";
                allwinner,muxsel = <0x00000007>;
                allwinner,drive = <0x00000001>;
                allwinner,pull = <0x00000000>;
                linux,phandle = <0x00000029>;
                phandle = <0x00000029>;
            };
            csi0@0 {
                allwinner,pins = "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10";
                allwinner,pname = "csi0_hsync", "csi0_vsync", "csi0_pck", "csi0_d0", "csi0_d1", "csi0_d2", "csi0_d3", "csi0_d4", "csi0_d5", "csi0_d6", "csi0_d7";
                allwinner,function = "csi0";
                allwinner,muxsel = <0x00000002>;
                allwinner,drive = <0x00000001>;
                allwinner,pull = <0x00000000>;
                allwinner,data = <0x00000000>;
                linux,phandle = <0x00000041>;
                phandle = <0x00000041>;
            };
            csi0_sleep@0 {
                allwinner,pins = "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10";
                allwinner,pname = "csi0_hsync", "csi0_vsync", "csi0_pck", "csi0_d0", "csi0_d1", "csi0_d2", "csi0_d3", "csi0_d4", "csi0_d5", "csi0_d6", "csi0_d7";
                allwinner,function = "io_disabled";
                allwinner,muxsel = <0x00000007>;
                allwinner,drive = <0x00000001>;
                allwinner,pull = <0x00000000>;
                allwinner,data = <0x00000000>;
                linux,phandle = <0x00000042>;
                phandle = <0x00000042>;
            };
            pwm0@0 {
                allwinner,pins = "PE12";
                allwinner,function = "pwm0";
                allwinner,muxsel = <0x00000004>;
                allwinner,drive = <0x00000001>;
                allwinner,pull = <0x00000000>;
                linux,phandle = <0x0000003c>;
                phandle = <0x0000003c>;
            };
            pwm0@1 {
                allwinner,pins = "PE12";
                allwinner,function = "pwm0";
                allwinner,muxsel = <0x00000007>;
                allwinner,drive = <0x00000001>;
                allwinner,pull = <0x00000000>;
                linux,phandle = <0x0000003d>;
                phandle = <0x0000003d>;
            };
            pwm1@0 {
                allwinner,function = "pwm1";
                allwinner,muxsel = <0x00000003>;
                allwinner,drive = <0x00000001>;
                allwinner,pull = <0x00000000>;
                linux,phandle = <0x0000003e>;
                phandle = <0x0000003e>;
            };
            pwm1@1 {
                allwinner,function = "pwm1";
                allwinner,muxsel = <0x00000007>;
                allwinner,drive = <0x00000001>;
                allwinner,pull = <0x00000000>;
                linux,phandle = <0x0000003f>;
                phandle = <0x0000003f>;
            };
            sdc0@1 {
                allwinner,pins = "PF0", "PF1", "PF2", "PF3", "PF4", "PF5";
                allwinner,function = "io_disabled";
                allwinner,muxsel = <0x00000007>;
                allwinner,drive = <0x00000001>;
                allwinner,pull = <0x00000001>;
                linux,phandle = <0x0000002e>;
                phandle = <0x0000002e>;
            };
            sdc1@1 {
                allwinner,pins = "PC0", "PC1", "PC2";
                allwinner,function = "io_disabled";
                allwinner,muxsel = <0x00000007>;
                allwinner,drive = <0x00000001>;
                allwinner,pull = <0x00000001>;
                linux,phandle = <0x00000033>;
                phandle = <0x00000033>;
            };
            daudio0@0 {
                allwinner,function = "iis0";
                allwinner,muxsel = <0x00000004>;
                allwinner,drive = <0x00000001>;
                allwinner,pull = <0x00000000>;
                linux,phandle = <0x00000046>;
                phandle = <0x00000046>;
            };
            daudio0_sleep@0 {
                allwinner,function = "io_disabled";
                allwinner,muxsel = <0x00000007>;
                allwinner,drive = <0x00000001>;
                allwinner,pull = <0x00000000>;
                linux,phandle = <0x00000047>;
                phandle = <0x00000047>;
            };
            daudio0@1 {
                allwinner,function = "iis0";
                allwinner,muxsel = <0x00000002>;
                allwinner,drive = <0x00000001>;
                allwinner,pull = <0x00000000>;
            };
            spdif@0 {
                allwinner,pins = "PD17";
                allwinner,function = "spdif0";
                allwinner,muxsel = <0x00000003>;
                allwinner,drive = <0x00000001>;
                allwinner,pull = <0x00000000>;
                linux,phandle = <0x00000049>;
                phandle = <0x00000049>;
            };
            spdif_sleep@0 {
                allwinner,pins = "PD17";
                allwinner,function = "io_disabled";
                allwinner,muxsel = <0x00000007>;
                allwinner,drive = <0x00000001>;
                allwinner,pull = <0x00000000>;
                linux,phandle = <0x0000004a>;
                phandle = <0x0000004a>;
            };
            card0_boot_para@0 {
                linux,phandle = <0x00000051>;
                phandle = <0x00000051>;
                allwinner,pins = "PF0", "PF1", "PF2", "PF3", "PF4", "PF5";
                allwinner,function = "card0_boot_para";
                allwinner,pname = "sdc_d1", "sdc_d0", "sdc_clk", "sdc_cmd", "sdc_d3", "sdc_d2";
                allwinner,muxsel = <0x00000002>;
                allwinner,pull = <0x00000001>;
                allwinner,drive = <0x00000002>;
                allwinner,data = <0xffffffff>;
            };
            card2_boot_para@0 {
                linux,phandle = <0x00000052>;
                phandle = <0x00000052>;
                allwinner,pins = "PC5", "PC6", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PC16", "PC1";
                allwinner,function = "card2_boot_para";
                allwinner,pname = "sdc_clk", "sdc_cmd", "sdc_d0", "sdc_d1", "sdc_d2", "sdc_d3", "sdc_d4", "sdc_d5", "sdc_d6", "sdc_d7", "sdc_emmc_rst", "sdc_ds";
                allwinner,muxsel = <0x00000003>;
                allwinner,pull = <0x00000001>;
                allwinner,drive = <0x00000003>;
                allwinner,data = <0xffffffff>;
            };
            card1_boot_para@0 {
                linux,phandle = <0x00000053>;
                phandle = <0x00000053>;
                allwinner,pins = "PC0", "PC1", "PC2";
                allwinner,function = "card1_boot_para";
                allwinner,pname = "sdc_clk", "sdc_cmd", "sdc_d0";
                allwinner,muxsel = <0x00000003>;
                allwinner,pull = <0x00000001>;
                allwinner,drive = <0x00000003>;
                allwinner,data = <0xffffffff>;
            };
            twi_para@0 {
                linux,phandle = <0x00000054>;
                phandle = <0x00000054>;
                allwinner,pins = "PD12", "PD0";
                allwinner,function = "twi_para";
                allwinner,pname = "twi_scl", "twi_sda";
                allwinner,muxsel = <0x00000003>;
                allwinner,pull = <0xffffffff>;
                allwinner,drive = <0xffffffff>;
                allwinner,data = <0xffffffff>;
            };
            uart_para@0 {
                linux,phandle = <0x00000055>;
                phandle = <0x00000055>;
                allwinner,pins = "PA2", "PA3";
                allwinner,function = "uart_para";
                allwinner,pname = "uart_debug_tx", "uart_debug_rx";
                allwinner,muxsel = <0x00000005>;
                allwinner,pull = <0x00000001>;
                allwinner,drive = <0xffffffff>;
                allwinner,data = <0xffffffff>;
            };
            jtag_para@0 {
                linux,phandle = <0x00000056>;
                phandle = <0x00000056>;
                allwinner,pins = "PH9", "PH10", "PH11", "PH12";
                allwinner,function = "jtag_para";
                allwinner,pname = "jtag_ms", "jtag_ck", "jtag_do", "jtag_di";
                allwinner,muxsel = <0x00000003>;
                allwinner,pull = <0xffffffff>;
                allwinner,drive = <0xffffffff>;
                allwinner,data = <0xffffffff>;
            };
            twi0@0 {
                linux,phandle = <0x00000057>;
                phandle = <0x00000057>;
                allwinner,pins = "PD12", "PD0";
                allwinner,function = "twi0";
                allwinner,pname = "twi0_scl", "twi0_sda";
                allwinner,muxsel = <0x00000003>;
                allwinner,pull = <0xffffffff>;
                allwinner,drive = <0xffffffff>;
                allwinner,data = <0xffffffff>;
            };
            twi1@0 {
                linux,phandle = <0x00000058>;
                phandle = <0x00000058>;
                allwinner,pins = "PB0", "PB1";
                allwinner,function = "twi1";
                allwinner,pname = "twi1_scl", "twi1_sda";
                allwinner,muxsel = <0x00000002>;
                allwinner,pull = <0xffffffff>;
                allwinner,drive = <0xffffffff>;
                allwinner,data = <0xffffffff>;
            };
            twi2@0 {
                linux,phandle = <0x00000059>;
                phandle = <0x00000059>;
                allwinner,pins = "PD15", "PD16";
                allwinner,function = "twi2";
                allwinner,pname = "twi2_scl", "twi2_sda";
                allwinner,muxsel = <0x00000004>;
                allwinner,pull = <0xffffffff>;
                allwinner,drive = <0xffffffff>;
                allwinner,data = <0xffffffff>;
            };
            uart0@0 {
                linux,phandle = <0x0000005a>;
                phandle = <0x0000005a>;
                allwinner,pins = "PF2", "PF4";
                allwinner,function = "uart0";
                allwinner,pname = "uart0_tx", "uart0_rx";
                allwinner,muxsel = <0x00000003>;
                allwinner,pull = <0x00000001>;
                allwinner,drive = <0xffffffff>;
                allwinner,data = <0xffffffff>;
            };
            uart1@0 {
                linux,phandle = <0x0000005b>;
                phandle = <0x0000005b>;
                allwinner,pins = "PA2", "PA3";
                allwinner,function = "uart1";
                allwinner,pname = "uart1_tx", "uart1_rx";
                allwinner,muxsel = <0x00000005>;
                allwinner,pull = <0x00000001>;
                allwinner,drive = <0xffffffff>;
                allwinner,data = <0xffffffff>;
            };
            spi0@0 {
                linux,phandle = <0x0000005c>;
                phandle = <0x0000005c>;
                allwinner,pins = "PC1";
                allwinner,function = "spi0";
                allwinner,pname = "spi0_cs0";
                allwinner,muxsel = <0x00000002>;
                allwinner,pull = <0x00000001>;
                allwinner,drive = <0xffffffff>;
                allwinner,data = <0xffffffff>;
            };
            spi0@1 {
                linux,phandle = <0x0000005d>;
                phandle = <0x0000005d>;
                allwinner,pins = "PC0", "PC3", "PC2";
                allwinner,function = "spi0";
                allwinner,pname = "spi0_sclk", "spi0_mosi", "spi0_miso";
                allwinner,muxsel = <0x00000002>;
                allwinner,pull = <0xffffffff>;
                allwinner,drive = <0xffffffff>;
                allwinner,data = <0xffffffff>;
            };
            spi1@0 {
                linux,phandle = <0x0000005e>;
                phandle = <0x0000005e>;
                allwinner,pins = "PE7";
                allwinner,function = "spi1";
                allwinner,pname = "spi1_cs0";
                allwinner,muxsel = <0x00000004>;
                allwinner,pull = <0x00000001>;
                allwinner,drive = <0xffffffff>;
                allwinner,data = <0xffffffff>;
            };
            spi1@1 {
                linux,phandle = <0x0000005f>;
                phandle = <0x0000005f>;
                allwinner,pins = "PE9", "PE8", "PE10";
                allwinner,function = "spi1";
                allwinner,pname = "spi1_sclk", "spi1_mosi", "spi1_miso";
                allwinner,muxsel = <0x00000004>;
                allwinner,pull = <0xffffffff>;
                allwinner,drive = <0xffffffff>;
                allwinner,data = <0xffffffff>;
            };
            nand0@0 {
                linux,phandle = <0x00000060>;
                phandle = <0x00000060>;
                allwinner,pins = "PC0", "PC1", "PC2", "PC4", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14";
                allwinner,function = "nand0";
                allwinner,pname = "nand0_we", "nand0_ale", "nand0_cle", "nand0_nre", "nand0_d0", "nand0_d1", "nand0_d2", "nand0_d3", "nand0_d4", "nand0_d5", "nand0_d6", "nand0_d7", "nand0_ndqs";
                allwinner,muxsel = <0x00000002>;
                allwinner,pull = <0x00000000>;
                allwinner,drive = <0x00000001>;
                allwinner,data = <0xffffffff>;
            };
            nand0@1 {
                linux,phandle = <0x00000061>;
                phandle = <0x00000061>;
                allwinner,pins = "PC3", "PC5";
                allwinner,function = "nand0";
                allwinner,pname = "nand0_ce0", "nand0_rb0";
                allwinner,muxsel = <0x00000002>;
                allwinner,pull = <0x00000001>;
                allwinner,drive = <0x00000001>;
                allwinner,data = <0xffffffff>;
            };
            lcd0@0 {
                linux,phandle = <0x00000062>;
                phandle = <0x00000062>;
                allwinner,pins = "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD13", "PD14", "PD15", "PD16", "PD17";
                allwinner,function = "lcd0";
                allwinner,pname = "lcdd3", "lcdd4", "lcdd5", "lcdd6", "lcdd7", "lcdd10", "lcdd11", "lcdd12", "lcdd13", "lcdd14", "lcdd15", "lcdd19", "lcdd20", "lcdd21", "lcdd22", "lcdd23";
                allwinner,muxsel = <0x00000002>;
                allwinner,pull = <0x00000000>;
                allwinner,drive = <0xffffffff>;
                allwinner,data = <0xffffffff>;
            };
            lcd0@1 {
                linux,phandle = <0x00000063>;
                phandle = <0x00000063>;
                allwinner,pins = "PD18", "PD19", "PD20", "PD21";
                allwinner,function = "lcd0";
                allwinner,pname = "lcdclk", "lcdde", "lcdhsync", "lcdvsync";
                allwinner,muxsel = <0x00000002>;
                allwinner,pull = <0x00000000>;
                allwinner,drive = <0x00000003>;
                allwinner,data = <0xffffffff>;
            };
            sdc0@0 {
                linux,phandle = <0x00000064>;
                phandle = <0x00000064>;
                allwinner,pins = "PF0", "PF1", "PF2", "PF3", "PF4", "PF5";
                allwinner,function = "sdc0";
                allwinner,pname = "sdc0_d1", "sdc0_d0", "sdc0_clk", "sdc0_cmd", "sdc0_d3", "sdc0_d2";
                allwinner,muxsel = <0x00000002>;
                allwinner,pull = <0x00000001>;
                allwinner,drive = <0x00000003>;
                allwinner,data = <0xffffffff>;
            };
            sdc1@0 {
                linux,phandle = <0x00000065>;
                phandle = <0x00000065>;
                allwinner,pins = "PC0", "PC1", "PC2";
                allwinner,function = "sdc1";
                allwinner,pname = "sdc1_clk", "sdc1_cmd", "sdc1_d0";
                allwinner,muxsel = <0x00000003>;
                allwinner,pull = <0x00000001>;
                allwinner,drive = <0x00000002>;
                allwinner,data = <0xffffffff>;
            };
            Vdevice@0 {
                linux,phandle = <0x00000066>;
                phandle = <0x00000066>;
                allwinner,pins = "PC0", "PC1";
                allwinner,function = "Vdevice";
                allwinner,pname = "Vdevice_0", "Vdevice_1";
                allwinner,muxsel = <0x00000004>;
                allwinner,pull = <0x00000001>;
                allwinner,drive = <0x00000002>;
                allwinner,data = <0xffffffff>;
            };
        };
        dma-controller@01c02000 {
            compatible = "allwinner,sun3i-dma";
            reg = <0x00000000 0x01c02000 0x00000000 0x00001000>;
            interrupts = <0x00000012>;
            clocks = <0x00000006>;
            #dma-cells = <0x00000002>;
            linux,phandle = <0x00000025>;
            phandle = <0x00000025>;
        };
        timer@1c20c00 {
            compatible = "allwinner,sunxi-timer";
            device_type = "timer";
            reg = <0x00000000 0x01c20c00 0x00000000 0x00000090>;
            interrupts = <0x0000000d>;
            clock-frequency = <0x016e3600>;
            timer-prescale = <0x00000010>;
        };
        ir@01c22c00 {
            compatible = "allwinner,ir";
            reg = <0x00000000 0x01c22c00 0x00000000 0x00000400>;
            interrupts = <0x00000006>;
            pinctrl-names = "default";
            pinctrl-0 = <0x00000007>;
            clocks = <0x00000008 0x00000009>;
            status = "okay";
        };
        ve@01c0e000 {
            compatible = "allwinner,sunxi-cedar-ve";
            reg = <0x00000000 0x01c0e000 0x00000000 0x00001000 0x00000000 0x01c00000 0x00000000 0x00003000 0x00000000 0x01c20000 0x00000000 0x00000800>;
            interrupts = <0x00000022>;
            clocks = <0x0000000a 0x0000000b>;
        };
        uart@01c25000 {
            compatible = "allwinner,sun3i-uart";
            device_type = "uart0";
            reg = <0x00000000 0x01c25000 0x00000000 0x00000400>;
            interrupts = <0x00000001>;
            clocks = <0x0000000c>;
            pinctrl-names = "default", "sleep";
            pinctrl-1 = <0x0000000e>;
            uart0_port = <0x00000000>;
            uart0_type = <0x00000002>;
            status = "disabled";
            pinctrl-0 = <0x0000005a>;
        };
        uart@01c25400 {
            compatible = "allwinner,sun3i-uart";
            device_type = "uart1";
            reg = <0x00000000 0x01c25400 0x00000000 0x00000400>;
            interrupts = <0x00000002>;
            clocks = <0x0000000f>;
            pinctrl-names = "default", "sleep";
            pinctrl-1 = <0x00000011>;
            uart1_port = <0x00000001>;
            uart1_type = <0x00000002>;
            status = "okay";
            pinctrl-0 = <0x0000005b>;
        };
        uart@01c25800 {
            compatible = "allwinner,sun3i-uart";
            device_type = "uart2";
            reg = <0x00000000 0x01c25800 0x00000000 0x00000400>;
            interrupts = <0x00000003>;
            clocks = <0x00000012>;
            pinctrl-names = "default", "sleep";
            pinctrl-0 = <0x00000013>;
            pinctrl-1 = <0x00000014>;
            uart2_port = <0x00000002>;
            uart2_type = <0x00000004>;
            status = "disabled";
        };
        twi@0x01c27000 {
            #address-cells = <0x00000001>;
            #size-cells = <0x00000000>;
            compatible = "allwinner,sun3i-twi";
            device_type = "twi0";
            reg = <0x00000000 0x01c27000 0x00000000 0x00000400>;
            interrupts = <0x00000007>;
            clocks = <0x00000015>;
            clock-frequency = <0x000186a0>;
            pinctrl-names = "default", "sleep";
            pinctrl-1 = <0x00000017>;
            status = "okay";
            pinctrl-0 = <0x00000057>;
            io_expand@0x38 {
                compatible = "nxp,pcf8574a";
                i2c-max-frequency = <0x000186a0>;
                reg = <0x00000038>;
                device_type = "io_expand";
            };
            touchscreen0@0x4A {
                compatible = "atmel,mxt336t";
                reg = <0x0000004a>;
                atmel,suspend_mode = <0x00000000>;
            };
            touchscreen1@0x48 {
                compatible = "ctp_icn85xx";
                reg = <0x00000048>;
                device_type = "touchscreen1";
            };
            rtc@0x51 {
                compatible = "nxp,pcf8563";
                i2c-max-frequency = <0x000186a0>;
                reg = <0x00000051>;
            };
            sensor_gc0308@0x42 {
                compatible = "allwinner,sensor_gc0308";
                i2c-max-frequency = <0x000186a0>;
                reg = <0x00000042>;
                status = "okay";
            };
        };
        twi@0x01c27400 {
            #address-cells = <0x00000001>;
            #size-cells = <0x00000000>;
            compatible = "allwinner,sun3i-twi";
            device_type = "twi1";
            reg = <0x00000000 0x01c27400 0x00000000 0x00000400>;
            interrupts = <0x00000008>;
            clocks = <0x00000018>;
            clock-frequency = <0x00030d40>;
            pinctrl-names = "default", "sleep";
            pinctrl-1 = <0x0000001a>;
            status = "disabled";
            pinctrl-0 = <0x00000058>;
        };
        twi@0x01c27800 {
            #address-cells = <0x00000001>;
            #size-cells = <0x00000000>;
            compatible = "allwinner,sun3i-twi";
            device_type = "twi2";
            reg = <0x00000000 0x01c27800 0x00000000 0x00000400>;
            interrupts = <0x00000009>;
            clocks = <0x0000001b>;
            clock-frequency = <0x000186a0>;
            pinctrl-names = "default", "sleep";
            pinctrl-1 = <0x0000001d>;
            status = "disabled";
            pinctrl-0 = <0x00000059>;
        };
        spi@01c05000 {
            #address-cells = <0x00000001>;
            #size-cells = <0x00000000>;
            compatible = "allwinner,sun8i-spi";
            device_type = "spi0";
            reg = <0x00000000 0x01c05000 0x00000000 0x00001000>;
            interrupts = <0x0000000a>;
            clocks = <0x0000001e 0x0000001f>;
            clock-frequency = <0x05f5e100>;
            pinctrl-names = "default", "sleep";
            pinctrl-1 = <0x00000022 0x00000023>;
            spi0_cs_number = <0x00000001>;
            spi0_cs_bitmap = <0x00000001>;
            sd-spi-sel = <0x00000024 0x00000000 0x00000001 0x00000001 0x00000001 0x00000000 0x00000000>;
            sd-spi-act = <0x00000001>;
            dmas = <0x00000025 0x00000000 0x00000004 0x00000025 0x00000000 0x00000004>;
            dma-names = "rx", "tx";
            status = "okay";
            pinctrl-0 = <0x0000005c 0x0000005d>;
            nor_flash@0 {
                #address-cells = <0x00000001>;
                #size-cells = <0x00000001>;
                compatible = "st,m25p64";
                spi-max-frequency = <0x02faf080>;
                reg = <0x00000000>;
            };
        };
        spinand@01c05000 {
            compatible = "allwinner,sunxi-spinand";
            device_type = "spinand";
            reg = <0x00000000 0x01c05000 0x00000000 0x00001000>;
            interrupts = <0x0000000a>;
            clocks = <0x0000001e 0x0000001f>;
            pinctrl-names = "default", "sleep";
            pinctrl-0 = <0x0000005c 0x0000005d>;
            pinctrl-1 = <0x00000022 0x00000023>;
            nand0_regulator1 = "vcc-nand";
            nand0_regulator2 = "none";
            nand0_cache_level = <0x55aaaa55>;
            nand0_flush_cache_num = <0x55aaaa55>;
            nand0_capacity_level = <0x55aaaa55>;
            nand0_id_number_ctl = <0x55aaaa55>;
            nand0_print_level = <0x55aaaa55>;
            nand0_p0 = <0x55aaaa55>;
            nand0_p1 = <0x55aaaa55>;
            nand0_p2 = <0x55aaaa55>;
            nand0_p3 = <0x55aaaa55>;
            status = "okay";
        };
        spi@01c06000 {
            #address-cells = <0x00000001>;
            #size-cells = <0x00000000>;
            compatible = "allwinner,sun8i-spi";
            device_type = "spi1";
            reg = <0x00000000 0x01c06000 0x00000000 0x00001000>;
            interrupts = <0x0000000b>;
            clocks = <0x0000001e 0x00000026>;
            clock-frequency = <0x05f5e100>;
            pinctrl-names = "default", "sleep";
            pinctrl-1 = <0x00000029>;
            spi1_cs_number = <0x00000001>;
            spi1_cs_bitmap = <0x00000001>;
            status = "okay";
            pinctrl-0 = <0x0000005e 0x0000005f>;
            ssd2828@0 {
                compatible = "ss,ssd2828";
                spi-max-frequency = <0x017d7840>;
                gpios = <0x00000024 0x00000000 0x00000001 0x00000000 0x00000001 0x00000001 0x00000001>;
                reg = <0x00000000>;
            };
        };
        sdmmc@01c0f000 {
            compatible = "allwinner,sun3iw1p1-sdmmc0";
            device_type = "sdc0";
            reg = <0x00000000 0x01c0f000 0x00000000 0x00001000>;
            interrupts = <0x00000017>;
            clocks = <0x00000008 0x00000004 0x0000002a 0x0000002b 0x0000002c>;
            clock-names = "osc24m", "pll_periph", "mmc", "ahb", "rst";
            pinctrl-names = "default", "sleep";
            pinctrl-1 = <0x0000002e>;
            max-frequency = <0x02faf080>;
            bus-width = <0x00000004>;
            cap-sdio-irq;
            keep-power-in-suspend;
            ignore-pm-notify;
            status = "okay";
            sdc0_buswidth = <0x00000004>;
            pinctrl-0 = <0x00000064>;
            sdc0_det = <0x00000024 0x00000000 0x00000001 0x00000000 0x00000001 0x00000003 0xffffffff>;
            sdc0_use_wp = <0x00000000>;
            sdc0_wp;
            sdc0_isio = <0x00000000>;
            sdc0_regulator = "none";
        };
        sdmmc@01c10000 {
            compatible = "allwinner,sun3iw1p1-sdmmc1";
            device_type = "sdc1";
            reg = <0x00000000 0x01c10000 0x00000000 0x00001000>;
            interrupts = <0x00000018>;
            clocks = <0x00000008 0x00000004 0x0000002f 0x00000030 0x00000031>;
            clock-names = "osc24m", "pll_periph", "mmc", "ahb", "rst";
            pinctrl-names = "default", "sleep";
            pinctrl-1 = <0x00000033>;
            max-frequency = <0x02faf080>;
            bus-width = <0x00000001>;
            no-sdio;
            no-sd;
            non-removable;
            cap-sdio-irq;
            keep-power-in-suspend;
            ignore-pm-notify;
            sunxi-dly-52M-ddr4 = <0x00000001 0x00000000 0x00000000 0x00000000 0x00000002>;
            sunxi-dly-104M = <0x00000001 0x00000000 0x00000000 0x00000000 0x00000001>;
            sunxi-dly-208M = <0x00000001 0x00000000 0x00000000 0x00000000 0x00000001>;
            status = "disabled";
            sdc1_detmode = <0x00000004>;
            sdc1_buswidth = <0x00000001>;
            pinctrl-0 = <0x00000065>;
            sdc1_det;
            sdc1_use_wp = <0x00000000>;
            sdc1_wp;
            sdc1_isio = <0x00000001>;
            sdc1_regulator = "none";
        };
        disp@0x01e00000 {
            compatible = "allwinner,sunxi-disp";
            reg = <0x00000000 0x01e00000 0x00000000 0x00020000 0x00000000 0x01c0c000 0x00000000 0x00001000 0x00000000 0x01e70000 0x00000000 0x00010000>;
            interrupts = <0x0000001d 0x0000001f 0x0000001e 0x00000021>;
            clocks = <0x00000034 0x00000035 0x00000036 0x00000037 0x00000038>;
            status = "okay";
            device_type = "disp";
            disp_init_enable = <0x00000001>;
            disp_mode = <0x00000000>;
            screen0_output_type = <0x00000001>;
            screen0_output_mode = <0x00000004>;
            screen1_output_type = <0x00000001>;
            screen1_output_mode = <0x00000004>;
            fb0_framebuffer_num = <0x00000002>;
            fb0_pixel_sequence = <0x00000000>;
            fb0_scaler_mode_enable = <0x00000000>;
            fb0_format = <0x00000000>;
            fb0_width = <0x00000000>;
            fb0_height = <0x00000000>;
            fb1_framebuffer_num = <0x00000000>;
            fb1_pixel_sequence = <0x00000000>;
            fb1_scaler_mode_enable = <0x00000000>;
            fb1_format = <0x00000000>;
            fb1_width = <0x00000000>;
            fb1_height = <0x00000000>;
            lcd0_backlight = <0x00000032>;
            lcd1_backlight = <0x00000032>;
            lcd0_bright = <0x00000032>;
            lcd0_contrast = <0x00000032>;
            lcd0_saturation = <0x00000039>;
            lcd0_hue = <0x00000032>;
            lcd1_bright = <0x00000032>;
            lcd1_contrast = <0x00000032>;
            lcd1_saturation = <0x00000039>;
            lcd1_hue = <0x00000032>;
        };
        tvd0@01c0b000 {
            compatible = "allwinner,sunxi-tvd";
            reg = <0x00000000 0x01c0b000 0x00000000 0x00001000>;
            interrupts = <0x0000001b>;
            clocks = <0x00000039>;
            tvd_used = <0x00000001>;
            tvd_if = <0x00000000>;
            status = "okay";
        };
        lcd0@01c0c000 {
            compatible = "allwinner,sunxi-lcd0";
            pinctrl-names = "active", "sleep";
            status = "okay";
            device_type = "lcd0";
            lcd_used = <0x00000001>;
            lcd_driver_name = "ili6122_800x480";
            lcd_if = <0x00000000>;
            lcd_x = <0x00000320>;
            lcd_y = <0x00000500>;
            lcd_width = <0x00000087>;
            lcd_height = <0x000000d8>;
            lcd_dclk_freq = <0x0000003e>;
            lcd_pwm_used = <0x00000001>;
            lcd_pwm_ch = <0x00000000>;
            lcd_pwm_freq = <0x0000c350>;
            lcd_pwm_pol = <0x00000001>;
            lcd_hbp = <0x00000046>;
            lcd_ht = <0x000004c4>;
            lcd_hspw = <0x00000014>;
            lcd_vbp = <0x00000016>;
            lcd_vt = <0x00000523>;
            lcd_vspw = <0x00000006>;
            lcd_hv_if = <0x00000000>;
            lcd_hv_smode = <0x00000000>;
            lcd_hv_s888_if = <0x00000000>;
            lcd_hv_syuv_if = <0x00000000>;
            lcd_hv_vspw = <0x00000006>;
            lcd_hv_hspw = <0x00000014>;
            lcd_hv_sync_polarity = <0x00000001>;
            lcd_deu_mode = <0x00000001>;
            lcd_lvds_if = <0x00000000>;
            lcd_lvds_colordepth = <0x00000001>;
            lcd_lvds_mode = <0x00000000>;
            lcd_lvds_ch = <0x00000000>;
            lcd_lvds_bitwidth = <0x00000000>;
            lcd_lvds_io_cross = <0x00000000>;
            lcd_cpu_if = <0x00000000>;
            lcd_frm = <0x00000001>;
            lcd_rb_swap = <0x00000001>;
            lcd_io_phase = <0x00000000>;
            lcd_gamma_en = <0x00000000>;
            lcd_bright_curve_en = <0x00000000>;
            lcd_cmap_en = <0x00000000>;
            deu_mode = <0x00000000>;
            lcdgamma4iep = <0x00000016>;
            lcd_io_cfg0 = <0x00000000>;
            smart_color = <0x0000005a>;
            lcd_gpio_0 = <0x00000024 0x00000004 0x00000005 0x00000001 0x00000000 0xffffffff 0x00000000>;
            pinctrl-0 = <0x00000062 0x00000063>;
        };
        pwm@01c21000 {
            compatible = "allwinner,sunxi-pwm";
            reg = <0x00000000 0x01c21000 0x00000000 0x00000008>;
            pwm-number = <0x00000002>;
            pwm-base = <0x00000000>;
            pwms = <0x0000003a 0x0000003b>;
        };
        pwm0@01c21000 {
            compatible = "allwinner,sunxi-pwm0";
            pinctrl-names = "active", "sleep";
            pinctrl-0 = <0x0000003c>;
            pinctrl-1 = <0x0000003d>;
            reg_base = <0x01c21000>;
            reg_busy_offset = <0x00000000>;
            reg_busy_shift = <0x0000001c>;
            reg_enable_offset = <0x00000000>;
            reg_enable_shift = <0x00000004>;
            reg_clk_gating_offset = <0x00000000>;
            reg_clk_gating_shift = <0x00000006>;
            reg_bypass_offset = <0x00000000>;
            reg_bypass_shift = <0x00000009>;
            reg_pulse_start_offset = <0x00000000>;
            reg_pulse_start_shift = <0x00000008>;
            reg_mode_offset = <0x00000000>;
            reg_mode_shift = <0x00000007>;
            reg_polarity_offset = <0x00000000>;
            reg_polarity_shift = <0x00000005>;
            reg_period_offset = <0x00000004>;
            reg_period_shift = <0x00000010>;
            reg_period_width = <0x00000010>;
            reg_active_offset = <0x00000004>;
            reg_active_shift = <0x00000000>;
            reg_active_width = <0x00000010>;
            reg_prescal_offset = <0x00000000>;
            reg_prescal_shift = <0x00000000>;
            reg_prescal_width = <0x00000004>;
            linux,phandle = <0x0000003a>;
            phandle = <0x0000003a>;
        };
        pwm1@01c21000 {
            compatible = "allwinner,sunxi-pwm1";
            pinctrl-names = "active", "sleep";
            pinctrl-0 = <0x0000003e>;
            pinctrl-1 = <0x0000003f>;
            reg_base = <0x01c21000>;
            reg_busy_offset = <0x00000000>;
            reg_busy_shift = <0x0000001d>;
            reg_enable_offset = <0x00000000>;
            reg_enable_shift = <0x00000013>;
            reg_clk_gating_offset = <0x00000000>;
            reg_clk_gating_shift = <0x00000015>;
            reg_bypass_offset = <0x00000000>;
            reg_bypass_shift = <0x00000018>;
            reg_pulse_start_offset = <0x00000000>;
            reg_pulse_start_shift = <0x00000017>;
            reg_mode_offset = <0x00000000>;
            reg_mode_shift = <0x00000016>;
            reg_polarity_offset = <0x00000000>;
            reg_polarity_shift = <0x00000014>;
            reg_period_offset = <0x00000008>;
            reg_period_shift = <0x00000010>;
            reg_period_width = <0x00000010>;
            reg_active_offset = <0x00000008>;
            reg_active_shift = <0x00000000>;
            reg_active_width = <0x00000010>;
            reg_prescal_offset = <0x00000000>;
            reg_prescal_shift = <0x0000000f>;
            reg_prescal_width = <0x00000004>;
            linux,phandle = <0x0000003b>;
            phandle = <0x0000003b>;
        };
        deinterlace@01e70000 {
            compatible = "allwinner,sunxi-deinterlace";
            reg = <0x00000000 0x01e70000 0x00000000 0x00000080>;
            interrupts = <0x00000021>;
            clocks = <0x00000038 0x00000003>;
            status = "okay";
        };
        csi_res@0x01cb0000 {
            compatible = "allwinner,sunxi-csi";
            reg = <0x00000000 0x01cb0000 0x00000000 0x00001000>;
            clocks = <0x00000040 0x00000003 0x00000008>;
            clocks-index = <0x00000000 0x00000001 0x00000002>;
            status = "okay";
        };
        vfe@0 {
            device_type = "csi0";
            compatible = "allwinner,sunxi-vfe";
            interrupts = <0x00000020>;
            pinctrl-names = "default", "sleep";
            pinctrl-0 = <0x00000041>;
            pinctrl-1 = <0x00000042>;
            csi_sel = <0x00000000>;
            csi0_sensor_list = <0x00000000>;
            csi0_mck = <0x00000024 0x00000004 0x0000000b 0x00000002 0x00000001 0x00000003 0x00000000>;
            status = "okay";
            dev@1 {
                csi0_dev0_mname = "gc0308";
                csi0_dev0_twi_addr = <0x00000042>;
                csi0_dev0_twi_id = <0x00000000>;
                csi0_dev0_pos = "rear";
                csi0_dev0_isp_used = <0x00000000>;
                csi0_dev0_fmt = <0x00000000>;
                csi0_dev0_stby_mode = <0x00000000>;
                csi0_dev0_vflip = <0x00000000>;
                csi0_dev0_hflip = <0x00000000>;
                csi0_dev0_iovdd = <0x00000000>;
                csi0_dev0_iovdd_vol = <0x00000000>;
                csi0_dev0_avdd = <0x00000000>;
                csi0_dev0_avdd_vol = <0x00000000>;
                csi0_dev0_dvdd = <0x00000000>;
                csi0_dev0_dvdd_vol = <0x00000000>;
                csi0_dev0_afvdd = <0x00000000>;
                csi0_dev0_afvdd_vol = <0x00000000>;
                csi0_dev0_power_en;
                csi0_dev0_reset = <0x000007fc>;
                csi0_dev0_pwdn;
                csi0_dev0_flash_en;
                csi0_dev0_flash_mode;
                csi0_dev0_af_pwdn;
                csi0_dev0_act_used = <0x00000000>;
                csi0_dev0_act_name = <0x00000000>;
                csi0_dev0_act_slave = <0x00000000>;
                status = "okay";
            };
        };
        usbc0@0 {
            device_type = "usbc0";
            compatible = "allwinner,sunxi-otg-manager";
            usb_port_type = <0x00000000>;
            usb_detect_type = <0x00000001>;
            usb_detect_mode = <0x00000000>;
            usb_drv_vbus_gpio = <0x000007ff>;
            usb_host_init_state = <0x00000000>;
            usb_regulator_io = "nocare";
            usb_wakeup_suspend = <0x00000000>;
            usb_luns = <0x00000003>;
            usb_serial_unique = <0x00000000>;
            usb_serial_number = "20080411";
            rndis_wceis = <0x00000001>;
            status = "okay";
            usb_id_gpio;
            usb_det_vbus_gpio;
            usb_board_sel = <0x00000001>;
            usb_regulator_vol = <0x00000000>;
        };
        udc-controller@0x01c13000 {
            compatible = "allwinner,sunxi-udc";
            reg = <0x00000000 0x01c13000 0x00000000 0x00001000 0x00000000 0x01c00000 0x00000000 0x00000100>;
            interrupts = <0x0000001a>;
            clocks = <0x00000043 0x00000044>;
            status = "okay";
        };
        otghci0-controller@0x01c13000 {
            compatible = "allwinner,sunxi-hcd0";
            reg = <0x00000000 0x01c13000 0x00000000 0x00001000 0x00000000 0x01c00000 0x00000000 0x00000100>;
            interrupts = <0x0000001a>;
            clocks = <0x00000043 0x00000044>;
            hci_ctrl_no = <0x00000000>;
            status = "okay";
        };
        daudio@0x01c22000 {
            compatible = "allwinner,sunxi-daudio";
            reg = <0x00000000 0x01c22000 0x00000000 0x0000003c>;
            clocks = <0x00000002 0x00000045>;
            pinctrl-names = "default", "sleep";
            pinctrl-0 = <0x00000046>;
            pinctrl-1 = <0x00000047>;
            word_select_size = <0x00000020>;
            pcm_sync_period = <0x00000020>;
            pcm_lsb_first = <0x00000000>;
            over_sample_rate = <0x00000080>;
            slot_width_select = <0x00000010>;
            pcm_sync_type = <0x00000000>;
            pcm_start_slot = <0x00000000>;
            tx_data_mode = <0x00000000>;
            rx_data_mode = <0x00000000>;
            tdm_config = <0x00000001>;
            tdm_num = <0x00000000>;
            dmas = <0x00000025 0x00000000 0x0000000e 0x00000025 0x00000000 0x0000000e>;
            dma-names = "rx-tx", "rx-tx";
            status = "okay";
            linux,phandle = <0x0000004e>;
            phandle = <0x0000004e>;
        };
        spdif-controller@0x01c21400 {
            compatible = "allwinner,sunxi-spdif";
            reg = <0x00000000 0x01c21400 0x00000000 0x00000038>;
            clocks = <0x00000002 0x00000048>;
            pinctrl-names = "default", "sleep";
            pinctrl-0 = <0x00000049>;
            pinctrl-1 = <0x0000004a>;
            dmas = <0x00000025 0x00000000 0x00000001 0x00000025 0x00000000 0x00000001>;
            status = "disabled";
            linux,phandle = <0x0000004f>;
            phandle = <0x0000004f>;
        };
        codec@0x01c23c00 {
            compatible = "allwinner,sunxi-internal-codec";
            reg = <0x00000000 0x01c23c00 0x00000000 0x0000009c>;
            clocks = <0x00000002 0x0000004b>;
            gpio_shdn = <0x00000000>;
            headphonevol = <0x0000003b>;
            spkervol = <0x0000001b>;
            maingain = <0x00000004>;
            hp_dirused = <0x00000000>;
            pa_sleep_time = <0x0000015e>;
            status = "okay";
            linux,phandle = <0x0000004d>;
            phandle = <0x0000004d>;
        };
        cpudai0-controller@0x01c22000 {
            compatible = "allwinner,sunxi-internal-cpudai";
            reg = <0x00000000 0x01c23c00 0x00000000 0x0000009c>;
            clocks = <0x0000004b>;
            dmas = <0x00000025 0x00000000 0x0000000c 0x00000025 0x00000000 0x0000000c>;
            dma-names = "rx-tx", "rx-tx";
            status = "okay";
            linux,phandle = <0x0000004c>;
            phandle = <0x0000004c>;
        };
        sound@0 {
            compatible = "allwinner,sunxi-codec-machine";
            sunxi,cpudai-controller = <0x0000004c>;
            sunxi,audio-codec = <0x0000004d>;
            hp_detect_case = <0x00000000>;
            status = "okay";
        };
        sound@1 {
            compatible = "allwinner,sunxi-daudio0-machine";
            sunxi,daudio0-controller = <0x0000004e>;
            sunxi,snddaudio-codec = "nau8540.2-001d";
            sunxi,snddaudio-codec-dai = "nau8540-hifi";
            status = "okay";
        };
        sound@2 {
            compatible = "allwinner,sunxi-spdif-machine";
            sunxi,spdif-controller = <0x0000004f>;
            status = "okay";
        };
        wlan {
            compatible = "allwinner,sunxi-wlan";
            wlan-reset-pin = <0x00000024 0x00000003 0x00000010 0x00000000 0x00000001 0x00000001 0x00000001>;
            wlan-irq-pin = <0x00000024 0x00000003 0x0000000d 0x00000000 0x00000006 0x00000001 0x00000001>;
            wlan_busnum = <0x00000000>;
            status = "okay";
            device_type = "wlan";
            wlan_board_sel = <0x00000001>;
            wlan_hostwake = <0x00000024 0x00000004 0x00000003 0x00000006 0xffffffff 0xffffffff 0x00000001>;
            wlan_regon = <0x00000024 0x00000004 0x00000002 0x00000001 0x00000001 0x00000003 0x00000000>;
        };
        vdevice@0 {
            compatible = "allwinner,sun3i-vdevice";
            device_type = "Vdevice";
            pinctrl-names = "default";
            test-gpios = <0x00000024 0x00000003 0x00000001 0x00000001 0x00000002 0x00000002 0x00000001>;
            status = "disabled";
            pinctrl-0 = <0x00000066>;
        };
        keyboard {
            compatible = "allwinner,keyboard_2000mv";
            reg = <0x00000000 0x01c23400 0x00000000 0x00000400>;
            interrupts = <0x00000016>;
            status = "okay";
            pwr-key = <0x00000024 0x00000003 0x0000000e 0x00000000 0x00000006 0x00000001 0x00000000>;
            usb-sts = <0x00000024 0x00000003 0x0000000a 0x00000000 0x00000006 0x00000001 0x00000000>;
            key_cnt = <0x00000006>;
            key0 = <0x000000f8 0x00000073>;
            key1 = <0x00000193 0x00000072>;
            key2 = <0x0000024d 0x0000008b>;
            key3 = <0x00000307 0x0000001c>;
            key4 = <0x000003c1 0x00000066>;
            key5 = <0x000004b9 0x00000067>;
        };
        pwr_off_ctrl {
            compatible = "allwinner,pwr_off_ctrl";
            status = "okay";
        };
        battery {
            compatible = "allwinner,LRADC_battery";
            reg = <0x00000000 0x01c23400 0x00000000 0x00000400>;
            interrupts = <0x00000016>;
            status = "okay";
        };
        wirelesskey@0 {
            compatible = "allwinner,wireless-key";
            gpio-key = <0x00000024 0x00000004 0x00000003 0x00000000 0x00000006 0x00000001 0x00000001>;
            debounce = <0x00000000>;
            status = "disabled";
        };
        tp_key@0x01c24800 {
            compatible = "allwinner,tp_key";
            reg = <0x00000000 0x01c24800 0x00000000 0x000000f0>;
            interrupts = <0x00000014>;
            key_cnt = <0x0000000a>;
            key1 = <0x00000118 0x00000073>;
            key2 = <0x00000230 0x00000072>;
            key3 = <0x00000366 0x00000077>;
            key4 = <0x0000048f 0x0000001c>;
            key5 = <0x000005b4 0x00000175>;
            key6 = <0x000006cd 0x00000066>;
            key7 = <0x0000082f 0x00000000>;
            key8 = <0x0000095f 0x00000000>;
            key9 = <0x00000a78 0x00000000>;
            key10 = <0x00000b87 0x00000000>;
            status = "okay";
        };
        product {
            device_type = "product";
            version = "100";
            machine = "evb";
        };
        platform {
            device_type = "platform";
            eraseflag = <0x00000001>;
            debug_mode = <0x00000001>;
        };
        target {
            device_type = "target";
            boot_clock = <0x00000198>;
            storage_type = <0x00000005>;
            burn_key = <0x00000001>;
        };
        norflash {
            device_type = "norflash";
            size = <0x00000010>;
        };
        power_sply {
            device_type = "power_sply";
            dcdc1_vol = <0x00000bb8>;
            dcdc2_vol = <0x000004b0>;
            dcdc3_vol = <0x000004b0>;
            dcdc4_vol = <0x000004b0>;
            dcdc5_vol = <0x000005dc>;
            aldo2_vol = <0x00000708>;
            aldo3_vol = <0x00000bb8>;
        };
        pwr_ctrl {
            device_type = "pwr_ctrl";
            pwroff_gpio_is_irq = <0x00000000>;
        };
        card_boot {
            device_type = "card_boot";
            logical_start = <0x0000a000>;
            sprite_gpio0;
        };
        pm_para {
            device_type = "pm_para";
            standby_mode = <0x00000001>;
        };
        card0_boot_para {
            device_type = "card0_boot_para";
            card_ctrl = <0x00000000>;
            card_high_speed = <0x00000001>;
            card_line = <0x00000004>;
            pinctrl-0 = <0x00000051>;
        };
        card2_boot_para {
            device_type = "card2_boot_para";
            card_ctrl = <0x00000002>;
            card_high_speed = <0x00000001>;
            card_line = <0x00000008>;
            pinctrl-0 = <0x00000052>;
        };
        card1_boot_para {
            device_type = "card1_boot_para";
            card_ctrl = <0x00000001>;
            card_high_speed = <0x00000001>;
            card_line = <0x00000001>;
            pinctrl-0 = <0x00000053>;
        };
        twi_para {
            device_type = "twi_para";
            twi_port = <0x00000000>;
            pinctrl-0 = <0x00000054>;
        };
        uart_para {
            device_type = "uart_para";
            uart_debug_port = <0x00000001>;
            pinctrl-0 = <0x00000055>;
        };
        jtag_para {
            device_type = "jtag_para";
            jtag_enable = <0x00000000>;
            pinctrl-0 = <0x00000056>;
        };
        dram {
            device_type = "dram";
            dram_clk = <0x000001e0>;
            dram_type = <0x00000003>;
            dram_zq = <0x000077bb>;
            dram_odt_en = <0x00000001>;
            dram_para1 = <0x004319f4>;
            dram_para2 = <0x00000005>;
            dram_mr0 = <0x00000620>;
            dram_mr1 = <0x00000000>;
            dram_mr2 = <0x00000008>;
            dram_mr3 = <0x00000000>;
            dram_tpr0 = <0x06141b10>;
            dram_tpr1 = <0x00040416>;
            dram_tpr2 = <0x03030306>;
            dram_tpr3 = <0x00002006>;
            dram_tpr4 = <0x05040405>;
            dram_tpr5 = <0x05050302>;
            dram_tpr6 = <0x90006644>;
            dram_tpr7 = <0x42c21590>;
            dram_tpr8 = <0xd05612c0>;
            dram_tpr9 = <0x00083def>;
            dram_tpr10 = <0x18082356>;
            dram_tpr11 = <0x32034156>;
            dram_tpr12 = <0x00000000>;
            dram_tpr13 = <0x00000000>;
        };
        rtp_para {
            device_type = "rtp_para";
            rtp_used = <0x00000000>;
            rtp_screen_size = <0x00000005>;
            rtp_regidity_level = <0x00000005>;
            rtp_press_threshold_enable = <0x00000000>;
            rtp_press_threshold = <0x00001f40>;
            rtp_sensitive_level = <0x0000000f>;
            rtp_exchange_x_y_flag = <0x00000000>;
        };
        ctp {
            device_type = "ctp";
            status = "okay";
            ctp_twi_id = <0x00000000>;
            ctp_twi_addr = <0x00000048>;
            ctp_screen_max_x = <0x00000320>;
            ctp_screen_max_y = <0x000001e0>;
            ctp_revert_x_flag = <0x00000001>;
            ctp_revert_y_flag = <0x00000001>;
            ctp_exchange_x_y_flag = <0x00000001>;
        };
        tkey_para {
            device_type = "tkey_para";
            tkey_used = <0x00000000>;
            tkey_twi_id;
            tkey_twi_addr;
            tkey_int;
        };
        motor_para {
            device_type = "motor_para";
            motor_used = <0x00000000>;
        };
        nand0 {
            device_type = "nand0";
            nand0_support_2ch = <0x00000000>;
            status = "disabled";
            pinctrl-0 = <0x00000060 0x00000061>;
            nand0_regulator1 = "vcc-nand";
            nand0_regulator2 = "none";
            nand0_cache_level = <0x55aaaa55>;
            nand0_flush_cache_num = <0x55aaaa55>;
            nand0_capacity_level = <0x55aaaa55>;
            nand0_id_number_ctl = <0x55aaaa55>;
            nand0_print_level = <0x55aaaa55>;
            nand0_p0 = <0x55aaaa55>;
            nand0_p1 = <0x55aaaa55>;
            nand0_p2 = <0x55aaaa55>;
            nand0_p3 = <0x55aaaa55>;
        };
        pwm0_para {
            device_type = "pwm0_para";
            pwm_used = <0x00000000>;
        };
        pwm1_para {
            device_type = "pwm1_para";
            pwm_used = <0x00000000>;
        };
        vip0 {
            device_type = "vip0";
            status = "disabled";
            vip0_mname = "gc0308";
            vip0_twi_addr = <0x00000042>;
            vip0_twi_id = <0x00000000>;
            vip0_isp_used = <0x00000000>;
            vip0_fmt = <0x00000000>;
            vip0_stby_mode = <0x00000000>;
            vip0_vflip = <0x00000000>;
            vip0_hflip = <0x00000000>;
            vip0_iovdd;
            vip0_iovdd_vol = <0x002ab980>;
            vip0_avdd;
            vip0_avdd_vol = <0x002ab980>;
            vip0_dvdd;
            vip0_dvdd_vol = <0x0016e360>;
            vip0_afvdd;
            vip0_afvdd_vol = <0x002ab980>;
            vip0_power_en;
            vip0_reset = <0x000007fc>;
            vip0_pwdn;
            vip0_flash_en;
            vip0_flash_mode;
            vip0_af_pwdn;
        };
        tvout_para {
            device_type = "tvout_para";
            tvout_used;
            tvout_channel_num;
            tv_en;
        };
        tvin_para {
            device_type = "tvin_para";
            tvin_used;
            tvin_channel_num;
        };
        di {
            device_type = "di";
            status = "disabled";
        };
        smc {
            device_type = "smc";
            smc_used;
            smc_rst;
            smc_vppen;
            smc_vppp;
            smc_det;
            smc_vccen;
            smc_sck;
            smc_sda;
        };
        gsensor_para {
            device_type = "gsensor_para";
            gsensor_used = <0x00000000>;
            gsensor_twi_id = <0x00000002>;
            gsensor_twi_addr = <0x00000018>;
            gsensor_int1 = <0x00000024 0x00000000 0x00000009 0x00000006 0x00000001 0xffffffff 0xffffffff>;
            gsensor_int2;
        };
        gps_para {
            device_type = "gps_para";
        };
        gy_para {
            device_type = "gy_para";
            gy_used = <0x00000000>;
            gy_twi_id = <0x00000002>;
            gy_twi_addr = <0x0000006a>;
            gy_int1 = <0x00000024 0x00000000 0x0000000a 0x00000006 0x00000001 0xffffffff 0xffffffff>;
            gy_int2;
        };
        ls_para {
            device_type = "ls_para";
            ls_used = <0x00000000>;
            ls_twi_id = <0x00000002>;
            ls_twi_addr = <0x00000023>;
            ls_int = <0x00000024 0x00000000 0x0000000c 0x00000006 0x00000001 0xffffffff 0xffffffff>;
        };
        compass_para {
            device_type = "compass_para";
            compass_used = <0x00000000>;
            compass_twi_id = <0x00000002>;
            compass_twi_addr = <0x0000000d>;
            compass_int = <0x00000024 0x00000000 0x0000000b 0x00000006 0x00000001 0xffffffff 0xffffffff>;
        };
        bt_para {
            device_type = "bt_para";
            bt_used;
            bt_uart_id;
            bt_wakeup;
            bt_gpio;
            bt_rst;
        };
        audiospdif {
            device_type = "audiospdif";
            status = "disabled";
        };
        spdif_machine {
            device_type = "spdif_machine";
            status = "disabled";
        };
        audiohdmi {
            device_type = "audiohdmi";
            status = "disabled";
        };
        hdmi_machine {
            device_type = "hdmi_machine";
            status = "disabled";
        };
        pmu0 {
            device_type = "pmu0";
            status = "disabled";
            pmu_id = <0x00000006>;
            pmu_twi_addr = <0x00000034>;
            pmu_twi_id = <0x00000001>;
            pmu_irq_id = <0x00000000>;
            pmu_chg_ic_temp = <0x00000000>;
            pmu_battery_rdc = <0x00000064>;
            pmu_battery_cap = <0x00000000>;
            pmu_runtime_chgcur = <0x000001c2>;
            pmu_suspend_chgcur = <0x000005dc>;
            pmu_shutdown_chgcur = <0x000005dc>;
            pmu_init_chgvol = <0x00001068>;
            pmu_ac_vol = <0x00000fa0>;
            pmu_ac_cur = <0x00000000>;
            pmu_usbpc_vol = <0x00001130>;
            pmu_usbpc_cur = <0x000001f4>;
            pmu_battery_warning_level1 = <0x0000000f>;
            pmu_battery_warning_level2 = <0x00000000>;
            pmu_chgled_func = <0x00000000>;
            pmu_chgled_type = <0x00000000>;
            pmu_bat_para1 = <0x00000000>;
            pmu_bat_para2 = <0x00000000>;
            pmu_bat_para3 = <0x00000000>;
            pmu_bat_para4 = <0x00000000>;
            pmu_bat_para5 = <0x00000000>;
            pmu_bat_para6 = <0x00000000>;
            pmu_bat_para7 = <0x00000000>;
            pmu_bat_para8 = <0x00000000>;
            pmu_bat_para9 = <0x00000005>;
            pmu_bat_para10 = <0x00000008>;
            pmu_bat_para11 = <0x00000009>;
            pmu_bat_para12 = <0x0000000a>;
            pmu_bat_para13 = <0x0000000d>;
            pmu_bat_para14 = <0x00000010>;
            pmu_bat_para15 = <0x00000014>;
            pmu_bat_para16 = <0x00000021>;
            pmu_bat_para17 = <0x00000029>;
            pmu_bat_para18 = <0x0000002e>;
            pmu_bat_para19 = <0x00000032>;
            pmu_bat_para20 = <0x00000035>;
            pmu_bat_para21 = <0x00000039>;
            pmu_bat_para22 = <0x0000003d>;
            pmu_bat_para23 = <0x00000043>;
            pmu_bat_para24 = <0x00000049>;
            pmu_bat_para25 = <0x0000004e>;
            pmu_bat_para26 = <0x00000054>;
            pmu_bat_para27 = <0x00000058>;
            pmu_bat_para28 = <0x0000005c>;
            pmu_bat_para29 = <0x0000005d>;
            pmu_bat_para30 = <0x0000005e>;
            pmu_bat_para31 = <0x0000005f>;
            pmu_bat_para32 = <0x00000064>;
            pmu_bat_temp_enable = <0x00000000>;
            pmu_bat_charge_ltf = <0x000008d5>;
            pmu_bat_charge_htf = <0x00000184>;
            pmu_bat_shutdown_ltf = <0x00000c80>;
            pmu_bat_shutdown_htf = <0x000000ed>;
            pmu_bat_temp_para1 = <0x00001d2a>;
            pmu_bat_temp_para2 = <0x00001180>;
            pmu_bat_temp_para3 = <0x00000dbe>;
            pmu_bat_temp_para4 = <0x00000ae2>;
            pmu_bat_temp_para5 = <0x000008af>;
            pmu_bat_temp_para6 = <0x000006fc>;
            pmu_bat_temp_para7 = <0x000005a8>;
            pmu_bat_temp_para8 = <0x000003c9>;
            pmu_bat_temp_para9 = <0x00000298>;
            pmu_bat_temp_para10 = <0x000001d2>;
            pmu_bat_temp_para11 = <0x00000189>;
            pmu_bat_temp_para12 = <0x0000014d>;
            pmu_bat_temp_para13 = <0x0000011b>;
            pmu_bat_temp_para14 = <0x000000f2>;
            pmu_bat_temp_para15 = <0x000000b3>;
            pmu_bat_temp_para16 = <0x00000086>;
            pmu_powkey_off_time = <0x00001770>;
            pmu_powkey_off_func = <0x00000000>;
            pmu_powkey_off_en = <0x00000001>;
            pmu_powkey_long_time = <0x000005dc>;
            pmu_powkey_on_time = <0x000003e8>;
        };
        pmu0_regu {
            device_type = "pmu0_regu";
            regulator_count = <0x00000017>;
            regulator1 = "axp28_rtc";
            regulator2 = "axp28_aldo1";
            regulator3 = "axp28_aldo2";
            regulator4 = "axp28_aldo3";
            regulator5 = "axp28_dldo1";
            regulator6 = "axp28_dldo2";
            regulator7 = "axp28_dldo3";
            regulator8 = "axp28_dldo4";
            regulator9 = "axp28_eldo1";
            regulator0 = "axp28_eldo2";
            regulator11 = "axp28_eldo3";
            regulator12 = "axp28_fldo1";
            regulator13 = "axp28_fldo2";
            regulator14 = "axp28_dcdc1";
            regulator15 = "axp28_dcdc2";
            regulator16 = "axp28_dcdc3";
            regulator17 = "axp28_dcdc4";
            regulator18 = "axp28_dcdc5";
            regulator19 = "axp28_dcdc6";
            regulator20 = "axp28_dcdc7";
            regulator21 = "axp28_gpio0ldo";
            regulator22 = "axp28_gpio1ldo";
        };
        dvfs_table {
            device_type = "dvfs_table";
            max_freq = <0x47868c00>;
            min_freq = <0x1c9c3800>;
            LV_count = <0x00000008>;
            LV1_freq = <0x5b8d8000>;
            LV1_volt = <0x000005dc>;
            LV2_freq = <0x501bd000>;
            LV2_volt = <0x000005b4>;
            LV3_freq = <0x47868c00>;
            LV3_volt = <0x00000528>;
            LV4_freq = <0x3c14dc00>;
            LV4_volt = <0x000004b0>;
            LV5_freq = <0x30a32c00>;
            LV5_volt = <0x0000044c>;
            LV6_freq = <0x269fb200>;
            LV6_volt = <0x00000410>;
            LV7_freq = <0x00000000>;
            LV7_volt = <0x00000410>;
            LV8_freq = <0x00000000>;
            LV8_volt = <0x00000410>;
        };
        fel_key {
            device_type = "fel_key";
            keyen_flag = <0x00000000>;
            fel_key_max = <0x000001aa>;
            fel_key_min = <0x00000100>;
        };
        partitions {
            device_type = "partitions";
            bootlogo {
                device_type = "bootlogo";
                offset = <0x00002000>;
                size = <0x00000400>;
            };
            env {
                device_type = "env";
                offset = <0x00002400>;
                size = <0x00000200>;
            };
            boot {
                device_type = "boot";
                offset = <0x00002600>;
                size = <0x00003000>;
            };
            rootfs {
                device_type = "rootfs";
                offset = <0x00005600>;
                size = <0x00007800>;
            };
            rootfs_data {
                device_type = "rootfs_data";
                offset = <0x0000ce00>;
                size = <0x00007800>;
            };
            recovery {
                device_type = "recovery";
                offset = <0x00014600>;
                size = <0x00004000>;
            };
            misc {
                device_type = "misc";
                offset = <0x00018600>;
                size = <0x00000200>;
            };
            private {
                device_type = "private";
                offset = <0x00018800>;
                size = <0x00000200>;
            };
            UDISK {
                device_type = "UDISK";
                offset = <0x00018a00>;
                size = <0x00000000>;
            };
        };
    };
    aliases {
        serial0 = "/soc/uart@01c25000", "/soc/uart@01c25000";
        serial1 = "/soc/uart@01c25400", "/soc/uart@01c25400";
        serial2 = "/soc/uart@01c25800", "/soc/uart@01c25800";
        twi0 = "/soc/twi@0x01c27000", "/soc/twi@0x01c27000";
        twi1 = "/soc/twi@0x01c27400", "/soc/twi@0x01c27400";
        twi2 = "/soc/twi@0x01c27800", "/soc/twi@0x01c27800";
        spi0 = "/soc/spi@01c05000", "/soc/spi@01c05000";
        spinand = "/soc/spinand@01c05000", "/soc/spinand@01c05000";
        spi1 = "/soc/spi@01c06000", "/soc/spi@01c06000";
        mmc0 = "/soc/sdmmc@01c0f000", "/soc/sdmmc@01c0f000";
        mmc1 = "/soc/sdmmc@01c10000", "/soc/sdmmc@01c10000";
        global_timer0 = "/soc/timer@1c20c00", "/soc/timer@1c20c00";
        csi_res0 = "/soc/csi_res@0x01cb0000", "/soc/csi_res@0x01cb0000";
        vfe0 = "/soc/vfe@0", "/soc/vfe@0";
        disp = "/soc/disp@0x01e00000", "/soc/disp@0x01e00000";
        lcd0 = "/soc/lcd0@01c0c000", "/soc/lcd0@01c0c000";
        tvd = "/soc/tvd0@01c0b000", "/soc/tvd0@01c0b000";
        pwm = "/soc/pwm@01c21000", "/soc/pwm@01c21000";
        pwm0 = "/soc/pwm0@01c21000", "/soc/pwm0@01c21000";
        pwm1 = "/soc/pwm1@01c21000", "/soc/pwm1@01c21000";
    };
    chosen {
        bootargs = "earlyprintk=sunxi-uart,0x01c25000 loglevel=8 initcall_debug=1 console=ttyS0 init=/init";
        linux,initrd-start = <0x00000000 0x00000000>;
        linux,initrd-end = <0x00000000 0x00000000>;
    };
    cpus {
        #address-cells = <0x00000001>;
        #size-cells = <0x00000000>;
        cpu@0 {
            device_type = "cpu";
            compatible = "arm,arm926ejs";
            reg = <0x00000000>;
        };
    };
    sram_ctrl {
        device_type = "sram_ctrl";
        compatible = "allwinner,sram_ctrl";
        reg = <0x00000000 0x01c00000 0x00000000 0x00000100>;
    };
    ion {
        compatible = "allwinner,sunxi-ion";
        system {
            type = <0x00000000>;
        };
        cma {
            type = <0x00000004>;
        };
        system_contig {
            type = <0x00000001>;
        };
    };
    memory@80000000 {
        device_type = "memory";
        reg = <0x00000000 0x80000000 0x00000000 0x02000000>;
    };
    interrupt-controller@01c20400 {
        compatible = "allwinner,sun3i-intc";
        #interrupt-cells = <0x00000001>;
        #address-cells = <0x00000000>;
        device_type = "intc";
        interrupt-controller;
        reg = <0x00000000 0x01c20400 0x00000000 0x00001000>;
        linux,phandle = <0x00000001>;
        phandle = <0x00000001>;
    };
    watchdog@01c20ca0 {
        compatible = "allwinner,sun3i-wdt";
        reg = <0x00000000 0x01c20ca0 0x00000000 0x00000018>;
    };
};

#13 Re: RK3288/RK3399/RK1108 » RV1103/RV1106 裸奔日记 » 2024-09-24 16:07:38

新版xrock支持直接下载裸机代码到ram里,直接执行,而无需烧录,调试效率大大提升。

指令 如下:

xrock extra maskrom --rc4 off --sram rv1106_ddr_924MHz_v1.15.bin --delay 10
xrock extra maskrom-write-arm32 --rc4 off 0x00000000 xstar.bin
xrock extra maskrom-exec-arm32 --rc4 off 0x00000000

#14 Re: 全志 SOC » 全志有fel模式,瑞芯微有maskrom模式,为了给裸机开发舔砖加瓦,fel模式有xfel工具,那么maskrom模式就需要xrock工具了 » 2024-09-21 17:48:41

v1.1.2版本发布,这个版本增加了arm64核相关payload。

usage:
    xrock maskrom <ddr> <usbplug> [--rc4-off]    - Initial chip using ddr and usbplug in maskrom mode
    xrock download <loader>                      - Initial chip using loader in maskrom mode
    xrock ready                                  - Show chip ready or not
    xrock version                                - Show chip version
    xrock capability                             - Show capability information
    xrock reset [maskrom]                        - Reset chip to normal or maskrom mode
    xrock dump <address> <length>                - Dump memory region in hex format
    xrock read <address> <length> <file>         - Read memory to file
    xrock write <address> <file>                 - Write file to memory
    xrock exec <address> [dtb]                   - Call function address(Recommend to use extra command)
    xrock otp <length>                           - Dump otp memory in hex format
    xrock sn                                     - Read serial number
    xrock sn <string>                            - Write serial number
    xrock vs dump <index> <length> [type]        - Dump vendor storage in hex format
    xrock vs read <index> <length> <file> [type] - Read vendor storage
    xrock vs write <index> <file> [type]         - Write vendor storage
    xrock storage                                - Read storage media list
    xrock storage <index>                        - Switch storage media and show list
    xrock flash                                  - Detect flash and show information
    xrock flash erase <sector> <count>           - Erase flash sector
    xrock flash read <sector> <count> <file>     - Read flash sector to file
    xrock flash write <sector> <file>            - Write file to flash sector
extra:
    xrock extra maskrom --rc4 <on|off> [--sram <file> --delay <ms>] [--dram <file> --delay <ms>] [...]
    xrock extra maskrom-dump-arm32 --rc4 <on|off> --uart <register> <address> <length>
    xrock extra maskrom-dump-arm64 --rc4 <on|off> --uart <register> <address> <length>
    xrock extra maskrom-write-arm32 --rc4 <on|off> <address> <file>
    xrock extra maskrom-write-arm64 --rc4 <on|off> <address> <file>
    xrock extra maskrom-exec-arm32 --rc4 <on|off> <address>
    xrock extra maskrom-exec-arm64 --rc4 <on|off> <address>

比如你想dump rk3588的bootrom,在maskrom模式下,执行如下指令即可,调试串口会以16进制方式打印出dump内容。

xrock extra maskrom-dump-arm64 --rc4 off --uart 0xfeb50000 0xffff0000 1024

https://github.com/xboot/xrock/releases

#15 Re: 全志 SOC » 全志有fel模式,瑞芯微有maskrom模式,为了给裸机开发舔砖加瓦,fel模式有xfel工具,那么maskrom模式就需要xrock工具了 » 2024-09-20 13:13:41

xrock终于突破瑞芯微的限制,瑞芯微在执行权限上,限制得比较死,要想在无flash的板子上运行程序,基本是不可能的事,都是需要将程序预先烧录到flash中,然后复位,才能实现引导,这给裸机调试带来很多麻烦,如果能直接将裸机程序烧写到ram中再执行,将大大提升开发的效率。

通过仔细研究maskrom后发现,我们完全可以在maskrom模式下编写各种payload,来实现各种骚操作。比如,初始化DDR,写程序到RAM中,指定地址执行等,还有很多其他奇淫技巧,比如开jtag,操作寄存器,你甚至都可以直接用jtag调试器来调试bootrom。

贴一个write指令的payload。
write-payload.png

先保存maskrom上下文,再memmove,将附在此payload尾巴上的程序搬移到目的地址。最后在恢复maskrom环境,再次进去maskrom模式。

sudo xrock extra maskrom --rc4 off --sram rv1106_ddr_924MHz_v1.15.bin --delay 10
sudo xrock extra maskrom-write-arm32 --rc4 off 0x00000000 xstar.bin
sudo xrock extra maskrom-exec-arm32 --rc4 off 0x00000000

上面这些命令,就是先初始化RV1106的内部DDR,再将xstar.bin程序写入到DDR空间,DDR空间从0地址开始,然后再执行0地址的程序。
这里借用了rkbin里面的ddr初始化程序。

    xrock maskrom <ddr> <usbplug> [--rc4-off]    - Initial chip using ddr and usbplug in maskrom mode
    xrock download <loader>                      - Initial chip using loader in maskrom mode
    xrock ready                                  - Show chip ready or not
    xrock version                                - Show chip version
    xrock capability                             - Show capability information
    xrock reset [maskrom]                        - Reset chip to normal or maskrom mode
    xrock dump <address> <length>                - Dump memory region in hex format
    xrock read <address> <length> <file>         - Read memory to file
    xrock write <address> <file>                 - Write file to memory
    xrock exec <address> [dtb]                   - Call function address(Recommend to use extra command)
    xrock otp <length>                           - Dump otp memory in hex format
    xrock sn                                     - Read serial number
    xrock sn <string>                            - Write serial number
    xrock vs dump <index> <length> [type]        - Dump vendor storage in hex format
    xrock vs read <index> <length> <file> [type] - Read vendor storage
    xrock vs write <index> <file> [type]         - Write vendor storage
    xrock storage                                - Read storage media list
    xrock storage <index>                        - Switch storage media and show list
    xrock flash                                  - Detect flash and show information
    xrock flash erase <sector> <count>           - Erase flash sector
    xrock flash read <sector> <count> <file>     - Read flash sector to file
    xrock flash write <sector> <file>            - Write file to flash sector
extra:
    xrock extra maskrom --rc4 <on|off> [--sram <file> --delay <ms>] [--dram <file> --delay <ms>] [...]
    xrock extra maskrom-write-arm32 --rc4 <on|off> <address> <file>
    xrock extra maskrom-exec-arm32 --rc4 <on|off> <address>

这是完整指令说明。

#16 Re: 全志 SOC » 全志有fel模式,瑞芯微有maskrom模式,为了给裸机开发舔砖加瓦,fel模式有xfel工具,那么maskrom模式就需要xrock工具了 » 2024-09-10 16:00:57

补充一个xrock dump系统固件仅能支持32MB的问题,这问题主要出现在官方实现的uboot源码里做了限制,rockusb协议实现限制了读操作的最大范围,超过了限定区域全部返回0xCC,要修复此问题也比较简单,删除限制代码或者放宽RKUSB_READ_LIMIT_ADDR宏定义的值。看一下如下代码就了解了。

#define RKUSB_READ_LIMIT_ADDR	        (32 * 2048)	/* 32MB */
static int rkusb_read_sector(struct ums *ums_dev,
                             ulong start, lbaint_t blkcnt, void *buf)
{
        struct blk_desc *block_dev = &ums_dev->block_dev;
        lbaint_t blkstart = start + ums_dev->start_sector;
        int ret;

        if ((blkstart + blkcnt) > RKUSB_READ_LIMIT_ADDR) {
                memset(buf, 0xcc, blkcnt * SECTOR_SIZE);
                return blkcnt;
        } else {
                ret = blk_dread(block_dev, blkstart, blkcnt, buf);
                if (!ret)
                        ret = -EIO;
                return ret;
        }
}

此限制仅针对于dump,写入是没有任何限制的。uboot有源码修复相对简单,但闭源的usbplug需要修复此问题的话,就只能去hack了,实测不是每个usbplug都做了限制,当遇到此问题时,需要注意下此限制。

#17 Re: 全志 SOC » 全志有fel模式,瑞芯微有maskrom模式,为了给裸机开发舔砖加瓦,fel模式有xfel工具,那么maskrom模式就需要xrock工具了 » 2024-09-06 12:15:35

转眼开发xrock已经三年了,最近有闲情,通过逆向并实现了部分指令,包括序列号读写,vendor storage访问,多存储器切换,otp dump等。

usage:
    xrock maskrom <ddr> <usbplug> [--rc4-off]    - Initial chip using ddr and usbplug in maskrom mode
    xrock download <loader>                      - Initial chip using loader in maskrom mode
    xrock ready                                  - Show chip ready or not
    xrock version                                - Show chip version
    xrock capability                             - Show capability information
    xrock reset [maskrom]                        - Reset chip to normal or maskrom mode
    xrock dump <address> <length>                - Dump memory region in hex format
    xrock read <address> <length> <file>         - Read memory to file
    xrock write <address> <file>                 - Write file to memory
    xrock exec <address> [dtb]                   - Call function address
    xrock otp <length>                           - Dump otp memory in hex format
    xrock sn                                     - Read serial number
    xrock sn <string>                            - Write serial number
    xrock vs dump <index> <length> [type]        - Dump vendor storage in hex format
    xrock vs read <index> <length> <file> [type] - Read vendor storage
    xrock vs write <index> <file> [type]         - Write vendor storage
    xrock storage                                - Read storage media list
    xrock storage <index>                        - Switch storage media and show list
    xrock flash                                  - Detect flash and show information
    xrock flash erase <sector> <count>           - Erase flash sector
    xrock flash read <sector> <count> <file>     - Read flash sector to file
    xrock flash write <sector> <file>            - Write file to flash sector
extra:
    xrock extra maskrom --rc4 <on|off> [--sram <file> --delay <ms>] [--dram <file> --delay <ms>] [...]

当前版本为v1.0.9
https://gitee.com/xboot/xrock/releases

#18 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » 穷叉叉的技术人员或组织是如何吸引投资者投钱的? » 2024-02-18 17:38:34

光靠一个点子,一个显得牛逼的普通技术,很难吸引投资者,你得讲得通,底层逻辑,顶层设计,商业闭环,盈利模式,护城河,决策路径,平台战略,信息屏障,抓手,赋能,差异化,颗粒度,组合拳,载体,链路。

#21 Re: 全志 SOC » xfel执行初始化T113 DDR后USB无响应 » 2023-07-25 17:21:49

S4 那DDR参数也需要跟着变成 t113-s4

#22 Re: 全志 SOC » 深入研究T113 EFUSE,现已扩展XFEL工具,并支持烧写T113熔丝位 » 2023-07-13 15:25:15

翻了一下,当时的《全志D1芯片之终极探索》,尽然记录了这个异常的CHIP ID。算是在两年后给了一个交代。

123_20230713-1523.png

#23 Re: 全志 SOC » 深入研究T113 EFUSE,现已扩展XFEL工具,并支持烧写T113熔丝位 » 2023-07-13 15:04:28

我来当小白鼠了,CHIP ID是可以改写的。在T113芯片上测试

先读取出厂的CHIP ID,前4个字节为93406000

$ xfel extra efuse dump
chipid:(0x0000 128-bits)
    93406000 0c004814 01426250 48671b4b 

将前4个字节修改为0xffffffff

$ xfel extra efuse write32 0x00 0xffffffff

再次查看芯片的CHIP ID,已经被修改为0xffffffff了。

$ xfel extra efuse dump
chipid:(0x0000 128-bits)
    ffffffff 0c004814 01426250 48671b4b 

结论,关于CHIP ID,你真的可以用xfel工具,自己重写一个。如果全志出厂时,CHIP ID全0的话,你是真的可以完美复制出两个一模一样的芯片。
我印象中,当时还在研究D1,手上拿到了一颗F133样片,里面的SID就是全0,当时还很奇怪,为何没有SID呢,原来仅仅是没烧写。

一转眼,距离离研究D1芯片,已经过去2年了, 这该死的时间,也不慢一点。

#24 Re: 全志 SOC » 深入研究T113 EFUSE,现已扩展XFEL工具,并支持烧写T113熔丝位 » 2023-07-13 13:37:31

zjswuyunbo 说:

@xboot


chipid是efuse,那岂不是所有芯片的chipid都可以被修改成ffffff,那岂不是只要有ffffff设备的密钥或证书,就能全部运行了?

是的,可以这么说,谁要愿意,可以去写一下chip id 看看

#25 Re: 全志 SOC » 深入研究T113 EFUSE,现已扩展XFEL工具,并支持烧写T113熔丝位 » 2023-07-12 23:38:29

ubuntu 说:

就是说编程 LCJS 之后,是启动SBROM,否则是启动BROM?

是的,关于rotpk,准确的表达是,全0,全1,或者没个字节都一样时,可以运行加密固件而不需要校验签名。只有每个字节,有一个不同时,才启用校验功能。

额,我发现加密安全引导漏洞了,我仅需将rotpk字段再次烧写为全1,那么就可以引导我自己的加密固件了,这全志的安全引导,真值得商榷。在加密模式只要可以引导自己的加密固件,那么所有的安全都形同虚设。

额,好吧,安全芯片,做好真心不太容易。

#26 Re: 全志 SOC » 深入研究T113 EFUSE,现已扩展XFEL工具,并支持烧写T113熔丝位 » 2023-07-12 22:43:13

TVOUT efuse是用于设置TVE模块的bias

tvout:(0x002c 32-bits)
    0000028f

1_20230712-2242.png

#27 Re: 全志 SOC » 深入研究T113 EFUSE,现已扩展XFEL工具,并支持烧写T113熔丝位 » 2023-07-12 22:22:45

在DUMP EFUSE后,有一个ft-zone字段,一直不能明白ft是啥意思,现在终于搞明白了,原来是final test (FT) stage的缩写,芯片终测后,写入的EFUSE值,总共128bit,具体是干啥的,就不得而知了。

ft-zone:(0x001c 128-bits)
    898f1919 0f760f6c 3108126c 811a0a0e

final test (FT) stage

#28 Re: 全志 SOC » 深入研究T113 EFUSE,现已扩展XFEL工具,并支持烧写T113熔丝位 » 2023-07-12 22:04:21

受影响,我们常用的非加密模式引导头是egon,如果修改成加密引导,那么加密头就需要toc0,这个部分有些差异,toc头信息比egon信息要多一些,能否兼容,这个还没有深入研究,现在只知道,两个头信息不一样的,这些操作都是SBROM里面来实现的,而且全志的BROM有两套,一个是普通的BROM,另一个是SBROM,根据EFUSE配置,自动选择对应的BROM,SBROM也是可以dump出来的。前提是烧写LCJS后,用程序dump出来,FEL模式是无法dump SBROM,fel仅存在与非加密模式

#29 Re: 全志 SOC » 深入研究T113 EFUSE,现已扩展XFEL工具,并支持烧写T113熔丝位 » 2023-07-12 21:38:12

memory 说:

chipid 0状态的bit 可以重写吗?

我觉得应该是可写的,只是还没有这样去操作过,此过程,跟全志芯片出厂时流程一致。之前实验过OEM段,多次写入,0值bit可以再次编程到1。

#30 Re: 全志 SOC » 深入研究T113 EFUSE,现已扩展XFEL工具,并支持烧写T113熔丝位 » 2023-07-12 21:34:54

要启用加密引导模式,需要将LCJS段里面的某个bit写1,就启用加密引导了,如果这个时候rotpk段还没有写入,那么全志的会引导任何一个加密引导固件,不进行任何校验,但只要写入了rotpk(非全0),就需要校验了。

rotpk,其实就是RSA2048公钥的SHA256摘要,总共256bit,这个在烧写时,必须保留好RSA2048私钥,否则就像锁门并焊死锁孔。

#31 Re: 全志 SOC » 深入研究T113 EFUSE,现已扩展XFEL工具,并支持烧写T113熔丝位 » 2023-07-12 21:23:49

当烧写了加密引导,如果所有固件都引导失败了,会自动进入非加密模式的FEL。

#32 Re: 全志 SOC » 深入研究T113 EFUSE,现已扩展XFEL工具,并支持烧写T113熔丝位 » 2023-07-12 21:21:58

有厂家提前烧好的区域,比如chipid,thermal-sensor,但这些都还是可见的,全志在启用加密引导功能后,有部分EFUSE就不可见了,读取会直接返回0。

全志SOC,写EFUSE,必须通过SID控制器,通过寄存器操作来写入,但读取EFUSE,有两种方案,一种是比较简单的SRAM映射,直接用MMIO来访问就可以了,这里有个细节需要注意,仅支持word字访问,不支持byte字节访问,还有一种方案,就是用SID控制器来读取。

SRAM映射方案,只有在SOC重启时更新一次,所以,如果新写入了efuse,想不重启来查看的话,就需要用SID控制器来读取。

启用加密模式后,SID控制器访问也会受限,需要用SMC相关指令来访问,具体还没有研究加密后的SID控制器。

#33 Re: 全志 SOC » 深入研究T113 EFUSE,现已扩展XFEL工具,并支持烧写T113熔丝位 » 2023-07-12 16:32:31

上面的验签过程,有两种应用场景,需求不同,思路也会不同。

第一种,自己的产品防盗版,没有升级需求,或者loader没有升级需求,也就是某部分固件,完全不变化,且需防盗版抄袭。
这种需求,你需要将CPU ID + 固件或者loader,两者所有信息进行sha256摘要运算,并用ECDSA256对SHA256的摘要进行签名,存储在EFUSE里。当别人复制产品时,复制了SPI NOR FLASH,复制了EFUSE 签名,因CPU ID不同,也无法正常验签。

第二种,自己是方案商仅出主控芯片,客户自行烧录生产,有固件及各种烧写工具。这种情况要求客户必须从你这里走芯片,而不能从市面上随便购买。
对于这种需求,仅需要对CPU ID 进行SHA256摘要运算,并用ECDSA256对SHA256的摘要进行签名,存储在EFUSE里,烧录好,出给客户就可以了。客户可以随便刷机,升级,但不能随便购买芯片。

当然,固件完整性,固件防逆向,这些需求,可结合坑网之前的讨论的帖子,来实现。

最后一句话,攻防手段千千万,但几千年来,唯一不变的,还是人心,人性。

#34 Re: 全志 SOC » 深入研究T113 EFUSE,现已扩展XFEL工具,并支持烧写T113熔丝位 » 2023-07-12 15:57:03

在F133芯片上,烧写ECDSA256 64字节签名文件到EFUSE,偏移为0x00c0区域,也就是2048bit的最后面的512bit,efuse前面的bit有各种隐藏用途,需小心使用,但后面的bit就随便整了。无需担心变砖。

经验证,是可以通过efuse来存储签名文件,并能够验签通过。

1,通过write指令烧写64字节签名文件,烧写到0xc0这个偏移位置

xfel extra efuse write 0x00c0 sign.bin

2,查看烧写好的efuse,发现0xc0偏移,已经储存了签名文件,与sign.bin的内容保持一致

xfel extra efuse dump
chipid:(0x0000 128-bits)
    93005c00 ac004814 01425a4c 1c5318cb 
brom-conf-try:(0x0010 32-bits)
    00000000 
thermal-sensor:(0x0014 64-bits)
    7906c10a 019db011 
ft-zone:(0x001c 128-bits)
    83883119 0ef00f02 2b06111c 87180a0b 
tvout:(0x002c 32-bits)
    00000285 
tvout-gamma:(0x0030 64-bits)
    00000000 00000000 
oem-program:(0x0038 64-bits)
    11223344 55667788 
write-protect:(0x0040 32-bits)
    00000000 
read-protect:(0x0044 32-bits)
    00000000 
reserved1:(0x0048 64-bits)
    00000000 00000000 
huk:(0x0050 192-bits)
    00000000 00000000 00000000 00000000 00000000 00000000 
reserved2:(0x0068 64-bits)
    00000000 00000000 
rotpk:(0x0070 256-bits)
    00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
ssk:(0x0090 256-bits)
    00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
rssk:(0x00b0 128-bits)
    00000000 00000000 00000000 00000000 
hdcp-hash:(0x00c0 128-bits)
    e133aa93 7aaf3227 14b10f12 06b71c6c 
nv1:(0x00d0 32-bits)
    ef80e46e 
nv2:(0x00d4 32-bits)
    e0ba33d4 
reserved3:(0x00d8 96-bits)
    a6fe6c3c f65c2d60 915ae6c7 
oem-program-secure:(0x00e4 224-bits)
    90ce9b07 94906489 3e39dce8 d06473aa 1dda2501 1f940484 36a770d8 

3, 验签,将efuse里的签名读出来,用ECDSA256公钥进行验签,这里是对CPU唯一序列号的SHA256摘要进行验签。经过这样的操作,只要你没有ECDSA256私钥,你是无法生成正确的签名文件的,那么验签就无法通过。当别人想抄板或更换CPU,因序列号变了,且没有正确的签名,就无法启动运行,实现放盗版保护。

#35 Re: 全志 SOC » 深入研究T113 EFUSE,现已扩展XFEL工具,并支持烧写T113熔丝位 » 2023-07-12 12:50:28

扩展XFEL,支持V851/V853芯片的EFUSE读写操作

$ xfel extra efuse dump
chipid:(0x0000 128-bits)
    62c07800 cc004820 0145c519 204e1a8c 
brom-conf-try:(0x0010 32-bits)
    00000000 
thermal-sensor:(0x0014 64-bits)
    2291c0f9 007c9279 
ft-zone:(0x001c 128-bits)
    100f1109 13210de2 00278600 00691510 
reserved1:(0x002c 96-bits)
    00000000 00000000 00000000 
write-protect:(0x0038 32-bits)
    00000000 
read-protect:(0x003c 32-bits)
    00000000 
lcjs:(0x0040 32-bits)
    00000000 
reserved2:(0x0044 800-bits)
    00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
    00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
    00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
    00000000 
rotpk:(0x00a8 256-bits)
    00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
reserved3:(0x00c8 448-bits)
    00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
    00000000 00000000 00000000 00000000 00000000 00000000 

#36 Re: 全志 SOC » 深入研究T113 EFUSE,现已扩展XFEL工具,并支持烧写T113熔丝位 » 2023-07-12 11:32:46

山羊胡子 说:

写完会熔断吗?会不会因为写efuse不当导致芯片成砖

这个是可能的,比如你烧写了加密引导位,并且随便填了个rotpk的sha256值,那么你的芯片就永远无法启动了,没有合法的加密引导签名,谁都没辙,就变砖了。

但只要不碰到关键熔丝,还是没啥风险的,在操作之前,仔细确认EFUSE分配信息,就无伤大雅了。

efuse分配信息,其实也不是一成不变的,除了核心分配信息,基本都是随着SDK的而重新分配的,这些细节就只能去翻代码了。

有些efuse存储了全志出厂时的芯片校正信息,比如温度传感器校正参数,TVOUT校正,各种AD,DA,内部RC补偿等等,这些没有文档,只能自己去寻找蛛丝马迹了。

#37 Re: 全志 SOC » 深入研究T113 EFUSE,现已扩展XFEL工具,并支持烧写T113熔丝位 » 2023-07-12 10:38:33

现在XFEL支持了D1 / D1s / F133芯片的EFUSE读写操作

1,dump efuse

$ xfel extra efuse dump
chipid:(0x0000 128-bits)
    93005c00 ac004814 01425a4c 1c5318cb 
brom-conf-try:(0x0010 32-bits)
    00000000 
thermal-sensor:(0x0014 64-bits)
    7906c10a 019db011 
ft-zone:(0x001c 128-bits)
    83883119 0ef00f02 2b06111c 87180a0b 
tvout:(0x002c 32-bits)
    00000285 
tvout-gamma:(0x0030 64-bits)
    00000000 00000000 
oem-program:(0x0038 64-bits)
    00000000 00000000 
write-protect:(0x0040 32-bits)
    00000000 
read-protect:(0x0044 32-bits)
    00000000 
reserved1:(0x0048 64-bits)
    00000000 00000000 
huk:(0x0050 192-bits)
    00000000 00000000 00000000 00000000 00000000 00000000 
reserved2:(0x0068 64-bits)
    00000000 00000000 
rotpk:(0x0070 256-bits)
    00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
ssk:(0x0090 256-bits)
    00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
rssk:(0x00b0 128-bits)
    00000000 00000000 00000000 00000000 
hdcp-hash:(0x00c0 128-bits)
    00000000 00000000 00000000 00000000 
nv1:(0x00d0 32-bits)
    00000000 
nv2:(0x00d4 32-bits)
    00000000 
reserved3:(0x00d8 96-bits)
    00000000 00000000 00000000 
oem-program-secure:(0x00e4 224-bits)
    00000000 00000000 00000000 00000000 00000000 00000000 00000000 

2, write oem-program 1

$ xfel extra efuse write32 0x0038 0x11223344
$ xfel extra efuse dump
chipid:(0x0000 128-bits)
    93005c00 ac004814 01425a4c 1c5318cb 
brom-conf-try:(0x0010 32-bits)
    00000000 
thermal-sensor:(0x0014 64-bits)
    7906c10a 019db011 
ft-zone:(0x001c 128-bits)
    83883119 0ef00f02 2b06111c 87180a0b 
tvout:(0x002c 32-bits)
    00000285 
tvout-gamma:(0x0030 64-bits)
    00000000 00000000 
oem-program:(0x0038 64-bits)
    11223344 00000000 
write-protect:(0x0040 32-bits)
    00000000 
read-protect:(0x0044 32-bits)
    00000000 
reserved1:(0x0048 64-bits)
    00000000 00000000 
huk:(0x0050 192-bits)
    00000000 00000000 00000000 00000000 00000000 00000000 
reserved2:(0x0068 64-bits)
    00000000 00000000 
rotpk:(0x0070 256-bits)
    00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
ssk:(0x0090 256-bits)
    00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
rssk:(0x00b0 128-bits)
    00000000 00000000 00000000 00000000 
hdcp-hash:(0x00c0 128-bits)
    00000000 00000000 00000000 00000000 
nv1:(0x00d0 32-bits)
    00000000 
nv2:(0x00d4 32-bits)
    00000000 
reserved3:(0x00d8 96-bits)
    00000000 00000000 00000000 
oem-program-secure:(0x00e4 224-bits)
    00000000 00000000 00000000 00000000 00000000 00000000 00000000 

3, write oem-program 2

$ xfel extra efuse write32 0x003c 0x55667788
$ xfel extra efuse dump
chipid:(0x0000 128-bits)
    93005c00 ac004814 01425a4c 1c5318cb 
brom-conf-try:(0x0010 32-bits)
    00000000 
thermal-sensor:(0x0014 64-bits)
    7906c10a 019db011 
ft-zone:(0x001c 128-bits)
    83883119 0ef00f02 2b06111c 87180a0b 
tvout:(0x002c 32-bits)
    00000285 
tvout-gamma:(0x0030 64-bits)
    00000000 00000000 
oem-program:(0x0038 64-bits)
    11223344 55667788 
write-protect:(0x0040 32-bits)
    00000000 
read-protect:(0x0044 32-bits)
    00000000 
reserved1:(0x0048 64-bits)
    00000000 00000000 
huk:(0x0050 192-bits)
    00000000 00000000 00000000 00000000 00000000 00000000 
reserved2:(0x0068 64-bits)
    00000000 00000000 
rotpk:(0x0070 256-bits)
    00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
ssk:(0x0090 256-bits)
    00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
rssk:(0x00b0 128-bits)
    00000000 00000000 00000000 00000000 
hdcp-hash:(0x00c0 128-bits)
    00000000 00000000 00000000 00000000 
nv1:(0x00d0 32-bits)
    00000000 
nv2:(0x00d4 32-bits)
    00000000 
reserved3:(0x00d8 96-bits)
    00000000 00000000 00000000 
oem-program-secure:(0x00e4 224-bits)
    00000000 00000000 00000000 00000000 00000000 00000000 00000000 

4, reboot and dump efuse again

$ xfel extra efuse dump
chipid:(0x0000 128-bits)
    93005c00 ac004814 01425a4c 1c5318cb 
brom-conf-try:(0x0010 32-bits)
    00000000 
thermal-sensor:(0x0014 64-bits)
    7906c10a 019db011 
ft-zone:(0x001c 128-bits)
    83883119 0ef00f02 2b06111c 87180a0b 
tvout:(0x002c 32-bits)
    00000285 
tvout-gamma:(0x0030 64-bits)
    00000000 00000000 
oem-program:(0x0038 64-bits)
    11223344 55667788 
write-protect:(0x0040 32-bits)
    00000000 
read-protect:(0x0044 32-bits)
    00000000 
reserved1:(0x0048 64-bits)
    00000000 00000000 
huk:(0x0050 192-bits)
    00000000 00000000 00000000 00000000 00000000 00000000 
reserved2:(0x0068 64-bits)
    00000000 00000000 
rotpk:(0x0070 256-bits)
    00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
ssk:(0x0090 256-bits)
    00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
rssk:(0x00b0 128-bits)
    00000000 00000000 00000000 00000000 
hdcp-hash:(0x00c0 128-bits)
    00000000 00000000 00000000 00000000 
nv1:(0x00d0 32-bits)
    00000000 
nv2:(0x00d4 32-bits)
    00000000 
reserved3:(0x00d8 96-bits)
    00000000 00000000 00000000 
oem-program-secure:(0x00e4 224-bits)
    00000000 00000000 00000000 00000000 00000000 00000000 00000000 

#38 Re: 全志 SOC » 深入研究T113 EFUSE,现已扩展XFEL工具,并支持烧写T113熔丝位 » 2023-07-12 10:29:27

EFUSE写操作仅能由0 到 1,所以只要是保持0状态的bit,都是可以写入的,当你都搞成1了,就无力回天了,没办法变成0。熔丝熔断了,是个不可逆的物理过程。

#39 Re: 全志 SOC » 深入研究T113 EFUSE,现已扩展XFEL工具,并支持烧写T113熔丝位 » 2023-07-11 22:28:40

efuse分配信息如下:

static const struct sid_section_t {
	char * name;
	uint32_t offset;
	uint32_t size_bits;
} sids[] = {
	{ "chipid",             0x0000,  128 },
	{ "brom-conf-try",      0x0010,   32 },
	{ "thermal-sensor",     0x0014,   64 },
	{ "ft-zone",            0x001c,  128 },
	{ "tvout",              0x002c,   32 },
	{ "tvout-gamma",        0x0030,   64 },
	{ "oem-program",        0x0038,   64 },
	{ "write-protect",      0x0040,   32 },
	{ "read-protect",       0x0044,   32 },
	{ "reserved1",          0x0048,   64 },
	{ "huk",                0x0050,  192 },
	{ "reserved2",          0x0068,   64 },
	{ "rotpk",              0x0070,  256 },
	{ "ssk",                0x0090,  256 },
	{ "rssk",               0x00b0,  128 },
	{ "hdcp-hash",          0x00c0,  128 },
	{ "nv1",                0x00d0,   32 },
	{ "nv2",                0x00d4,   32 },
	{ "reserved3",          0x00d8,   96 },
	{ "oem-program-secure", 0x00e4,  224 },
};

这是根据全志SDK总结而来。

#40 全志 SOC » 深入研究T113 EFUSE,现已扩展XFEL工具,并支持烧写T113熔丝位 » 2023-07-11 22:26:53

xboot
回复: 32

全志的SOC,只要不是太老旧的芯片,里面都集成了2048bit的EFUSE,但此熔丝位的很多细节,并没有相关描述文档,这导致大家很难在实际项目中应用此功能,而且也缺乏灵活的烧写工具,基于此问题,我花了点时间扩展了下XFEL工具。

扩展的命令如下:

usage:
    xfel extra efuse dump                     - Dump all of the efuse information
    xfel extra efuse read32 <offset>          - Read 32-bits value from efuse
    xfel extra efuse write32 <offset> <value> - Write 32-bits value to efuse
    xfel extra efuse write <offset> <file>    - Write file to efuse

执行dump指令,显示如下信息:

xfel extra efuse dump
chipid:(0x0000 128-bits)
    93406000 0c004814 01426250 48671b4b 
brom-conf-try:(0x0010 32-bits)
    00000000 
thermal-sensor:(0x0014 64-bits)
    88fbc11a 01e9080f 
ft-zone:(0x001c 128-bits)
    898f1919 0f760f6c 3108126c 811a0a0e 
tvout:(0x002c 32-bits)
    0000028f 
tvout-gamma:(0x0030 64-bits)
    00000000 00000000 
oem-program:(0x0038 64-bits)
    00000000 00000000 
write-protect:(0x0040 32-bits)
    00000000 
read-protect:(0x0044 32-bits)
    00000000 
reserved1:(0x0048 64-bits)
    00000000 00000000 
huk:(0x0050 192-bits)
    00000000 00000000 00000000 00000000 00000000 00000000 
reserved2:(0x0068 64-bits)
    00000000 00000000 
rotpk:(0x0070 256-bits)
    00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
ssk:(0x0090 256-bits)
    00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
rssk:(0x00b0 128-bits)
    00000000 00000000 00000000 00000000 
hdcp-hash:(0x00c0 128-bits)
    00000000 00000000 00000000 00000000 
nv1:(0x00d0 32-bits)
    00000000 
nv2:(0x00d4 32-bits)
    00000000 
reserved3:(0x00d8 96-bits)
    00000000 00000000 00000000 
oem-program-secure:(0x00e4 224-bits)
    00000000 00000000 00000000 00000000 00000000 00000000 00000000

可以通过write32 或者write指令来烧写熔丝。

全志加密引导功能可以通过烧写熔丝来启用,当然你也可以烧写自己的序列号,或者mac地址之类的,当然这个efuse还可以用来做防盗版,来实现一机一固件,简要说明下,就是在efuse里烧录本机固件的签名文件,而这个签名文件又是跟cpu序列号关联,可以采用ECDSA256签名算法,签名大小为512bit,64字节,比RSA的签名要小很多,而且强度够。

#41 Re: 全志 SOC » V3LP问题请教 » 2023-07-04 19:49:45

在XFEL里可以用如下命令初始化V3LP的DDR2,是否能可靠稳定的运行,那就需要多多测试的,功能表现是完全正常的。

sudo xfel ddr v3s;

#42 Re: 全志 SOC » f1c200s自制 win10 USB显示屏 » 2023-06-26 12:25:24

好想法,之前简单研究了下,linux下的usb 显示屏,整个源码树里面,就一个驱动,没形成气候,window下,没有免驱方案吗?或者通用驱动

#44 Re: 全志 SOC » 抛砖引玉,全志T113 TVD模块裸机驱动 » 2023-06-10 20:18:02

经试验,其实回写缓冲区1024字节,就可以了。

#46 Re: 全志 SOC » 抛砖引玉,全志T113 TVD模块裸机驱动 » 2023-06-09 20:58:56

彻底搞定tvd模块,一个能让人找得天昏地暗的bug,先卖个关子

#47 全志 SOC » 抛砖引玉,全志T113 TVD模块裸机驱动 » 2023-06-08 13:04:27

xboot
回复: 8

全志T113的TVD模块,测试下来,发现是这德行。估计又是哪里配置错误了。

驱动文件在这里
https://github.com/xboot/xboot/blob/master/src/arch/arm32/mach-t113s3/driver/cam-t113-tvd.c

1_20230608-1303.jpg


站在微凉大侠的肩膀上,编写F1C100S平台的CVBS IN驱动, 也就是驱动完全找不到北的TVD模块。
https://whycan.com/t_6902.html

#49 Re: 全志 SOC » 站在微凉大侠的肩膀上,编写F1C100S平台的CVBS IN驱动, 也就是驱动完全找不到北的TVD模块。 » 2023-06-08 12:28:01

@godzhou0909
是裸奔的吗?我现在在T113平台山裸奔TVD,还有点小问题,估计又是寄存器配置了

#51 Re: 全志 SOC » mqr_t113使用xboot在SPINAND无法启动 » 2023-05-27 17:31:17

之前加了SMP的支持,只在RAM中跑过,自举引导这块没测试,现在发现问题了,无法自举引导了。

现在临时删除SMP相关实现。

#52 Re: 全志 SOC » mqr_t113使用xboot在SPINAND无法启动 » 2023-05-27 17:29:08

你同步下最新的,我测试了SPI NOR,SPI NAND估计还有点异常,这个问题,等我有时间了,我去解一下bug,估计是不断升级,测试不完整,产生了BUG

#54 Re: 全志 SOC » 全志R128来袭,有想入坑的吗?我先来点初步研究成果 » 2023-05-27 12:21:38

这个现象比较奇怪,板子问题?又不太像,可以linux下面试一试。看是否能探测成功。

#55 Re: 全志 SOC » mqr_t113使用xboot在SPINAND无法启动 » 2023-05-27 09:03:06

F133平台做了自动探测处理,T113平台没有实现。

enum {
	BOOT_DEVICE_SPINOR,
	BOOT_DEVICE_SPINAND,
	BOOT_DEVICE_SDCARD,
};

static int get_boot_device(void)
{
	uint8_t s = *((volatile uint8_t *)(0x00020000 + 0x28));

	if(s == 0x3)
		return BOOT_DEVICE_SPINOR;
	else if(s == 0x4)
		return BOOT_DEVICE_SPINAND;
	else if(s == 0x0)
		return BOOT_DEVICE_SDCARD;
	return BOOT_DEVICE_SPINOR;
}

#56 Re: 全志 SOC » mqr_t113使用xboot在SPINAND无法启动 » 2023-05-27 09:01:40

2023-05-27.png

get_boot_device 默认返回SPINOR,这个需要返回正确的自拷贝介质

#57 Re: 全志 SOC » T113同时启用RISC-V和A7双核的尝试 » 2023-05-26 11:37:43

想研究的,看这个代码,不贴代码的都是耍流氓。

	{
		//	The Hotplug Flag Register is 0x070005DC.
		//	The Soft Entry Address Register is 0x070005E0.

		//	la	a0, 0x02500000
		//	la	a1, 0x23
		//	sb	a1, 0 (a0)
		//	xxx:	j	xxx
		// Test: write byte to 0x02500000 = UART0 data tegister
		static const uint32_t code [] = {
				0x02500537, // 37 05 50 02
				0x0230059B,	// 9B 05 30 02 │
				0x00B50023, // 23 00 B5 00
				0x0000006F, // 6F 00 00 00,
		};

		* (volatile uint32_t *) 0x070005DC = 0*0xFA50392Fu;	// Hotplug Flag Register
		* (volatile uint32_t *) 0x070005E0 = (uintptr_t) code;	// Soft Entry Address Register

		dcache_clean_all();

		printhex(0x06000000, (void *) 0x06000000, 0x10000);
		//CCU->RISC_GATING_REG
		CCU->RISC_CFG_BGR_REG |= (1u << 16) | (1u << 0);
		(void) CCU->RISC_CFG_BGR_REG;
		PRINTF("CCU->RISC_CFG_BGR_REG=%08" PRIX32 "\n", CCU->RISC_CFG_BGR_REG);

		RISC_CFG->RISC_STA_ADD0_REG = (uintptr_t) code;
		RISC_CFG->RISC_STA_ADD1_REG = 0;//(uint32_t) (uintptr_t) code >> 32;
		//memset(RISC_CFG, ~ 0u, sizeof * RISC_CFG);
		PRINTF("CCU->RISC_GATING_REG=%08" PRIX32 ", CCU->RISC_CFG_BGR_REG=%08" PRIX32 "\n", CCU->RISC_GATING_REG, CCU->RISC_CFG_BGR_REG);
		PRINTF("RISC_CFG->RISC_STA_ADD0_REG=%08" PRIX32 ", RISC_CFG->RISC_STA_ADD1_REG=%08" PRIX32 "\n", RISC_CFG->RISC_STA_ADD0_REG, RISC_CFG->RISC_STA_ADD1_REG);
		//printhex32(RISC_CFG_BASE, RISC_CFG, sizeof * RISC_CFG);
		local_delay_ms(3000);
		//PRINTF("CCU->RISC_RST_REG=%08" PRIX32 "\n", CCU->RISC_RST_REG);
		CCU->RISC_RST_REG = 0x16AA0001u;
		(void) CCU->RISC_RST_REG;
		//PRINTF("CCU->RISC_RST_REG=%08" PRIX32 "\n", CCU->RISC_RST_REG);
		//ASSERT(CCU->RISC_RST_REG & 0x01u);
		for (;;)
			;
	}

#58 Re: 全志 SOC » 全志R128来袭,有想入坑的吗?我先来点初步研究成果 » 2023-05-24 15:36:30

带宽跟主频比较相关,可能是cache的原因

xboot: /# wboxtest benchmark-memory 
[benchmark-memory]-[memcmp]
 Bandwidth: 74.019MB/s
[benchmark-memory]-[memcpy]
 Bandwidth: 712.000MB/s
[benchmark-memory]-[memmove]
 Bandwidth: 111.721MB/s
[benchmark-memory]-[memset]
 Bandwidth: 1.432GB/s

#59 Re: 全志 SOC » 全志R128来袭,有想入坑的吗?我先来点初步研究成果 » 2023-05-24 14:33:22

R128-S2内存带宽测试,HSPRAM

xboot: /#  wboxtest benchmark-memory       
[benchmark-memory]-[memcmp]
 Bandwidth: 37.313MB/s
[benchmark-memory]-[memcpy]
 Bandwidth: 553.000MB/s
[benchmark-memory]-[memmove]
 Bandwidth: 56.219MB/s
[benchmark-memory]-[memset]
 Bandwidth: 824.000MB/s

#61 Re: 全志 SOC » 全志R128来袭,有想入坑的吗?我先来点初步研究成果 » 2023-05-24 09:38:42

贴一个采用xfel直接引导xboot的完整log,可以是空片直接启动。

xfel ddr r128-s2;
xfel write 0x08200000 xboot.bin;
xfel extra exec riscv 0x08200000;
[2]set pll end
[3]board init ok
[5]fake dram ok
[7]heap: 0x40a0000 size:0xe000
[9]lpsram init
[11]lspsram init aps64
[13]lspsram dqs:0x011a01a0
[18]psram chip APS64 init ok!, freq 1920000000
[22]Init psram controller ok
[24]hpsram init
[26]DRAM DQS gate is PD mode.
[29]DRAM BOOT DRIVE INFO: V2.00
[32]DRAM CLK = 800 MHZ
[34]dram_tpr11 = 0x0 , dram_tpr12 =0x0
[37]dram_tpr9 = 0x2020
[86]DRAM simple test OK.
[88]DRAM SIZE =8 MB
[100]fes1 done
█████████████████████████████████
██ ▄▄▄▄▄ █ ▀███▀ ▄█▀█ ▄█ ▄▄▄▄▄ ██
██ █   █ █ ▀▄█▄▄▀▄▀█▄▀ █ █   █ ██
██ █▄▄▄█ █▄   ▄▄▀█▄▀█ ▄█ █▄▄▄█ ██
██▄▄▄▄▄▄▄█ █ █▄▀▄█▄▀▄▀▄█▄▄▄▄▄▄▄██
███▄▄█▄█▄▄▀█ ▀  ▀ ▀  ███ ▀▄ ▄▄ ██
██▀  ▄▄ ▄▄█▄▄ ▀  ▄▄▀▄▀▄█ ▀▄▀▄▀▄██
██▄▀▄█▄█▄ ▄▄█▀▄▀  ▀  ███ ██ ██ ██
███ ▄▄▄▄▄▄ ▄▄▀▀▄▄█▀▀▄▀▄▀▄▀▄▀▄▀▄██
██▄▄█▀▄▄▄ ▄ ▀▀▄▄▄▀▄  ███  █ ██ ██
██▄▀▄▄█ ▄▀▀▄▀▄ ▄▀▀▄▀▄▀▄▀▄▀▄▀▄▀▄██
██▄██▄█▄▄█▀▀▀▄█ ███  █ ▄▄▄  ██ ██
██ ▄▄▄▄▄ █▄ ██▀ ▀▀▄▀▄  █▄█ ▀▄▀▄██
██ █   █ █▄▀██▀█▄██  ▀▄ ▄▄  █▀ ██
██ █▄▄▄█ █ ▀▀▄▄██▀▄▀▄█  █▀▄▀▄▀▄██
██▄▄▄▄▄▄▄███▄▄▄▄▄██▄▄█▄█▄█▄▄█▄▄██
█████████████████████████████████
       _                   _                     
 _  _ | |___ _____ _____ _| |_                   
\ \/ /|  _  |  _  |  _  |_   _|  (C) 2007-2023   
 )  ( | |_| | |_| | |_| | | |____JIANJUN.JIANG__ 
/_/\_\|_____|_____|_____| |_____________________|
V3.0.0 (May 24 2023 - 09:30:05) - [yuzuki][Yuzuki Based On Allwinner R128 SOC]
[    0.000020]Probe device 'blk-romdisk.0' with blk-romdisk
[    0.000800]Probe device 'fix-losc' with clk-fixed
[    0.000810]Probe device 'rc-16m' with clk-fixed
[    0.000820]Probe device 'rcosc-clk' with clk-fixed
[    0.000830]Probe device 'ext-32k' with clk-fixed
[    0.000840]Probe device 'rc-hf' with clk-fixed
[    0.000850]Probe device 'rccal-fake-parent' with clk-fixed
[    0.000860]Probe device 'osc26m' with clk-fixed
[    0.000870]Probe device 'osc40m' with clk-fixed
[    0.000880]Probe device 'osc24m' with clk-fixed
[    0.000890]Probe device 'osc32m' with clk-fixed
[    0.000900]Probe device 'osc24.576m' with clk-fixed
[    0.000910]Probe device 'hosc' with clk-mux
[    0.000920]Probe device 'hosc-div32k' with clk-fixed-factor
[    0.000930]Probe device 'rcosc-div32k' with clk-fixed-factor
[    0.000940]Probe device 'hosc-div2' with clk-fixed-factor
[    0.000950]Probe device 'dpll1' with clk-r128-pll
[    0.000960]Probe device 'dpll2' with clk-r128-pll
[    0.000970]Probe device 'dpll3' with clk-r128-pll
[    0.000980]Probe device 'pll-audio' with clk-r128-pll
[    0.000990]Probe device 'rfip0-dpll' with clk-fixed-factor
[    0.001000]Probe device 'rfip1-dpll' with clk-fixed-factor
[    0.001010]Probe device 'pll-audio2x' with clk-fixed-factor
[    0.001020]Probe device 'pll-audio1x' with clk-fixed-factor
[    0.001030]Probe device 'dpll1-div4' with clk-fixed-factor
[    0.001040]Probe device 'dpll1-div5' with clk-fixed-factor
[    0.001050]Probe device 'dpll1-div6' with clk-fixed-factor
[    0.001060]Probe device 'dpll1-div7' with clk-fixed-factor
[    0.001070]Probe device 'dpll1-div8' with clk-fixed-factor
[    0.001080]Probe device 'dpll1-div39' with clk-fixed-factor
[    0.001090]Probe device 'dpll1-div85' with clk-fixed-factor
[    0.001100]Probe device 'dpll3-div4' with clk-fixed-factor
[    0.001110]Probe device 'dpll3-div5' with clk-fixed-factor
[    0.001120]Probe device 'dpll3-div6' with clk-fixed-factor
[    0.001130]Probe device 'dpll3-div7' with clk-fixed-factor
[    0.001140]Probe device 'dpll3-div8' with clk-fixed-factor
[    0.001150]Probe device 'ck1-usb' with clk-gate
[    0.001160]Probe device 'mux-ck1-aud' with clk-mux
[    0.001170]Probe device 'ck1-aud' with clk-gate
[    0.001180]Probe device 'mux-ck1-dev' with clk-mux
[    0.001190]Probe device 'ck1-dev' with clk-gate
[    0.001200]Probe device 'mux-ck1-m33' with clk-mux
[    0.001210]Probe device 'ck1-m33' with clk-gate
[    0.001220]Probe device 'mux-ck3-dev' with clk-mux
[    0.001230]Probe device 'ck3-dev' with clk-gate
[    0.001240]Probe device 'mux-ck3-m33' with clk-mux
[    0.001250]Probe device 'ck3-m33' with clk-gate
[    0.001260]Probe device 'ck-dev' with clk-mux
[    0.001270]Probe device 'device-clk' with clk-divider
[    0.001280]Probe device 'ck-m33' with clk-mux
[    0.001290]Probe device 'sys' with clk-divider
[    0.001300]Probe device 'aud-rco-div' with clk-divider
[    0.001310]Probe device 'ar200a-f' with clk-mux
[    0.001320]Probe device 'hfclk-div' with clk-ratio
[    0.001330]Probe device 'lfclk-div' with clk-ratio
[    0.001340]Probe device 'ahb-div' with clk-ratio
[    0.001350]Probe device 'apb' with clk-mux
[    0.001360]Probe device 'ble-32m' with clk-gate
[    0.001370]Probe device 'ble-48m' with clk-gate
[    0.001380]Probe device 'gpio-gate' with clk-gate
[    0.001390]Probe device 'bus-codec-dac' with clk-gate
[    0.001400]Probe device 'rccal' with clk-gate
[    0.001410]Probe device 'bus-codec-adc' with clk-gate
[    0.001420]Probe device 'dmic-bus' with clk-gate
[    0.001430]Probe device 'gpadc' with clk-gate
[    0.001440]Probe device 'lpuart1-wkup' with clk-gate
[    0.001450]Probe device 'lpuart0-wkup' with clk-gate
[    0.001460]Probe device 'osc32k-en' with clk-gate
[    0.001470]Probe device 'rc32k-en' with clk-gate
[    0.001480]Probe device 'rc-hf-en' with clk-gate
[    0.001490]Probe device 'rccal-32k' with clk-gate
[    0.001500]Probe device 'rco-wup-en' with clk-gate
[    0.001510]Probe device 'lf-sel' with clk-mux
[    0.001520]Probe device 'sys-32k-sel' with clk-mux
[    0.001530]Probe device 'ble-sel' with clk-mux
[    0.001540]Probe device 'sysrtc32k' with clk-mux
[    0.001550]Probe device 'pad' with clk-mux
[    0.001560]Probe device 'div-pad' with clk-divider
[    0.001570]Probe device 'pad-out' with clk-gate
[    0.001580]Probe device 'div' with clk-mux
[    0.001590]Probe device '32k-auto-en-switch' with clk-gate
[    0.001600]Probe device 'bus-ehci0' with clk-gate
[    0.001610]Probe device 'bus-ohci0' with clk-gate
[    0.001620]Probe device 'bus-csi-jpe' with clk-gate
[    0.001630]Probe device 'bus-ledc' with clk-gate
[    0.001640]Probe device 'bus-otg' with clk-gate
[    0.001650]Probe device 'bus-smcard' with clk-gate
[    0.001660]Probe device 'bus-hspsram-ctrl' with clk-gate
[    0.001670]Probe device 'bus-irrx' with clk-gate
[    0.001680]Probe device 'bus-irtx' with clk-gate
[    0.001690]Probe device 'bus-pwm' with clk-gate
[    0.001700]Probe device 'bus-twi1' with clk-gate
[    0.001710]Probe device 'bus-twi0' with clk-gate
[    0.001720]Probe device 'bus-uart2' with clk-gate
[    0.001730]Probe device 'bus-uart1' with clk-gate
[    0.001740]Probe device 'bus-uart0' with clk-gate
[    0.001750]Probe device 'bus-sdc0' with clk-gate
[    0.001760]Probe device 'bus-spi1' with clk-gate
[    0.001770]Probe device 'bus-spi0' with clk-gate
[    0.001780]Probe device 'bus-monitor' with clk-gate
[    0.001790]Probe device 'bus-g2d' with clk-gate
[    0.001800]Probe device 'bus-de' with clk-gate
[    0.001810]Probe device 'bus-display' with clk-gate
[    0.001820]Probe device 'bus-lcd' with clk-gate
[    0.001830]Probe device 'bus-bt-core' with clk-gate
[    0.001840]Probe device 'bus-wlan-ctrl' with clk-gate
[    0.001850]Probe device 'bus-trng' with clk-gate
[    0.001860]Probe device 'bus-spc' with clk-gate
[    0.001870]Probe device 'bus-ss' with clk-gate
[    0.001880]Probe device 'bus-timer' with clk-gate
[    0.001890]Probe device 'bus-spinlock' with clk-gate
[    0.001900]Probe device 'bus-dma1' with clk-gate
[    0.001910]Probe device 'bus-dma0' with clk-gate
[    0.001920]Probe device 'bus-spdif' with clk-gate
[    0.001930]Probe device 'bus-i2s' with clk-gate
[    0.001940]Probe device 'riscv-cfg' with clk-gate
[    0.001950]Probe device 'riscv-msgbox' with clk-gate
[    0.001960]Probe device 'dsp-cfg' with clk-gate
[    0.001970]Probe device 'dsp-msgbox' with clk-gate
[    0.001980]Probe device 'cpu-msgbox' with clk-gate
[    0.001990]Probe device 'mbus-de' with clk-gate
[    0.002000]Probe device 'mbus-g2d' with clk-gate
[    0.002010]Probe device 'mbus-csi' with clk-gate
[    0.002020]Probe device 'mbus-dma1' with clk-gate
[    0.002030]Probe device 'mbus-dma0' with clk-gate
[    0.002040]Probe device 'mbus-usb' with clk-gate
[    0.002050]Probe device 'mbus-ce' with clk-gate
[    0.002060]Probe device 'mbus-dsp' with clk-gate
[    0.002070]Probe device 'mbus-riscv' with clk-gate
[    0.002080]Probe device 'mbus-cpu' with clk-gate
[    0.002090]Probe device 'mux-pclk-spc' with clk-mux
[    0.002100]Probe device 'div-pclk-spc' with clk-divider
[    0.002110]Probe device 'pclk-spc' with clk-ratio
[    0.002120]Probe device 'mux-spi0' with clk-mux
[    0.002130]Probe device 'div-spi0' with clk-divider
[    0.002140]Probe device 'ratio-spi0' with clk-ratio
[    0.002150]Probe device 'spi0' with clk-gate
[    0.002160]Probe device 'mux-spi1' with clk-mux
[    0.002170]Probe device 'div-spi1' with clk-divider
[    0.002180]Probe device 'ratio-spi1' with clk-ratio
[    0.002190]Probe device 'spi1' with clk-gate
[    0.002200]Probe device 'mux-sdc0' with clk-mux
[    0.002210]Probe device 'div-sdc0' with clk-divider
[    0.002220]Probe device 'ratio-sdc0' with clk-ratio
[    0.002230]Probe device 'sdc0' with clk-gate
[    0.002240]Probe device 'mux-ss' with clk-mux
[    0.002250]Probe device 'div-ss' with clk-divider
[    0.002260]Probe device 'ratio-ss' with clk-ratio
[    0.002270]Probe device 'ss' with clk-gate
[    0.002280]Probe device 'mux-csi-jpe' with clk-mux
[    0.002290]Probe device 'div-csi-jpe' with clk-divider
[    0.002300]Probe device 'ratio-csi-jpe' with clk-ratio
[    0.002310]Probe device 'csi-jpe' with clk-gate
[    0.002320]Probe device 'mux-ledc' with clk-mux
[    0.002330]Probe device 'div-ledc' with clk-divider
[    0.002340]Probe device 'ratio-ledc' with clk-ratio
[    0.002350]Probe device 'ledc' with clk-gate
[    0.002360]Probe device 'mux-irrx' with clk-mux
[    0.002370]Probe device 'div-irrx' with clk-divider
[    0.002380]Probe device 'ratio-irrx' with clk-ratio
[    0.002390]Probe device 'irrx' with clk-gate
[    0.002400]Probe device 'mux-irtx' with clk-mux
[    0.002410]Probe device 'div-irtx' with clk-divider
[    0.002420]Probe device 'ratio-irtx' with clk-ratio
[    0.002430]Probe device 'irtx' with clk-gate
[    0.002440]Probe device 'mux-systick-ref' with clk-mux
[    0.002450]Probe device 'div-systick-ref' with clk-divider
[    0.002460]Probe device 'ratio-systick-ref' with clk-ratio
[    0.002470]Probe device 'systick-ref' with clk-gate
[    0.002480]Probe device 'systick-noref' with clk-gate
[    0.002490]Probe device 'systick-skew' with clk-gate
[    0.002500]Probe device 'mux-csi-mclk' with clk-mux
[    0.002510]Probe device 'div-csi-mclk' with clk-divider
[    0.002520]Probe device 'ratio-csi-mclk' with clk-ratio
[    0.002530]Probe device 'csi-mclk' with clk-gate
[    0.002540]Probe device 'mux-flash-spi' with clk-mux
[    0.002550]Probe device 'div-flash-spi' with clk-divider
[    0.002560]Probe device 'ratio-flash-spi' with clk-ratio
[    0.002570]Probe device 'flash-spi' with clk-gate
[    0.002580]Probe device 'mux-g2d' with clk-mux
[    0.002590]Probe device 'div-g2d' with clk-divider
[    0.002600]Probe device 'ratio-g2d' with clk-ratio
[    0.002610]Probe device 'g2d' with clk-gate
[    0.002620]Probe device 'mux-de' with clk-mux
[    0.002630]Probe device 'div-de' with clk-divider
[    0.002640]Probe device 'ratio-de' with clk-ratio
[    0.002650]Probe device 'de' with clk-gate
[    0.002660]Probe device 'mux-lcd' with clk-mux
[    0.002670]Probe device 'div-lcd' with clk-divider
[    0.002680]Probe device 'ratio-lcd' with clk-ratio
[    0.002690]Probe device 'lcd' with clk-gate
[    0.002700]Probe device 'timer0' with clk-link
[    0.002710]Probe device 'timer1' with clk-link
[    0.002720]Probe device 'uart0' with clk-link
[    0.002730]Probe device 'uart1' with clk-link
[    0.002740]Probe device 'uart2' with clk-link
[    0.002750]Probe device 'wdg' with clk-fixed
[    0.002760]Probe device 'reset-r128.0' with reset-r128
[    0.002770]Probe device 'reset-r128.1' with reset-r128
[    0.002780]Probe device 'reset-r128.2' with reset-r128
[    0.002790]Probe device 'reset-r128.3' with reset-r128
[    0.002800]Probe device 'reset-r128.4' with reset-r128
[    0.002810]Probe device 'reset-r128.5' with reset-r128
[    0.002820]Probe device 'reset-r128.6' with reset-r128
[    0.002830]Probe device 'irq-r128.0' with irq-r128
[    0.002840]Probe device 'irq-r128-gpio.0' with irq-r128-gpio
[    0.002850]Probe device 'irq-r128-gpio.1' with irq-r128-gpio
[    0.002860]Probe device 'gpio-r128.0' with gpio-r128
[    0.002870]Probe device 'gpio-r128.1' with gpio-r128
[    0.002880]Probe device 'ce-r128-timer.0' with ce-r128-timer
[    0.000089]Probe device 'cs-r128-timer.0' with cs-r128-timer
[    0.005967]Probe device 'uart-16550.0' with uart-16550
[    0.011228]Probe device 'uart-16550.1' with uart-16550
[    0.016569]Probe device 'i2c-r128.0' with i2c-r128
[    0.021506]Probe device 'i2c-r128.1' with i2c-r128
[    0.026445]Probe device 'spi-r128.0' with spi-r128
[    0.040882]Found spi nor flash 'SFDP' with 16.000MB
[    0.045752]Found partition:
[    0.048569]  0x0000000000000000 ~ 0x0000000000ffffff 16.000MB  - blk-spinor.0
[    0.055880]  0x0000000000000000 ~ 0x00000000005fffff 6.000MB   - blk-spinor.0.xboot
[    0.063687]  0x0000000000600000 ~ 0x00000000007fffff 2.000MB   - blk-spinor.0.reserve
[    0.071651]  0x0000000000800000 ~ 0x0000000000ffffff 8.000MB   - blk-spinor.0.private
[    0.079508]Probe device 'blk-spinor.0' with blk-spinor
[    0.084811]Probe device 'wdg-r128.0' with wdg-r128
[    0.089669]Probe device 'console-uart.0' with console-uart
[    0.098777]mount /private with 'ram' filesystem
Press any key to stop auto boot:  0.260
xboot: /# 
xboot: /# 
xboot: /# 

#62 Re: 全志 SOC » 全志R128来袭,有想入坑的吗?我先来点初步研究成果 » 2023-05-23 23:32:24

对于前面遇到的SPI NOR FLASH清除QE比特导致的无法启动烧录问题,这里在xfel做了修正,直接删除写状态寄存器2及状态寄存器3的擦作。

#63 Re: 全志 SOC » 全志R128来袭,有想入坑的吗?我先来点初步研究成果 » 2023-05-23 23:30:37

xfel升级到V1.3.1版本,此版本已完整支持R128,楼上计划的所有功能均以实现,包括烧写SPI NOR FLASH,通过fel启动RISCV核心,启动DSP核心。

这里扩展了一个extra命令,可以启动RISCV和DSP核,后面的地址,就是核心的入口地址。

usage:
    xfel extra exec riscv <address> - Boot riscv and jump to address
    xfel extra exec dsp <address>   - Boot dsp and jump to address

现在运行xboot有两种方案:

1,直接用xfel来运行RISCV程序

xfel ddr r128-s2;
xfel write 0x08200000 xboot.bin;
xfel extra exec riscv 0x08200000;

2,利用全志SDK里的m33.bin程序来引导riscv

xfel ddr r128-s2;
xfel write 0x08004000 lichee/rtos/build/r128s2_pro_m33/img/rt_system.bin;
xfel write 0x08200000 xboot.bin;
xfel exec 0x08004001;

#64 Re: 全志 SOC » 全志R128来袭,有想入坑的吗?我先来点初步研究成果 » 2023-05-23 15:08:08

只要将这个比特重新写回1,就可以救活,R128内部的SPI NOR FLASH

#65 Re: 全志 SOC » 全志R128来袭,有想入坑的吗?我先来点初步研究成果 » 2023-05-23 14:35:52

QQ图片20230523143253.png

经测试,是状态寄存器2里面的QE位,如果这个bit被清零了,那么内置的spi nor flash就无法引导了,而且也无法烧录,这个状态寄存器是掉电不丢失的,永久保存,除非再次修改。

#66 Re: 全志 SOC » 全志R128来袭,有想入坑的吗?我先来点初步研究成果 » 2023-05-23 12:49:58

严谨点说,就是多做3个操作,R128芯片内部spi nor flash必挂

1, 全局解锁SPI NOR FLASH
2, 将状态寄存器2,清零
3,将状态寄存器3,清零

具体是哪一个操作导致的,还是3个操作共同导致的,就不得而知了,每实验一次,一个芯片就报废了,我手上的三颗芯片,全处于搞残的状态,已经没有新芯片了,这些实验代价有点高。


除了这三个操作,xfel在操作spi nor时,还会执行两个动作
1,复位SPI NOR FLASH
2, 将状态寄存器1,清零

这两个动作是不会产生任何副作用的,在R128上已测试通过,就是最上面的三个步骤,会导致问题,而且百分百必现。

再去锁定下SPI NOR FLASH,可以救活被搞残的芯片?

#67 Re: 全志 SOC » 全志R128来袭,有想入坑的吗?我先来点初步研究成果 » 2023-05-23 12:04:09

确认是R128芯片内部的SPI NOR FLASH只要处于unlock的状态,就无法正常启动,而且也无法烧录,这个问题全志肯定要去解决了,不然wifi芯片,只要被攻击了,可以造成所谓的物理损坏,让产品直接宕机,类似于多年前的bios病毒,可以将主板搞挂

#68 Re: 全志 SOC » 全志R128来袭,有想入坑的吗?我先来点初步研究成果 » 2023-05-23 09:12:28

lanlanzhilian 说:

这会不会是读写的姿势不对

初步怀疑是spi flash只要一被unlock了,全志的sdk固件就无法正常运行,包括烧录,如果确定是这个原因的话,那就是全志SPI NOR FLASH驱动问题了,而且这段代码还在闭源的boot0里,你想修这bug都没门。80%的可能性是这个问题导致的。

#69 Re: 全志 SOC » 全志R128来袭,有想入坑的吗?我先来点初步研究成果 » 2023-05-23 09:10:15

高内存版本是有可能代替F1C100S的,但现在还没见到R128-S3的芯片

#70 Re: 全志 SOC » 全志R128来袭,有想入坑的吗?我先来点初步研究成果 » 2023-05-22 19:27:10

已实现xfel烧写R128内部SPI NOR FLASH,但出现了一个超级超级大的坑。

只要用xfel访问过的R128芯片,哪怕仅仅是探测下spi nor flash,就会导致全志的固件无法正常运行,而且这个时候想用Phoenixsuit工具去刷机也不给刷了,提示找不到spi nor flash,但用xfel是可以正常读写spi nor flash的,这坑坑。。。。

换句话说,xfel能将R128搞残,而且是永久性的,这。。。。

全志固件启动的提示:

[2]BOOT0 commit : 7de04b7c
[5]set pll end
[6]board init ok
[8]boot reason: SUNXI_BOOT_REASON_COLD_BOOT
[26]heap: 0x40a0000 size:0xe000
[29]lspsram init aps64
[31]lspsram dqs:0x01190190
[36]psram chip APS64 init ok!, freq 1920000000
[40]Init psram controller ok
[43]hpsram init
[44]DRAM DQS gate is PD mode.
[47]DRAM BOOT DRIVE INFO: V2.00
[50]DRAM CLK = 800 MHZ
[52]dram_tpr11 = 0x0 , dram_tpr12 =0x0
[56]dram_tpr9 = 0x2121
[86]DRAM simple test OK.
[88]DRAM SIZE =8 MB
[90]boot package base:0xc600000
[93]prcm: 0x1
[94]init pins for sip nor
[96]nor read id ret:0x0, id[0]:0x0
[100]spinor init fail
[102]load gpt fail
[103]init gpt fail
[115]go to usb efex!

手上仅有的2片R128都被搞残了。再贴个xfel烧写spi nor 的log吧,读写spi nor完全正常,校验也可以通过。

xfel spinor
Found spi nor flash 'SFDP' with 16777216 bytes


xfel spinor read 0 16777216 dump4.bin
100% [================================================] 16.000 MB, 383.050 KB/s

xfel spinor write 0 dump.bin 
100% [================================================] 16.000 MB, 193.715 KB/s

#71 Re: 全志 SOC » 全志R128来袭,有想入坑的吗?我先来点初步研究成果 » 2023-05-22 17:23:30

针对R128,现已实现了中断驱动,GPIO驱动,TIMER驱动,SPI驱动,I2C驱动,时钟等驱动,打印log如下:

[0]fes begin commit:7de04b7c
[2]set pll end
[3]board init ok
[5]fake dram ok
[7]heap: 0x40a0000 size:0xe000
[9]lpsram init
[11]lspsram init aps64
[13]lspsram dqs:0x011c01c0
[18]psram chip APS64 init ok!, freq 1920000000
[22]Init psram controller ok
[24]hpsram init
[26]DRAM DQS gate is PD mode.
[29]DRAM BOOT DRIVE INFO: V2.00
[32]DRAM CLK = 800 MHZ
[34]dram_tpr11 = 0x0 , dram_tpr12 =0x0
[37]dram_tpr9 = 0x2424
[86]DRAM simple test OK.
[88]DRAM SIZE =8 MB
[100]fes1 done
Warning: clk ck1-m33 enable_count is 2, parent is dpll1, parent rate is 1920000000, should not be changed from 480000000 to 384000000, please recheck whether the operation is correct
Warning: clk ck1-dev enable_count is 2, parent is dpll1, parent rate is 1920000000, should not be changed from 1920000000 to 384000000, please recheck whether the operation is correct
M33 CPU Clock Freq: 192 MHz

 *******************************************
 **    Welcome to R128 FreeRTOS V1.5.0    **
 ** Copyright (C) 2019-2022 AllwinnerTech **
 **                                       **
 **      starting armv8m FreeRTOS V0.7    **
 *******************************************

Date:May 10 2023, Time:14:01:58
flash not ready, skip mount
---boot dsp(start_addr: 0x0c000660)---
---boot
█████████████████████████████████
██ ▄▄▄▄▄ █ ▀███▀ ▄█▀█ ▄█ ▄▄▄▄▄ ██
██ █   █ █ ▀▄█▄▄▀▄▀█▄▀ █ █   █ ██
██ █▄▄▄█ █▄   ▄▄▀█▄▀█ ▄█ █▄▄▄█ ██
██▄▄▄▄▄▄▄█ █ █▄▀▄█▄▀▄▀▄█▄▄▄▄▄▄▄██
███▄▄█▄█▄▄▀█ ▀  ▀ ▀  ███ ▀▄ ▄▄ ██
██▀  ▄▄ ▄▄█▄▄ ▀  ▄▄▀▄▀▄█ ▀▄▀▄▀▄██
██▄▀▄█▄█▄ ▄▄█▀▄▀  ▀  ███ ██ ██ ██
███ ▄▄▄▄▄▄ ▄▄▀▀▄▄█▀▀▄▀▄▀▄▀▄▀▄▀▄██
██▄▄█▀▄▄▄ ▄ ▀▀▄▄▄▀▄  ███  █ ██ ██
██▄▀▄▄█ ▄▀▀▄▀▄ ▄▀▀▄▀▄▀▄▀▄▀▄▀▄▀▄██
██▄██▄█▄▄█▀▀▀▄█ ███  █ ▄▄▄  ██ ██
██ ▄▄▄▄▄ █▄ ██▀ ▀▀▄▀▄  █▄█ ▀▄▀▄██
██ █   █ █▄▀██▀█▄██  ▀▄ ▄▄  █▀ ██
██ █▄▄▄█ █ ▀▀▄▄██▀▄▀▄█  █▀▄▀▄▀▄██
██▄▄▄▄▄▄▄███▄▄▄▄▄██▄▄█▄█▄█▄▄█▄▄██
█████████████████████████████████
       _                   _                     
 _  _ | |___ _____ _____ _| |_                   
\ \/ /|  _  |  _  |  _  |_   _|  (C) 2007-2023   
 )  ( | |_| | |_| | |_| | | |____JIANJUN.JIANG__ 
/_/\_\|_____|_____|_____| |_____________________|
V3.0.0 (May 22 2023 - 17:17:57) - [yuzuki][Yuzuki Based On Allwinner R128 SOC]
[    0.000020]Probe device 'blk-romdisk.0' with blk-romdisk
[    0.000800]Probe device 'fix-losc' with clk-fixed
[    0.000810]Probe device 'rc-16m' with clk-fixed
[    0.000820]Probe device 'rcosc-clk' with clk-fixed
[    0.000830]Probe device 'ext-32k' with clk-fixed
[    0.000840]Probe device 'rc-hf' with clk-fixed
[    0.000850]Probe device 'rccal-fake-parent' with clk-fixed
[    0.000860]Probe device 'osc26m' with clk-fixed
[    0.000870]Probe device 'osc40m' with clk-fixed
[    0.000880]Probe device 'osc24m' with clk-fixed
[    0.000890]Probe device 'osc32m' with clk-fixed
[    0.000900]Probe device 'osc24.576m' with clk-fixed
[    0.000910]Probe device 'hosc' with clk-mux
[    0.000920]Probe device 'hosc-div32k' with clk-fixed-factor
[    0.000930]Probe device 'rcosc-div32k' with clk-fixed-factor
[    0.000940]Probe device 'hosc-div2' with clk-fixed-factor
[    0.000950]Probe device 'dpll1' with clk-r128-pll
[    0.000960]Probe device 'dpll2' with clk-r128-pll
[    0.000970]Probe device 'dpll3' with clk-r128-pll
[    0.000980]Probe device 'pll-audio' with clk-r128-pll
[    0.000990]Probe device 'rfip0-dpll' with clk-fixed-factor
[    0.001000]Probe device 'rfip1-dpll' with clk-fixed-factor
[    0.001010]Probe device 'pll-audio2x' with clk-fixed-factor
[    0.001020]Probe device 'pll-audio1x' with clk-fixed-factor
[    0.001030]Probe device 'dpll1-div4' with clk-fixed-factor
[    0.001040]Probe device 'dpll1-div5' with clk-fixed-factor
[    0.001050]Probe device 'dpll1-div6' with clk-fixed-factor
[    0.001060]Probe device 'dpll1-div7' with clk-fixed-factor
[    0.001070]Probe device 'dpll1-div8' with clk-fixed-factor
[    0.001080]Probe device 'dpll1-div39' with clk-fixed-factor
[    0.001090]Probe device 'dpll1-div85' with clk-fixed-factor
[    0.001100]Probe device 'dpll3-div4' with clk-fixed-factor
[    0.001110]Probe device 'dpll3-div5' with clk-fixed-factor
[    0.001120]Probe device 'dpll3-div6' with clk-fixed-factor
[    0.001130]Probe device 'dpll3-div7' with clk-fixed-factor
[    0.001140]Probe device 'dpll3-div8' with clk-fixed-factor
[    0.001150]Probe device 'ck1-usb' with clk-gate
[    0.001160]Probe device 'mux-ck1-aud' with clk-mux
[    0.001170]Probe device 'ck1-aud' with clk-gate
[    0.001180]Probe device 'mux-ck1-dev' with clk-mux
[    0.001190]Probe device 'ck1-dev' with clk-gate
[    0.001200]Probe device 'mux-ck1-m33' with clk-mux
[    0.001210]Probe device 'ck1-m33' with clk-gate
[    0.001220]Probe device 'mux-ck3-dev' with clk-mux
[    0.001230]Probe device 'ck3-dev' with clk-gate
[    0.001240]Probe device 'mux-ck3-m33' with clk-mux
[    0.001250]Probe device 'ck3-m33' with clk-gate
[    0.001260]Probe device 'ck-dev' with clk-mux
[    0.001270]Probe device 'device-clk' with clk-divider
[    0.001280]Probe device 'ck-m33' with clk-mux
[    0.001290]Probe device 'sys' with clk-divider
[    0.001300]Probe device 'aud-rco-div' with clk-divider
[    0.001310]Probe device 'ar200a-f' with clk-mux
[    0.001320]Probe device 'hfclk-div' with clk-ratio
[    0.001330]Probe device 'lfclk-div' with clk-ratio
[    0.001340]Probe device 'ahb-div' with clk-ratio
[    0.001350]Probe device 'apb' with clk-mux
[    0.001360]Probe device 'ble-32m' with clk-gate
[    0.001370]Probe device 'ble-48m' with clk-gate
[    0.001380]Probe device 'gpio-gate' with clk-gate
[    0.001390]Probe device 'bus-codec-dac' with clk-gate
[    0.001400]Probe device 'rccal' with clk-gate
[    0.001410]Probe device 'bus-codec-adc' with clk-gate
[    0.001420]Probe device 'dmic-bus' with clk-gate
[    0.001430]Probe device 'gpadc' with clk-gate
[    0.001440]Probe device 'lpuart1-wkup' with clk-gate
[    0.001450]Probe device 'lpuart0-wkup' with clk-gate
[    0.001460]Probe device 'osc32k-en' with clk-gate
[    0.001470]Probe device 'rc32k-en' with clk-gate
[    0.001480]Probe device 'rc-hf-en' with clk-gate
[    0.001490]Probe device 'rccal-32k' with clk-gate
[    0.001500]Probe device 'rco-wup-en' with clk-gate
[    0.001510]Probe device 'lf-sel' with clk-mux
[    0.001520]Probe device 'sys-32k-sel' with clk-mux
[    0.001530]Probe device 'ble-sel' with clk-mux
[    0.001540]Probe device 'sysrtc32k' with clk-mux
[    0.001550]Probe device 'pad' with clk-mux
[    0.001560]Probe device 'div-pad' with clk-divider
[    0.001570]Probe device 'pad-out' with clk-gate
[    0.001580]Probe device 'div' with clk-mux
[    0.001590]Probe device '32k-auto-en-switch' with clk-gate
[    0.001600]Probe device 'bus-ehci0' with clk-gate
[    0.001610]Probe device 'bus-ohci0' with clk-gate
[    0.001620]Probe device 'bus-csi-jpe' with clk-gate
[    0.001630]Probe device 'bus-ledc' with clk-gate
[    0.001640]Probe device 'bus-otg' with clk-gate
[    0.001650]Probe device 'bus-smcard' with clk-gate
[    0.001660]Probe device 'bus-hspsram-ctrl' with clk-gate
[    0.001670]Probe device 'bus-irrx' with clk-gate
[    0.001680]Probe device 'bus-irtx' with clk-gate
[    0.001690]Probe device 'bus-pwm' with clk-gate
[    0.001700]Probe device 'bus-twi1' with clk-gate
[    0.001710]Probe device 'bus-twi0' with clk-gate
[    0.001720]Probe device 'bus-uart2' with clk-gate
[    0.001730]Probe device 'bus-uart1' with clk-gate
[    0.001740]Probe device 'bus-uart0' with clk-gate
[    0.001750]Probe device 'bus-sdc0' with clk-gate
[    0.001760]Probe device 'bus-spi1' with clk-gate
[    0.001770]Probe device 'bus-spi0' with clk-gate
[    0.001780]Probe device 'bus-monitor' with clk-gate
[    0.001790]Probe device 'bus-g2d' with clk-gate
[    0.001800]Probe device 'bus-de' with clk-gate
[    0.001810]Probe device 'bus-display' with clk-gate
[    0.001820]Probe device 'bus-lcd' with clk-gate
[    0.001830]Probe device 'bus-bt-core' with clk-gate
[    0.001840]Probe device 'bus-wlan-ctrl' with clk-gate
[    0.001850]Probe device 'bus-trng' with clk-gate
[    0.001860]Probe device 'bus-spc' with clk-gate
[    0.001870]Probe device 'bus-ss' with clk-gate
[    0.001880]Probe device 'bus-timer' with clk-gate
[    0.001890]Probe device 'bus-spinlock' with clk-gate
[    0.001900]Probe device 'bus-dma1' with clk-gate
[    0.001910]Probe device 'bus-dma0' with clk-gate
[    0.001920]Probe device 'bus-spdif' with clk-gate
[    0.001930]Probe device 'bus-i2s' with clk-gate
[    0.001940]Probe device 'riscv-cfg' with clk-gate
[    0.001950]Probe device 'riscv-msgbox' with clk-gate
[    0.001960]Probe device 'dsp-cfg' with clk-gate
[    0.001970]Probe device 'dsp-msgbox' with clk-gate
[    0.001980]Probe device 'cpu-msgbox' with clk-gate
[    0.001990]Probe device 'mbus-de' with clk-gate
[    0.002000]Probe device 'mbus-g2d' with clk-gate
[    0.002010]Probe device 'mbus-csi' with clk-gate
[    0.002020]Probe device 'mbus-dma1' with clk-gate
[    0.002030]Probe device 'mbus-dma0' with clk-gate
[    0.002040]Probe device 'mbus-usb' with clk-gate
[    0.002050]Probe device 'mbus-ce' with clk-gate
[    0.002060]Probe device 'mbus-dsp' with clk-gate
[    0.002070]Probe device 'mbus-riscv' with clk-gate
[    0.002080]Probe device 'mbus-cpu' with clk-gate
[    0.002090]Probe device 'mux-pclk-spc' with clk-mux
[    0.002100]Probe device 'div-pclk-spc' with clk-divider
[    0.002110]Probe device 'pclk-spc' with clk-ratio
[    0.002120]Probe device 'mux-spi0' with clk-mux
[    0.002130]Probe device 'div-spi0' with clk-divider
[    0.002140]Probe device 'ratio-spi0' with clk-ratio
[    0.002150]Probe device 'spi0' with clk-gate
[    0.002160]Probe device 'mux-spi1' with clk-mux
[    0.002170]Probe device 'div-spi1' with clk-divider
[    0.002180]Probe device 'ratio-spi1' with clk-ratio
[    0.002190]Probe device 'spi1' with clk-gate
[    0.002200]Probe device 'mux-sdc0' with clk-mux
[    0.002210]Probe device 'div-sdc0' with clk-divider
[    0.002220]Probe device 'ratio-sdc0' with clk-ratio
[    0.002230]Probe device 'sdc0' with clk-gate
[    0.002240]Probe device 'mux-ss' with clk-mux
[    0.002250]Probe device 'div-ss' with clk-divider
[    0.002260]Probe device 'ratio-ss' with clk-ratio
[    0.002270]Probe device 'ss' with clk-gate
[    0.002280]Probe device 'mux-csi-jpe' with clk-mux
[    0.002290]Probe device 'div-csi-jpe' with clk-divider
[    0.002300]Probe device 'ratio-csi-jpe' with clk-ratio
[    0.002310]Probe device 'csi-jpe' with clk-gate
[    0.002320]Probe device 'mux-ledc' with clk-mux
[    0.002330]Probe device 'div-ledc' with clk-divider
[    0.002340]Probe device 'ratio-ledc' with clk-ratio
[    0.002350]Probe device 'ledc' with clk-gate
[    0.002360]Probe device 'mux-irrx' with clk-mux
[    0.002370]Probe device 'div-irrx' with clk-divider
[    0.002380]Probe device 'ratio-irrx' with clk-ratio
[    0.002390]Probe device 'irrx' with clk-gate
[    0.002400]Probe device 'mux-irtx' with clk-mux
[    0.002410]Probe device 'div-irtx' with clk-divider
[    0.002420]Probe device 'ratio-irtx' with clk-ratio
[    0.002430]Probe device 'irtx' with clk-gate
[    0.002440]Probe device 'mux-systick-ref' with clk-mux
[    0.002450]Probe device 'div-systick-ref' with clk-divider
[    0.002460]Probe device 'ratio-systick-ref' with clk-ratio
[    0.002470]Probe device 'systick-ref' with clk-gate
[    0.002480]Probe device 'systick-noref' with clk-gate
[    0.002490]Probe device 'systick-skew' with clk-gate
[    0.002500]Probe device 'mux-csi-mclk' with clk-mux
[    0.002510]Probe device 'div-csi-mclk' with clk-divider
[    0.002520]Probe device 'ratio-csi-mclk' with clk-ratio
[    0.002530]Probe device 'csi-mclk' with clk-gate
[    0.002540]Probe device 'mux-flash-spi' with clk-mux
[    0.002550]Probe device 'div-flash-spi' with clk-divider
[    0.002560]Probe device 'ratio-flash-spi' with clk-ratio
[    0.002570]Probe device 'flash-spi' with clk-gate
[    0.002580]Probe device 'mux-g2d' with clk-mux
[    0.002590]Probe device 'div-g2d' with clk-divider
[    0.002600]Probe device 'ratio-g2d' with clk-ratio
[    0.002610]Probe device 'g2d' with clk-gate
[    0.002620]Probe device 'mux-de' with clk-mux
[    0.002630]Probe device 'div-de' with clk-divider
[    0.002640]Probe device 'ratio-de' with clk-ratio
[    0.002650]Probe device 'de' with clk-gate
[    0.002660]Probe device 'mux-lcd' with clk-mux
[    0.002670]Probe device 'div-lcd' with clk-divider
[    0.002680]Probe device 'ratio-lcd' with clk-ratio
[    0.002690]Probe device 'lcd' with clk-gate
[    0.002700]Probe device 'timer0' with clk-link
[    0.002710]Probe device 'timer1' with clk-link
[    0.002720]Probe device 'wdg' with clk-fixed
[    0.002730]Probe device 'uart0' with clk-fixed
[    0.002740]Probe device 'uart1' with clk-fixed
[    0.002750]Probe device 'uart2' with clk-fixed
[    0.002760]Probe device 'reset-r128.0' with reset-r128
[    0.002770]Probe device 'reset-r128.1' with reset-r128
[    0.002780]Probe device 'reset-r128.2' with reset-r128
[    0.002790]Probe device 'reset-r128.3' with reset-r128
[    0.002800]Probe device 'reset-r128.4' with reset-r128
[    0.002810]Probe device 'reset-r128.5' with reset-r128
[    0.002820]Probe device 'reset-r128.6' with reset-r128
[    0.002830]Probe device 'irq-r128.0' with irq-r128
[    0.002840]Probe device 'irq-r128-gpio.0' with irq-r128-gpio
[    0.002850]Probe device 'irq-r128-gpio.1' with irq-r128-gpio
[    0.002860]Probe device 'gpio-r128.0' with gpio-r128
[    0.002870]Probe device 'gpio-r128.1' with gpio-r128
[    0.002880]Probe device 'ce-r128-timer.0' with ce-r128-timer
[    0.000046]Probe device 'cs-r128-timer.0' with cs-r128-timer
[    0.005696]Probe device 'uart-16550.0' with uart-16550
[    0.010808]Probe device 'uart-16550.1' with uart-16550
[    0.015957]Probe device 'i2c-r128.0' with i2c-r128
[    0.020727]Probe device 'i2c-r128.1' with i2c-r128
[    0.025489]Probe device 'spi-r128.0' with spi-r128
[    0.039591]Found spi nor flash 'SFDP' with 16.000MB
[    0.044374]Found partition:
[    0.047151]  0x0000000000000000 ~ 0x0000000000ffffff 16.000MB  - blk-spinor.0
[    0.054304]  0x0000000000000000 ~ 0x00000000005fffff 6.000MB   - blk-spinor.0.xboot
[    0.061925]  0x0000000000600000 ~ 0x00000000007fffff 2.000MB   - blk-spinor.0.reserve
[    0.069725]  0x0000000000800000 ~ 0x0000000000ffffff 8.000MB   - blk-spinor.0.private
[    0.077480]Probe device 'blk-spinor.0' with blk-spinor
[    0.082645]Probe device 'wdg-r128.0' with wdg-r128
[    0.087402]Probe device 'console-uart.0' with console-uart
[    0.094821]mount /private with 'ram' filesystem
Press any key to stop auto boot:  0.120
xboot: /# 

#72 Re: 全志 SOC » 全志R128来袭,有想入坑的吗?我先来点初步研究成果 » 2023-05-22 16:57:07

补充一个手册上没有的信息,R128内置SPI NOR FLASH,此Flash接在GPIOB8,GPIOB9,GPIOB10,GPIOB11,GPIOB12,GPIOB13 Pin脚上,功能3为SPI0 pinmux

	"spi-r128:0@0x40009000": {
		"clock-name": "spi0",
		"reset": 0,
		"sclk-gpio": 45,
		"sclk-gpio-config": 3,
		"mosi-gpio": 42,
		"mosi-gpio-config": 3,
		"miso-gpio": 43,
		"miso-gpio-config": 3,
		"cs-gpio": 44,
		"cs-gpio-config": 3
	},

#73 Re: 全志 SOC » 全志R128来袭,有想入坑的吗?我先来点初步研究成果 » 2023-05-17 23:39:22

通过xfel工具,R128现在已可以运行xboot,LOG记录如下,下面就可以愉快的编写R128驱动了。

█████████████████████████████████
██ ▄▄▄▄▄ █ ▀███▀ ▄█▀█ ▄█ ▄▄▄▄▄ ██
██ █   █ █ ▀▄█▄▄▀▄▀█▄▀ █ █   █ ██
██ █▄▄▄█ █▄   ▄▄▀█▄▀█ ▄█ █▄▄▄█ ██
██▄▄▄▄▄▄▄█ █ █▄▀▄█▄▀▄▀▄█▄▄▄▄▄▄▄██
███▄▄█▄█▄▄▀█ ▀  ▀ ▀  ███ ▀▄ ▄▄ ██
██▀  ▄▄ ▄▄█▄▄ ▀  ▄▄▀▄▀▄█ ▀▄▀▄▀▄██
██▄▀▄█▄█▄ ▄▄█▀▄▀  ▀  ███ ██ ██ ██
███ ▄▄▄▄▄▄ ▄▄▀▀▄▄█▀▀▄▀▄▀▄▀▄▀▄▀▄██
██▄▄█▀▄▄▄ ▄ ▀▀▄▄▄▀▄  ███  █ ██ ██
██▄▀▄▄█ ▄▀▀▄▀▄ ▄▀▀▄▀▄▀▄▀▄▀▄▀▄▀▄██
██▄██▄█▄▄█▀▀▀▄█ ███  █ ▄▄▄  ██ ██
██ ▄▄▄▄▄ █▄ ██▀ ▀▀▄▀▄  █▄█ ▀▄▀▄██
██ █   █ █▄▀██▀█▄██  ▀▄ ▄▄  █▀ ██
██ █▄▄▄█ █ ▀▀▄▄██▀▄▀▄█  █▀▄▀▄▀▄██
██▄▄▄▄▄▄▄███▄▄▄▄▄██▄▄█▄█▄█▄▄█▄▄██
█████████████████████████████████
       _                   _                     
 _  _ | |___ _____ _____ _| |_                   
\ \/ /|  _  |  _  |  _  |_   _|  (C) 2007-2023   
 )  ( | |_| | |_| | |_| | | |____JIANJUN.JIANG__ 
/_/\_\|_____|_____|_____| |_____________________|
V3.0.0 (May 17 2023 - 23:25:28) - [yuzuki][Yuzuki Based On Allwinner R128 SOC]
[    0.000020]Probe device 'blk-romdisk.0' with blk-romdisk
[    0.000800]Probe device 'osc48m' with clk-fixed
[    0.000810]Probe device 'osc32k' with clk-fixed
[    0.000820]Probe device 'bus-uart0' with clk-fixed
[    0.000830]Probe device 'wdg' with clk-fixed
[    0.000840]Probe device 'uart-16550.0' with uart-16550
[    0.000850]Probe device 'wdg-r128.0' with wdg-r128
[    0.000860]Probe device 'console-uart.0' with console-uart
[    0.000970]mount /private with 'ram' filesystem
Press any key to stop auto boot:  0.330
xboot: /#  

#74 Re: 全志 SOC » 全志R128来袭,有想入坑的吗?我先来点初步研究成果 » 2023-05-16 19:34:26

至此XFEL流程都已跑通,剩下的就是编写自己得程序了,以及SPI NOR FLASH烧写功能,因考虑到WIFI/BT固件等问题,建议大家M33核还是跑官方的freerots,C906核就可以自由发挥了,比如跑个xboot,甚至linux,可以随心所欲了。

#75 Re: 全志 SOC » 全志R128来袭,有想入坑的吗?我先来点初步研究成果 » 2023-05-16 19:25:35

用xfel指令加载sdk默认镜像试验。

#初始化DDR
xfel ddr r128-s2;

#加载M33核程序到0x08004000
xfel write 0x08004000 lichee/rtos/build/r128s2_pro_m33/img/rt_system.bin;

#加载C906程序到0x08200000,注意此程序是SPI NOR XIP的,光加载到RAM中是无法完整运行的,这里仅做引导C906试验。
xfel write 0x08200000 lichee/rtos/build/r128s2_pro_c906/img/rt_system.bin;

#运行M33核心程序,M33核心运行时,会自动的运行C906以及DSP程序。所以,将C906和DSP程序准备好,可以随着M33核一起启动。
xfel exec 0x08004001

现象如下:

[0]fes begin commit:7de04b7c
[2]set pll end
[3]board init ok
[5]fake dram ok
[7]heap: 0x40a0000 size:0xe000
[9]lpsram init
[11]lspsram init aps64
[13]lspsram dqs:0x011a01a0
[18]psram chip APS64 init ok!, freq 1920000000
[22]Init psram controller ok
[24]hpsram init
[26]DRAM DQS gate is PD mode.
[29]DRAM BOOT DRIVE INFO: V2.00
[32]DRAM CLK = 800 MHZ
[34]dram_tpr11 = 0x0 , dram_tpr12 =0x0
[37]dram_tpr9 = 0x2020
[86]DRAM simple test OK.
[88]DRAM SIZE =8 MB
[100]fes1 done
[0]fes begin commit:7de04b7c
[2]set pll end
[3]board init ok
[5]fake dram ok
[7]heap: 0x40a0000 size:0xe000
[9]lpsram init
[11]lspsram init aps64
[13]lspsram dqs:0x01060060
[18]psram chip APS64 init ok!, freq 1920000000
[22]Init psram controller ok
[24]hpsram init
[26]DRAM DQS gate is PD mode.
[29]DRAM BOOT DRIVE INFO: V2.00
[32]DRAM CLK = 800 MHZ
[34]dram_tpr11 = 0x0 , dram_tpr12 =0x0
[37]dram_tpr9 = 0x2020
[86]DRAM simple test OK.
[88]DRAM SIZE =8 MB
[100]fes1 done
Warning: clk ck1-m33 enable_count is 2, parent is dpll1, parent rate is 1920000000, should not be changed from 480000000 to 384000000, please recheck whether the operation is correct
Warning: clk ck1-dev enable_count is 2, parent is dpll1, parent rate is 1920000000, should not be changed from 1920000000 to 384000000, please recheck whether the operation is correct
] not support in sys_config
M33 CPU Clock Freq: 192 MHz

 *******************************************
 **    Welcome to R128 FreeRTOS V1.5.0    **
 ** Copyright (C) 2019-2022 AllwinnerTech **
 **                                       **
 **      starting armv8m FreeRTOS V0.7    **
 *******************************************

Date:May 10 2023, Time:14:01:58
[E(m33)] get dram_para dram_no_lpsram failed, skip LSPSRAM standby
[E(m33)] get dram_para dram_clk failed, skip HSPSRAM standby
flash not ready, skip mount
---boot dsp(start_addr: 0x0c000660)---
---boot c906---
C906 CPU Freq: 480 MHz

 *******************************************
 **    Welcome to R128 FreeRTOS V1.5.0    **
 ** Copyright (C) 2019-2022 AllwinnerTech **
 **                                       **
 **      starting riscv FreeRTOS V0.7     **
 *******************************************

Date:May 10 2023, Time:14:09:34
devfs: mount devfs to /dev ok
use default flash chip mJedec 0x0
[FD I]: Enter 32 Bit Address Mode

[FD I]: mode: 0x20, freq: 96000000Hz, drv: 0
[FD I]: jedec: 0x0, suspend_support: 1
no flash, skip init nor
=====================================================================================================
                                         EXC_LOAD_ACCESS              
=====================================================================================================

gprs:
 x0:0x0000000000000000   ra:0x0000000008255c2e   sp:0x000000000830dfe0   gp:0x00000000082c5420
 tp:0x0000000000000000   t0:0x0000000000000030   t1:0x0000000000000000   t2:0x0000000000000009
 s0:0x00000000082fca78   s1:0x00000000082b3df8   a0:0xffffffffffffffff   a1:0x0000000000000000
 a2:0x0000000000000000   a3:0x000000000830e070   a4:0x0000000000000000   a5:0x0000000000000000
 a6:0x0000000000000002   a7:0x000000004004707c   s2:0x00000000082b3df8   s3:0x0000000008336b70
 s5:0xa5a5a5a5a5a5a5a5   s5:0xa5a5a5a5a5a5a5a5   s6:0xa5a5a5a5a5a5a5a5   s7:0xa5a5a5a5a5a5a5a5
 s8:0xa5a5a5a5a5a5a5a5   s9:0xa5a5a5a5a5a5a5a5  s10:0xa5a5a5a5a5a5a5a5  s11:0xa5a5a5a5a5a5a5a5
 t3:0x0000000000000000   t4:0x0000000000000000   t5:0x0000000000000020   t6:0x0000000000000000

other:
mepc    :0x0000000008255c40
mcause  :0x0000000000000005
mtval   :0x0000000000000000
mstatus :0x0000000a00003980
mscratch:0x0000000000000000

-------backtrace-----------
backtrace : 0X08255C40 
backtrace : 0X0825EFB6 
backtrace : 0X0825EE76 
---------------------------

#76 Re: 全志 SOC » 全志R128来袭,有想入坑的吗?我先来点初步研究成果 » 2023-05-16 19:13:52

关于R128 M33核的thumb指令,有个特别要注意的地方,如果你编写的M33程序入口地址就是thumb指令,那么执行地址的最低位要置1,这样M33核才开始执行2字节的指令,否则当成4字节的指令,此问题需要特别注意,否则调试会让你调得怀疑人生。

比如rt_system.bin的入口地址是0x08004000,那么执行地址就是0x08004001

xfel write 0x08004000 lichee/rtos/build/r128s2_pro_m33/img/rt_system.bin;
xfel exec 0x08004001

#77 Re: 全志 SOC » 全志R128来袭,有想入坑的吗?我先来点初步研究成果 » 2023-05-14 22:35:51

再接再厉,利用读写payload操作M33核的看门狗,实现reset功能。

static int chip_reset(struct xfel_ctx_t * ctx)
{
	payload_write32(ctx, 0x40020400 + 0x14, (0x16aa << 16) | (0x1 << 0));
	payload_write32(ctx, 0x40020400 + 0x18, (0x16aa << 16) | (1 << 0));
	payload_write32(ctx, 0x40020400 + 0x10, (0xa57 << 1) | (1 << 0));
	return 1;
}

#78 Re: 全志 SOC » 全志R128来袭,有想入坑的吗?我先来点初步研究成果 » 2023-05-14 21:40:20

有了上面的研究,我们就可以编写一个纯粹的针对cortex-m33核的read32以及write32的payload了,为何要自己编写这两个payload,而不采用fel协议自带的读写R32,W32实现,是因为fel协议本身在读写内存时,是基于字节访问的,而某些控制器的寄存器是不支持字节访问,只支持word字访问,因为有这种限制,那fel自带的读写函数,是不适合操作芯片寄存器的。

read32.S

.syntax unified

	.global _start
_start:
	dsb.w sy
	isb.w sy
	ldr.w r0, _iciallu
	mov.w r1, #0x0
	str.w r1, [r0]
	dsb.w sy
	isb.w sy
	b.w reset
	.align 2
_iciallu:
	.word 0xe000ef50

reset:
	ldr.w r0, _adr
	adr.w r1, _val
	ldr.w r2, [r0]
	str.w r2, [r1]
	bx lr
	.align 2
_adr:
	.word 0x11223344
_val:
	.word 0x55667788

write32.S

.syntax unified

	.global _start
_start:
	dsb.w sy
	isb.w sy
	ldr.w r0, _iciallu
	mov.w r1, #0x0
	str.w r1, [r0]
	dsb.w sy
	isb.w sy
	b.w reset
	.align 2
_iciallu:
	.word 0xe000ef50

reset:
	ldr.w r0, _adr
	ldr.w r1, _val
	str.w r1, [r0]
	bx lr
	.align 2
_adr:
	.word 0x11223344
_val:
	.word 0x55667788

封装读写payload

static uint32_t payload_read32(struct xfel_ctx_t * ctx, uint32_t addr)
{
	static const uint8_t payload[] = {
		0xbf, 0xf3, 0x4f, 0x8f, 0xbf, 0xf3, 0x6f, 0x8f, 0xdf, 0xf8, 0x14, 0x00,
		0x4f, 0xf0, 0x00, 0x01, 0xc0, 0xf8, 0x00, 0x10, 0xbf, 0xf3, 0x4f, 0x8f,
		0xbf, 0xf3, 0x6f, 0x8f, 0x00, 0xf0, 0x02, 0xb8, 0x50, 0xef, 0x00, 0xe0,
		0xdf, 0xf8, 0x10, 0x00, 0x0f, 0xf2, 0x10, 0x01, 0xd0, 0xf8, 0x00, 0x20,
		0xc1, 0xf8, 0x00, 0x20, 0x70, 0x47, 0x00, 0xbf
	};
	uint32_t adr = cpu_to_le32(addr);
	uint32_t val;

	fel_write(ctx, ctx->version.scratchpad, (void *)payload, sizeof(payload));
	fel_write(ctx, ctx->version.scratchpad + sizeof(payload), (void *)&adr, sizeof(adr));
	fel_exec(ctx, ctx->version.scratchpad);
	fel_read(ctx, ctx->version.scratchpad + sizeof(payload) + sizeof(adr), (void *)&val, sizeof(val));
	return le32_to_cpu(val);
}

static void payload_write32(struct xfel_ctx_t * ctx, uint32_t addr, uint32_t val)
{
	static const uint8_t payload[] = {
		0xbf, 0xf3, 0x4f, 0x8f, 0xbf, 0xf3, 0x6f, 0x8f, 0xdf, 0xf8, 0x14, 0x00,
		0x4f, 0xf0, 0x00, 0x01, 0xc0, 0xf8, 0x00, 0x10, 0xbf, 0xf3, 0x4f, 0x8f,
		0xbf, 0xf3, 0x6f, 0x8f, 0x00, 0xf0, 0x02, 0xb8, 0x50, 0xef, 0x00, 0xe0,
		0xdf, 0xf8, 0x0c, 0x00, 0xdf, 0xf8, 0x0c, 0x10, 0xc0, 0xf8, 0x00, 0x10,
		0x70, 0x47, 0x00, 0xbf
	};
	uint32_t params[2] = {
		cpu_to_le32(addr),
		cpu_to_le32(val),
	};

	fel_write(ctx, ctx->version.scratchpad, (void *)payload, sizeof(payload));
	fel_write(ctx, ctx->version.scratchpad + sizeof(payload), (void *)params, sizeof(params));
	fel_exec(ctx, ctx->version.scratchpad);
}

利用读写payload实现使能jtag的pinmux功能

static int chip_jtag(struct xfel_ctx_t * ctx)
{
	uint32_t addr;
	uint32_t val;

	/* Config PA16 and PA17 to SWD-TMS and SWD-TCK */
	addr = 0x4004a400 + 0x08;
	val = payload_read32(ctx, addr);
	val &= ~(0xf << ((0 & 0xf) << 2));
	val |= ((0x8 & 0xf) << ((0 & 0xf) << 2));
	payload_write32(ctx, addr, val);

	val = payload_read32(ctx, addr);
	val &= ~(0xf << ((1 & 0xf) << 2));
	val |= ((0x8 & 0xf) << ((1 & 0xf) << 2));
	payload_write32(ctx, addr, val);

	return 1;
}

#79 Re: 全志 SOC » 全志R128来袭,有想入坑的吗?我先来点初步研究成果 » 2023-05-14 21:16:11

关于exec指令如何可靠稳定的执行自己写的测试程序的问题,经过深入研究,定位是M33核指令缓存相关问题。

我们编写的payload,如果上传到某个地址,然后在这个地址执行后,这部分代码就被缓存了,如果这个时候,我们在更新另外一个payload,通过write指令写入内存,SRAM或者LSPSRAM或者HSPSRAM中,然后新payload的执行地址如果跟原先的地址相同的话,这个时候就会出现不可预见的现象,执行的指令有可能是原先被缓存过payload。

既然分析到问题点了,解决手段,有两种方案:

一种是粗暴的关闭指令缓存,这种方案影响后续的执行效率,就不考虑了

另一种方案就是现在采用的方案,每一个payload保证开始的指令都是一致的,而且这些一致的指令里,首先做的动作就是清理指令,这样就能保证每个payload都能有效执行了,避免不可以预见的现象。

payload头指令

.syntax unified

	.global _start
_start:
	dsb.w sy
	isb.w sy
	ldr.w r0, _iciallu
	mov.w r1, #0x0
	str.w r1, [r0]
	dsb.w sy
	isb.w sy
	b.w reset
	.align 2
_iciallu:
	.word 0xe000ef50

reset:
	push.w { lr }
	/* ... */
	pop.w { lr }
	bx lr

经过以上处理后,就可以解决之前感觉怪意的问题,同时也验证了,payload放在LSPSRAM或在HSPRSRAM空间,都是可以正常执行的,不是必须是内部的SRAM。这就为后续的全RAM中执行程序,打下基础。什么M33程序,C906程序,DSP程序,理论上都是可以执行的。

#80 Re: 全志 SOC » 全志R128来袭,有想入坑的吗?我先来点初步研究成果 » 2023-05-13 20:25:43

已实现RS128,PSRAM的初始化



xfel ddr r128-s1 - Initial PSRAM controller for R128-S1
xfel ddr r128-s2 - Initial PSRAM controller for R128-S2
xfel ddr r128-s3 - Initial PSRAM controller for R128-S3
xfel ddr r128-s2

执行初始化指令后,就是访问LSPRAM以及HSPSRAM了

#81 Re: 全志 SOC » 全志T113-S3 G2D加速裸机驱动 » 2023-05-13 10:28:56

cache一致性,都是操作系统相关的,核心就是要处理好因cache提速而所带来的各种副作用,主频越高的芯片,cache显得越重要。本质还是因为DRAM太慢了,还有CACHE太贵了,否则用CACHE当RAM,不是爽得飞起。存内计算,应该就没有DRAM什么事了,每个计算单元旁都有MEM,当然编程模型就得大变样了。冯诺依曼都得爬起来拍大腿。

#82 Re: 全志 SOC » 全志R128来袭,有想入坑的吗?我先来点初步研究成果 » 2023-05-13 10:19:11

虽然算是搞了exec指令,但如何可靠稳定的执行自己写的测试程序,现在测试下来,感觉还是有点怪意,初步分析,可能M33核心里面指令或者数据cache了,还没玩过M33,对这个核里面的细节不清楚,先不枉下结论了,但这个问题,是有必要去深究的。

R128里面有PSRAM,有nor flash。初步计划,针对R128芯片,后续xfel需要开发以下功能:


1,读写SRAM,(已完成)
2,执行运行在M33核的payload指令(已完成)
3,读取R128的SID(已完成)
4,初始化M33核心的jtag接口,此接口跟调试串口复用(已开发,未测试)
5,实现reset操作
6,初始化LSPRAM以及HSPSRAM
7,  支持启动C906核心,加载并执行通过write命令写入到RAM中的C906程序
8,  支持启动DSP核心,加载并执行通过write命令写入到RAM中的DSP程序 (优先级低,估计没手段验证)
9,支持烧写NOR FLASH

如果完美实现了这些功能,通过xfel来开发R128,估计要爽到飞起,开发验证都是足够便捷的。

#83 全志 SOC » 全志R128来袭,有想入坑的吗?我先来点初步研究成果 » 2023-05-13 10:01:58

xboot
回复: 53

全志R128里面有三个核心,一个M33,一个C906,还有一个DSP。

M33核主要负责引导,启动,安全,休眠,唤醒,低功耗,WIFI/BT等相关功能。
C906主要负责运行各种APP,控制各种外设驱动
DSP主要负责音频算法处理

现在手上拿到了一个有异常的板子,无法正常烧录,刷机,但fel模式是可以运行的。所以先尝试开发xfel对R128芯片的支持。

适配xfel,前面比较顺利,可以顺利读写SRAM,但exec命令被卡壳了,无法运行ARM payload,经过不断尝试,终于可以执行exec指令了,原来M33核的payload每一条指令不一定都是32位,有可能存在16位的,M33核无法编译出全32位指令。

QQ图片20230513100114.png

#84 Re: 全志 SOC » 全志T113-S3 G2D加速裸机驱动 » 2023-05-10 19:12:48

都可以的,没有限制,内存如果cache了,注意要flush,保证cache一致性

#85 全志 SOC » 全志T113-S3 G2D加速裸机驱动 » 2023-05-08 09:30:25

xboot
回复: 10

花了点时间研究了下全志的2D加速模块,这个2D加速,其实就是DE2模块,现在测试了矩形填充,以及bitblit操作。

驱动代码在这里。
https://gitee.com/xboot/xboot/blob/master/src/arch/arm32/mach-t113s3/driver/g2d-t113.c

#86 Re: 全志 SOC » 全志D1芯片之终极探索 » 2023-04-27 20:09:52

SRAM里面有brom的使用的栈或堆空间,别破坏brom的环境

#87 Re: 全志 SOC » 小麻雀 Nezha-MQ 迎来双核A7版本128M内存(基于T113-s3) » 2023-04-19 19:50:24

时隔一年,一个偶然的发现,搞定了T113的中断, _vector 需要32字节对齐,补丁如下:

diff --git a/src/arch/arm32/mach-t113s3/start.S b/src/arch/arm32/mach-t113s3/start.S
index 39d83e78a..4415adea1 100644
--- a/src/arch/arm32/mach-t113s3/start.S
+++ b/src/arch/arm32/mach-t113s3/start.S
@@ -86,7 +86,7 @@
 	.global _start
 _start:
 	/* Boot head information for BROM */
-	.long 0xea000016
+	.long 0xea00000e
 	.byte 'e', 'G', 'O', 'N', '.', 'B', 'T', '0'
 	.long 0x12345678				/* checksum */
 	.long __spl_size				/* spl size */
@@ -97,7 +97,9 @@ _start:
 	.long 0x0						/* eGON version */
 	.byte 0x00, 0x00, 0x00, 0x00	/* platform information - 8byte */
 	.byte 0x34, 0x2e, 0x30, 0x00
+	.long 0, 0, 0, 0				/* reserve */
 
+	.align 5
 _vector:
 	b reset
 	ldr pc, _undefined_instruction

#88 Re: 全志 SOC » 用F1C100S开发了一个项目,原始技术实现,裸奔XUI GUI框架 » 2023-04-17 20:10:53

xui_layout_begin_column是纯逻辑实现,用于实现包裹多列布局的代码,xui_begin_panel当然也能搞出这种多列布局,但自身就是一个具体控件。前者是一个布局函数,后者是控件。

#89 Re: RK3288/RK3399/RK1108 » RV1103/RV1106 裸奔日记 » 2022-09-21 20:10:44

补充一个准确的说明文件,上面的偏移有些错误

# Rockchip RV1106

## Compile source code and generate the target files at the output directory
```shell
make clean
make CROSS_COMPILE=/path/to/arm-none-linux-gnueabihf- PLATFORM=arm32-rv1106
```

## Enter maskrom mode and using xrock for burning spi nor flash (offset = 0x00010000, sector = 128)
```shell
sudo xrock maskrom rv1106_ddr_924MHz_v1.09.bin rv1106_usbplug_v1.06.bin --rc4-off;
sleep 3;
sudo xrock flash write 128 xbootpak.bin;
sudo xrock reset;
```

## Enter maskrom mode and using xrock for burning spi nand flash (offset = 0x00040000, sector = 512)
```shell
sudo xrock maskrom rv1106_ddr_924MHz_v1.09.bin rv1106_usbplug_v1.06.bin --rc4-off;
sleep 3;
sudo xrock flash write 512 xbootpak.bin;
sudo xrock reset;
```

## Enter maskrom mode and using xrock for burning emmc (offset = 0x00008000, sector = 64)
```shell
sudo xrock maskrom rv1106_ddr_924MHz_v1.09.bin rv1106_usbplug_v1.06.bin --rc4-off;
sleep 3;
sudo xrock flash write 64 xbootpak.bin;
sudo xrock reset;
```

## Download xrock source code
```shell
git clone https://github.com/xboot/xrock.git
```

## Make and install xrock
```shell
make
sudo make install
```

#90 Re: 全志 SOC » 用F1C100S开发了一个项目,原始技术实现,裸奔XUI GUI框架 » 2022-08-19 11:05:05

WASM技术 + reactJS,应该算终极方案,嵌入式上实现一个wasm虚拟机,然后什么都可以搞定了

#91 Re: 全志 SOC » 用F1C100S开发了一个项目,原始技术实现,裸奔XUI GUI框架 » 2022-08-19 11:02:02

ReactJS这种是未来的趋势,大家都在追求效率以及体验,多种语言互相切换,还是很烦人的,lua可以说是最牛逼的胶水语言,但尽管如此,跟C交互,还是有很多细节需要照顾到,要开发声明式UI,必须从语言选择开始,否则再怎么设计,都是隔靴搔痒。

#92 Re: RK3288/RK3399/RK1108 » RV1103/RV1106 裸奔日记 » 2022-08-19 10:54:48

现在已添加了不少裸机驱动,启动log如下:

DDR Version V1.09 20220630
f947
F
DDRConf2
DDR3, BW=16 Col=10 Bk=8 CS0 Row=13 CS=1 Die BW=16 Size=128MB
924MHz
DDR bin out

█████████████████████████
██ ▄▄▄▄▄ ██▄▀▀▀█ ▄▄▄▄▄ ██
██ █   █ █ ▀▄█ █ █   █ ██
██ █▄▄▄█ ██▄  ██ █▄▄▄█ ██
██▄▄▄▄▄▄▄█▄█ █ █▄▄▄▄▄▄▄██
████▀▄ ▀▄▄█ ▀█▄▀█▀▀  █▀██
███▀▄▀ ▀▄ ▄█▀▀▄▀█ ▀█ ▄███
███▄█▄█▄▄▄▀▀ ▄ ▀ ▄▄ ▀  ██
██ ▄▄▄▄▄ █▄ ▄█▄▀▄████▄▄██
██ █   █ █ ▀█▄█▄▄█ ▄▀█▄██
██ █▄▄▄█ ██▀  █ ▄▄▄▄█▄ ██
██▄▄▄▄▄▄▄███▄██▄▄▄▄▄▄▄███
█████████████████████████
       _                   _                     
 _  _ | |___ _____ _____ _| |_                   
\ \/ /|  _  |  _  |  _  |_   _|  (C) 2007-2022   
 )  ( | |_| | |_| | |_| | | |____JIANJUN.JIANG__ 
/_/\_\|_____|_____|_____| |_____________________|
V3.0.0 (Aug 19 2022 - 10:43:57) - [x1106][X1106 Based On RV1106 SOC]
[    0.000020]Probe device 'blk-romdisk.0' with blk-romdisk
[    0.000800]Probe device 'xin24m' with clk-fixed
[    0.000810]Probe device 'xin32k' with clk-fixed
[    0.000820]Probe device 'clk_rtc_32k' with clk-link
[    0.000830]Probe device 'apll' with clk-rv1106-pll
[    0.000840]Probe device 'cpll' with clk-rv1106-pll
[    0.000850]Probe device 'dpll' with clk-rv1106-pll
[    0.000860]Probe device 'gpll' with clk-rv1106-pll
[    0.000870]Probe device 'clk_pvtm_core' with clk-rv1106-gate
[    0.000880]Probe device 'clk_core_mcu_rtc' with clk-rv1106-gate
[    0.000890]Probe device 'clk_timer_root' with clk-rv1106-gate
[    0.000900]Probe device 'hclk_cpu' with clk-rv1106-comp
[    0.000910]Probe device 'clk_core_mcu' with clk-rv1106-comp
[    0.000920]Probe device 'clk_50m_src' with clk-rv1106-comp
[    0.000930]Probe device 'clk_100m_src' with clk-rv1106-comp
[    0.000940]Probe device 'clk_150m_src' with clk-rv1106-comp
[    0.000950]Probe device 'clk_200m_src' with clk-rv1106-comp
[    0.000960]Probe device 'clk_250m_src' with clk-rv1106-comp
[    0.000970]Probe device 'clk_300m_src' with clk-rv1106-comp
[    0.000980]Probe device 'clk_339m_src' with clk-rv1106-comp
[    0.000990]Probe device 'clk_400m_src' with clk-rv1106-comp
[    0.001000]Probe device 'clk_450m_src' with clk-rv1106-comp
[    0.001010]Probe device 'clk_500m_src' with clk-rv1106-comp
[    0.001020]Probe device 'pclk_top_root' with clk-rv1106-comp
[    0.001030]Probe device 'pclk_peri_root' with clk-rv1106-comp
[    0.001040]Probe device 'clk_100m_pmu' with clk-rv1106-divider
[    0.001050]Probe device 'pclk_pmu_root' with clk-rv1106-comp
[    0.001060]Probe device 'pclk_vi_rtc_root' with clk-rv1106-comp
[    0.001070]Probe device 'pclk_vi_rtc_phy' with clk-rv1106-gate
[    0.001080]Probe device 'pclk_vi_rtc_test' with clk-rv1106-gate
[    0.001090]Probe device 'pclk_i2c0' with clk-rv1106-gate
[    0.001100]Probe device 'clk_i2c0' with clk-rv1106-comp
[    0.001110]Probe device 'pclk_i2c1' with clk-rv1106-gate
[    0.001120]Probe device 'clk_i2c1' with clk-rv1106-comp
[    0.001130]Probe device 'pclk_i2c2' with clk-rv1106-gate
[    0.001140]Probe device 'clk_i2c2' with clk-rv1106-comp
[    0.001150]Probe device 'pclk_i2c3' with clk-rv1106-gate
[    0.001160]Probe device 'clk_i2c3' with clk-rv1106-comp
[    0.001170]Probe device 'pclk_i2c4' with clk-rv1106-gate
[    0.001180]Probe device 'clk_i2c4' with clk-rv1106-comp
[    0.001190]Probe device 'pclk_timer' with clk-rv1106-gate
[    0.001200]Probe device 'clk_timer0' with clk-rv1106-gate
[    0.001210]Probe device 'clk_timer1' with clk-rv1106-gate
[    0.001220]Probe device 'clk_timer2' with clk-rv1106-gate
[    0.001230]Probe device 'clk_timer3' with clk-rv1106-gate
[    0.001240]Probe device 'clk_timer4' with clk-rv1106-gate
[    0.001250]Probe device 'clk_timer5' with clk-rv1106-gate
[    0.001260]Probe device 'pclk_stimer' with clk-rv1106-gate
[    0.001270]Probe device 'clk_stimer0' with clk-rv1106-gate
[    0.001280]Probe device 'clk_stimer1' with clk-rv1106-gate
[    0.001290]Probe device 'pclk_saradc' with clk-rv1106-gate
[    0.001300]Probe device 'clk_saradc' with clk-rv1106-comp
[    0.001310]Probe device 'clk_uart0_src' with clk-rv1106-comp
[    0.001320]Probe device 'gate-clk_uart0_src' with clk-rv1106-gate
[    0.001330]Probe device 'clk_uart0_frac' with clk-rv1106-factor
[    0.001340]Probe device 'clk_uart0' with clk-rv1106-mux
[    0.001350]Probe device 'link-uart0' with clk-link
[    0.001360]Probe device 'link-uart1' with clk-link
[    0.001370]Probe device 'link-uart2' with clk-link
[    0.001380]Probe device 'link-uart3' with clk-link
[    0.001390]Probe device 'link-uart4' with clk-link
[    0.001400]Probe device 'link-uart5' with clk-link
[    0.001410]Probe device 'link-wdt' with clk-link
[    0.001420]Probe device 'reset-rv1106.0' with reset-rv1106
[    0.001430]Probe device 'reset-rv1106.1' with reset-rv1106
[    0.001440]Probe device 'reset-rv1106.2' with reset-rv1106
[    0.001450]Probe device 'reset-rv1106.3' with reset-rv1106
[    0.001460]Probe device 'reset-rv1106.4' with reset-rv1106
[    0.001470]Probe device 'reset-rv1106.5' with reset-rv1106
[    0.001480]Probe device 'reset-rv1106.6' with reset-rv1106
[    0.001490]Probe device 'reset-rv1106.7' with reset-rv1106
[    0.001500]Probe device 'reset-rv1106.8' with reset-rv1106
[    0.001510]Probe device 'reset-rv1106.9' with reset-rv1106
[    0.001520]Probe device 'reset-rv1106.10' with reset-rv1106
[    0.001530]Probe device 'reset-rv1106.11' with reset-rv1106
[    0.001540]Probe device 'reset-rv1106.12' with reset-rv1106
[    0.001550]Probe device 'reset-rv1106.13' with reset-rv1106
[    0.001560]Probe device 'reset-rv1106.14' with reset-rv1106
[    0.001570]Probe device 'reset-rv1106.15' with reset-rv1106
[    0.001580]Probe device 'reset-rv1106.16' with reset-rv1106
[    0.001590]Probe device 'reset-rv1106.17' with reset-rv1106
[    0.001600]Probe device 'reset-rv1106.18' with reset-rv1106
[    0.001610]Probe device 'reset-rv1106.19' with reset-rv1106
[    0.001620]Probe device 'reset-rv1106.20' with reset-rv1106
[    0.001630]Probe device 'reset-rv1106.21' with reset-rv1106
[    0.001640]Probe device 'reset-rv1106.22' with reset-rv1106
[    0.001650]Probe device 'reset-rv1106.23' with reset-rv1106
[    0.001660]Probe device 'reset-rv1106.24' with reset-rv1106
[    0.001670]Probe device 'reset-rv1106.25' with reset-rv1106
[    0.001680]Probe device 'reset-rv1106.26' with reset-rv1106
[    0.001690]Probe device 'irq-gic400.0' with irq-gic400
[    0.001700]Probe device 'irq-rv1106-gpio.0' with irq-rv1106-gpio
[    0.001710]Probe device 'irq-rv1106-gpio.1' with irq-rv1106-gpio
[    0.001720]Probe device 'irq-rv1106-gpio.2' with irq-rv1106-gpio
[    0.001730]Probe device 'irq-rv1106-gpio.3' with irq-rv1106-gpio
[    0.001740]Probe device 'irq-rv1106-gpio.4' with irq-rv1106-gpio
[    0.001750]Probe device 'gpio-rv1106.0' with gpio-rv1106
[    0.001760]Probe device 'gpio-rv1106.1' with gpio-rv1106
[    0.001770]Probe device 'gpio-rv1106.2' with gpio-rv1106
[    0.001780]Probe device 'gpio-rv1106.3' with gpio-rv1106
[    0.001790]Probe device 'gpio-rv1106.4' with gpio-rv1106
[    0.001840]Probe device 'adc-rv1106.0' with adc-rv1106
[    0.001850]Probe device 'ce-armv7-timer.0' with ce-armv7-timer
[    0.000026]Probe device 'cs-armv7-timer.0' with cs-armv7-timer
[    0.005833]Probe device 'uart-8250.0' with uarn              &       SS&S%"٥:ѵr:ѡѵj                         &       SSS%"٥:ѵr:ѡѵj            &   SS0
[    0.024936]Probe device 'uart-8250.5' with uart-8250
[    0.029878]Probe device 'i2c-rv1106.0' with i2c-rv1106
[    0.034987]Probe device 'i2c-rv1106.1' with i2c-rv1106
[    0.040098]Probe device 'i2c-rv1106.2' with i2c-rv1106
[    0.045215]Probe device 'i2c-rv1106.3' with i2c-rv1106
[    0.050331]Probe device 'i2c-rv1106.4' with i2c-rv1106
[    0.055455]Probe device 'rtc-rv1106.0' with rtc-rv1106
[    0.060545]Probe device 'wdg-rv1106.0' with wdg-rv1106
[    0.065660]Probe device 'key-adc.0' with key-adc
[    0.070257]Probe device 'led-gpio.0' with led-gpio
[    0.075014]Probe device 'led-gpio.1' with led-gpio
[    0.079784]Probe device 'led-gpio.2' with led-gpio
[    0.084554]Probe device 'ledtrigger-heartbeat.0' with ledtrigger-heartbeat
[    0.091395]Probe device 'ledtrigger-heartbeat.1' with ledtrigger-heartbeat
[    0.098242]Probe device 'ledtrigger-heartbeat.2' with ledtrigger-heartbeat
[    0.105088]Probe device 'console-uart.0' with console-uart
[    0.111138]mount /private with 'ram' filesystem

xboot: /#                                                            
xboot: /# 
xboot: /# 
xboot: /# 
xboot: /# 

#93 Re: RK3288/RK3399/RK1108 » RV1103/RV1106 裸奔日记 » 2022-08-19 10:48:17

实现RV1106的RTC驱动

/*
 * driver/rtc-rv1106.c
 *
 * Copyright(c) 2007-2022 Jianjun Jiang <8192542@qq.com>
 * Official site: http://xboot.org
 * Mobile phone: +86-18665388956
 * QQ: 8192542
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 *
 */

#include <xboot.h>
#include <clk/clk.h>
#include <rtc/rtc.h>

enum {
	RTC_SET_SECONDS		= 0x00,
	RTC_SET_MINUTES		= 0x04,
	RTC_SET_HOURS		= 0x08,
	RTC_SET_DAYS		= 0x0c,
	RTC_SET_MONTHS		= 0x10,
	RTC_SET_YEARL		= 0x14,
	RTC_SET_YEARH		= 0x18,
	RTC_SET_WEEKS		= 0x1c,
	RTC_ALARM_SECONDS	= 0x20,
	RTC_ALARM_MINUTES	= 0x24,
	RTC_ALARM_HOURS		= 0x28,
	RTC_ALARM_DAYS		= 0x2c,
	RTC_ALARM_MONTHS	= 0x30,
	RTC_ALARM_YEARL		= 0x34,
	RTC_ALARM_YEARH		= 0x38,
	RTC_CTRL			= 0x3C,
	RTC_STATUS0			= 0x40,
	RTC_STATUS1			= 0x44,
	RTC_INT0_EN			= 0x48,
	RTC_INT1_EN			= 0x4c,
	RTC_MSEC_CTRL		= 0x50,
	RTC_MSEC_CNT		= 0x54,
	RTC_COMP_H			= 0x58,
	RTC_COMP_D			= 0x5c,
	RTC_COMP_M			= 0x60,
	RTC_ANALOG_CTRL		= 0x64,
	RTC_ANALOG_TEST		= 0x68,
	RTC_LDO_CTRL		= 0x6c,
	RTC_XO_TRIM0		= 0x70,
	RTC_XO_TRIM1		= 0x74,
	RTC_VPTAT_TRIM		= 0x78,
	RTC_ANALOG_EN		= 0x7c,
	RTC_CLK32K_TEST		= 0x80,
	RTC_TEST_ST			= 0x84,
	RTC_TEST_LEN		= 0x88,
	RTC_CNT_0			= 0x8c,
	RTC_CNT_1			= 0x90,
	RTC_CNT_2			= 0x94,
	RTC_CNT_3			= 0x98,
};

struct rtc_rv1106_pdata_t {
	virtual_addr_t virt;
	char * clk;
};

static void rtc_update_bits(virtual_addr_t virt, u32_t offset, u32_t mask, u32_t set)
{
	u32_t val;

	val = read32(virt + offset);
	write32(virt + offset, (val & ~mask) | set | 0xc4522900);
}

static bool_t rtc_rv1106_settime(struct rtc_t * rtc, struct rtc_time_t * time)
{
	struct rtc_rv1106_pdata_t * pdat = (struct rtc_rv1106_pdata_t *)rtc->priv;
	u32_t rtc_data[8];
	u32_t status;
	int yearh, yearl;
	int i;

	rtc_data[0] = bin2bcd(time->second) | 0xc4522900;
	rtc_data[1] = bin2bcd(time->minute) | 0xc4522900;
	rtc_data[2] = bin2bcd(time->hour) | 0xc4522900;
	rtc_data[3] = bin2bcd(time->day) | 0xc4522900;
	rtc_data[4] = bin2bcd(time->month) | 0xc4522900;
	if(time->year > 199)
	{
		yearh = (time->year - 100) / 100;
		yearl = time->year - 100 - yearh * 100;
	}
	else
	{
		yearh = 0;
		yearl = time->year - 100 - yearh * 100;
	}
	rtc_data[5] = bin2bcd(yearl) | 0xc4522900;
	rtc_data[6] = bin2bcd(yearh) | 0xc4522900;
	rtc_data[7] = bin2bcd(time->week) | 0xc4522900;

	rtc_update_bits(pdat->virt, RTC_CTRL, (1 << 0), 0);
	do {
		status = read32(pdat->virt + RTC_STATUS1);
		udelay(1);
	} while(status & (1 << 0));
	for(i = 0; i < 8; i++)
		write32(pdat->virt + RTC_SET_SECONDS + (i << 2), rtc_data[i]);
	rtc_update_bits(pdat->virt, RTC_CTRL, (1 << 7) | (1 << 0), (1 << 7) | (1 << 0));
	do {
		status = read32(pdat->virt + RTC_STATUS1);
		udelay(1);
	} while(!(status & (1 << 0)));

	return TRUE;
}

static bool_t rtc_rv1106_gettime(struct rtc_t * rtc, struct rtc_time_t * time)
{
	struct rtc_rv1106_pdata_t * pdat = (struct rtc_rv1106_pdata_t *)rtc->priv;
	u32_t rtc_data[8];
	int i;

	for(i = 0; i < 8; i++)
		rtc_data[i] = read32(pdat->virt + RTC_SET_SECONDS + (i << 2));
	for(i = 0; i < 8; i++)
		rtc_data[i] = read32(pdat->virt + RTC_SET_SECONDS + (i << 2));
	for(i = 0; i < 8; i++)
		rtc_data[i] = read32(pdat->virt + RTC_SET_SECONDS + (i << 2));

	time->second = bcd2bin(rtc_data[0] & 0x7f);
	time->minute = bcd2bin(rtc_data[1] & 0x7f);
	time->hour = bcd2bin(rtc_data[2] & 0x3f);
	time->day = bcd2bin(rtc_data[3] & 0x3f);
	time->month = bcd2bin(rtc_data[4] & 0x1f);
	time->year = (bcd2bin(rtc_data[6] & 0xff)) * 100 + (bcd2bin(rtc_data[5] & 0xff)) + 100;
	time->week = bcd2bin(rtc_data[7] & 0x07);

	return TRUE;
}

static struct device_t * rtc_rv1106_probe(struct driver_t * drv, struct dtnode_t * n)
{
	struct rtc_rv1106_pdata_t * pdat;
	struct rtc_t * rtc;
	struct device_t * dev;
	virtual_addr_t virt = phys_to_virt(dt_read_address(n));
	char * clk = dt_read_string(n, "clock-name", NULL);

	if(!search_clk(clk))
		return NULL;

	pdat = malloc(sizeof(struct rtc_rv1106_pdata_t));
	if(!pdat)
		return NULL;

	rtc = malloc(sizeof(struct rtc_t));
	if(!rtc)
	{
		free(pdat);
		return NULL;
	}

	pdat->virt = virt;
	pdat->clk = strdup(clk);

	rtc->name = alloc_device_name(dt_read_name(n), -1);
	rtc->settime = rtc_rv1106_settime;
	rtc->gettime = rtc_rv1106_gettime;
	rtc->priv = pdat;

	clk_enable(pdat->clk);
	write32(phys_to_virt(0xff000000) + 0x50000, ((1 << 6) << 16) | (1 << 6));
	rtc_update_bits(pdat->virt, RTC_VPTAT_TRIM, (1 << 4), (4 << 1));
	rtc_update_bits(pdat->virt, RTC_ANALOG_EN, (1 << 1), 0x00);
	rtc_update_bits(pdat->virt, RTC_LDO_CTRL, (1 << 0), (1 << 0));
	rtc_update_bits(pdat->virt, RTC_ANALOG_EN, (1 << 5), (1 << 5));
	rtc_update_bits(pdat->virt, RTC_CTRL, (1 << 0) | (1 << 7), (1 << 0) | (1 << 7));

	if(!(dev = register_rtc(rtc, drv)))
	{
		clk_disable(pdat->clk);
		free(pdat->clk);
		free_device_name(rtc->name);
		free(rtc->priv);
		free(rtc);
		return NULL;
	}
	return dev;
}

static void rtc_rv1106_remove(struct device_t * dev)
{
	struct rtc_t * rtc = (struct rtc_t *)dev->priv;
	struct rtc_rv1106_pdata_t * pdat = (struct rtc_rv1106_pdata_t *)rtc->priv;

	if(rtc)
	{
		unregister_rtc(rtc);
		clk_disable(pdat->clk);
		free(pdat->clk);
		free_device_name(rtc->name);
		free(rtc->priv);
		free(rtc);
	}
}

static void rtc_rv1106_suspend(struct device_t * dev)
{
}

static void rtc_rv1106_resume(struct device_t * dev)
{
}

static struct driver_t rtc_rv1106 = {
	.name		= "rtc-rv1106",
	.probe		= rtc_rv1106_probe,
	.remove		= rtc_rv1106_remove,
	.suspend	= rtc_rv1106_suspend,
	.resume		= rtc_rv1106_resume,
};

static __init void rtc_rv1106_driver_init(void)
{
	register_driver(&rtc_rv1106);
}

static __exit void rtc_rv1106_driver_exit(void)
{
	unregister_driver(&rtc_rv1106);
}

driver_initcall(rtc_rv1106_driver_init);
driver_exitcall(rtc_rv1106_driver_exit);

#94 Re: RK3288/RK3399/RK1108 » RV1103/RV1106 裸奔日记 » 2022-08-18 19:09:11

基于ADC驱动,添加ADC按键驱动,添加如下设备树即可。

	"key-adc@0": {
		"adc-name": "adc-rv1106.0",
		"adc-channel": 0,
		"poll-interval-ms": 100,
		"keys": [
			{ "min-voltage": 0, "max-voltage": 100000, "key-code": 11 }
		]
	},
xboot: /# event
[key-adc.0]: [KeyDown] [11]
[key-adc.0]: [KeyUp] [11]
[key-adc.0]: [KeyDown] [11]
[key-adc.0]: [KeyUp] [11]
[key-adc.0]: [KeyDown] [11]
[key-adc.0]: [KeyUp] [11]
[key-adc.0]: [KeyDown] [11]
[key-adc.0]: [KeyUp] [11]
[key-adc.0]: [KeyDown] [11]
[key-adc.0]: [KeyUp] [11]
[key-adc.0]: [KeyDown] [11]
[key-adc.0]: [KeyUp] [11]
[key-adc.0]: [KeyDown] [11]
[key-adc.0]: [KeyUp] [11]
[key-adc.0]: [KeyDown] [11]
[key-adc.0]: [KeyUp] [11]
[key-adc.0]: [KeyDown] [11]
[key-adc.0]: [KeyUp] [11]

#96 Re: RK3288/RK3399/RK1108 » RV1103/RV1106 裸奔日记 » 2022-08-18 16:05:12

RESET驱动,GIC400中断驱动,TICKLESS驱动,GPIO驱动已经编写完了,基本是依据linux里的RV1106相关代码翻译而成。

现在也编写好了GPIO 中断驱动,但发现还是未能触发中断,普通的输入,输出等操作都是OK的。不知哪里还有坑,先放一放。

#97 Re: RK3288/RK3399/RK1108 » RV1103/RV1106 裸奔日记 » 2022-08-18 11:59:29

RV1106内部自带的6个timer不可见,其还带了两个加密模式的stimer,严重怀疑当前CPU工作在加密模式,导致其不可见,当然加密模式的stimer,现在不知道其基地址,所以也无从确认起。

关于搜寻timer基地址,本来是想通过 TIMER_REVISION_6CH = 0x11970006 或 TIMER_REVISION_2CH = 0x11970002 这两个关键信息,写了个程序来遍历的,但访问某些地址空间,触发访问异常,无法继续搜寻,所以,这个思路就没有继续了。

理论上是可以对异常进行处理后,再继续搜寻的。这个问题先放弃了,采用CORTEX-A7内部自带的,也更通用点,实现功能就行,不纠结了。

#98 Re: RK3288/RK3399/RK1108 » RV1103/RV1106 裸奔日记 » 2022-08-18 11:44:26

关于timer的运行模式,看linux内核,有些平台4个中断全部一起注册,额,这是增强适应性吧。

timer {
                compatible = "arm,armv7-timer";
                interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
                             <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
                             <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
                             <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
                clock-frequency = <24000000>;
        };

PPI 中断号从16开始,对应就是上面的26,27,29,30,四个中断号

#99 Re: RK3288/RK3399/RK1108 » RV1103/RV1106 裸奔日记 » 2022-08-18 11:38:23

已实现timer的中断支持,还算利用cortex-a7的timer了,核心代码如下:

#define armv7_read_cntpctl()		({ u32_t val; __asm__ __volatile__("mrc p15, 0, %0, c14, c2, 1" : "=r" (val)); val; })
#define armv7_write_cntpctl(val)	__asm__ __volatile__("mcr p15, 0, %0, c14, c2, 1\nisb sy\n" : : "r" (val));

static inline void armv7_timer_start(void)
{
	u32_t ctrl = armv7_read_cntpctl();
	if(!(ctrl & (1 << 0)))
	{
		ctrl |= (1 << 0);
		armv7_write_cntpctl(ctrl);
	}
}

static inline void armv7_timer_stop(void)
{
	u32_t ctrl = armv7_read_cntpctl();
	if((ctrl & (1 << 0)))
	{
		ctrl &= ~(1 << 0);
		armv7_write_cntpctl(ctrl);
	}
}

static inline void armv7_timer_interrupt_enable(void)
{
	u32_t ctrl = armv7_read_cntpctl();
	if(ctrl & (1 << 1))
	{
		ctrl &= ~(1 << 1);
		armv7_write_cntpctl(ctrl);
	}
}

static inline void armv7_timer_interrupt_disable(void)
{
	u32_t ctrl = armv7_read_cntpctl();
	if(!(ctrl & (1 << 1)))
	{
		ctrl |= (1 << 1);
		armv7_write_cntpctl(ctrl);
	}
}

static inline u64_t armv7_timer_frequecy(void)
{
	u32_t v;

	__asm__ __volatile__("mrc p15, 0, %0, c14, c0, 0" : "=r" (v));
	return (v != 0) ? (u64_t)v : 1000000;
}

static inline u64_t armv7_timer_read(void)
{
	u32_t l, h;

	__asm__ __volatile__("mrrc p15, 0, %0, %1, c14" : "=r" (l), "=r" (h));
	return ((u64_t)h << 32) | l;
}

static inline void armv7_timer_compare(uint64_t interval)
{
	u64_t last = armv7_timer_read() + interval;

	__asm__ __volatile__("mcrr p15, 2, %Q0, %R0, c14" : : "r" (last));
}

PPI里面timer中断有4个

#define RV1106_IRQ_HYPERVISOR_TIMER			(26)
#define RV1106_IRQ_VIRTUAL_TIMER			(27)
#define RV1106_IRQ_SECURE_PHYSICAL_TIMER	(29)
#define RV1106_IRQ_NONSECURE_PHYSICAL_TIMER	(30)

现在需要申请29号中断才可以触发,仅申请30号中断,无法触发,从这一点来看,现在代码运行在加密模式?

引导过程大概如下:
BOOTROM -> DDR.BIN -> XBOOT

BOOTROM 和 DDR.BIN,前在运行在加密模式的可能性比较低,后者很有可能。现在还没有对当前CPU运行模式摸个底。

#100 Re: RK3288/RK3399/RK1108 » RV1103/RV1106 裸奔日记 » 2022-08-18 09:23:27

RV1106应该带了6个timer,但翻遍SDK,没能找到TIMER的基地址,有个0xff660000这个地址,貌似是基地址,但查看IP版本号又对不上,额,如果不能用TIMER,只能去用cortex-a7自带的timer实现tickless驱动了。

#101 Re: RK3288/RK3399/RK1108 » RV1103/RV1106 裸奔日记 » 2022-08-18 09:18:08

在没有TRM手册情况下,只能参考官方SDK,一点点来编写各种驱动了,算慢慢翻译吧,CLOCK,RESET,GPIO,IRQ,TIMER,这些都得慢慢翻译过来

#102 Re: RK3288/RK3399/RK1108 » RV1103/RV1106 裸奔日记 » 2022-08-18 09:14:48

继续RV1106的裸奔,在编写看门狗驱动,发现时间到了后,并不能复位芯片,有一个机关,必须在启动时执行如下代码

	/*
	 * Release the watchdog
	 */
	write32(0xff000000 + 0x0004, 0x2000200);
	write32(0xff3b0000 + 0x0c10, 0x400040);

现在没TRM手册,也搞不清是啥意思,先能用就行,顺便来个sys_cpu_init函数吧,start.S里调用下,免得后面还有一堆未知的依赖。

void sys_cpu_init(void)
{
	/*
	 * Set all devices to Non-secure
	 */
	write32(0xff070000 + 0x0020, 0xffff0000);
	write32(0xff070000 + 0x0024, 0xffff0000);
	write32(0xff070000 + 0x0028, 0xffff0000);
	write32(0xff070000 + 0x002c, 0xffff0000);
	write32(0xff070000 + 0x0030, 0xffff0000);
	write32(0xff070000 + 0x00bc, 0x000f0000);
	write32(0xff076000 + 0x0020, 0xffff0000);
	write32(0xff076000 + 0x0024, 0xffff0000);
	write32(0xff076000 + 0x0028, 0xffff0000);
	write32(0xff076000 + 0x002c, 0xffff0000);
	write32(0xff076000 + 0x0030, 0xffff0000);
	write32(0xff076000 + 0x0040, 0x00030002);
	write32(0xff080000, 0x20000000);

	/*
	 * Set the emmc and fspi to access secure area
	 */
	write32(0xff900000 + 0x4c, 0x00000000);
	write32(0xff910000 + 0x44, 0xff00ffff);

	/*
	 * Set fspi clk 6mA
	 */
	write32(0xff568000 + 0x0030, 0x0f000700);

	/*
	 * Set the USB2 PHY in suspend mode and turn off the
	 * USB2 PHY FS/LS differential receiver to save power
	 */
	write32(0xff000000 + 0x0050, 0x01ff01d1);
	write32(0xff3e0000 + 0x0100, 0x00000000);

	/*
	 * Release the watchdog
	 */
	write32(0xff000000 + 0x0004, 0x2000200);
	write32(0xff3b0000 + 0x0c10, 0x400040);

	/*
	 * When venc/npu use pvtpll, reboot will fail, because
	 * pvtpll is reset before venc/npu reset, so venc/npu
	 * is not completely reset, system will block when access
	 * NoC in SPL.
	 */
	write32(0xff3b0000 + 0x1008, 0xffff0018);
	write32(0xff3b0000 + 0x1000, 0x00030003);
	write32(0xff3b0000 + 0x1038, 0xffff0018);
	write32(0xff3b0000 + 0x1030, 0x00030003);
	sdelay(20);

	/*
	 * Limits npu max transport packets to 4 for route to scheduler,
	 * give much more chance for other controllers to access memory.
	 */
	write32(0xff140080 + 0x0008, 0x4);

	/*
	 * Improve VENC QOS PRIORITY
	 */
	write32(0xff150000 + 0x0008, 0x303);
}

#103 Re: RK3288/RK3399/RK1108 » RV1103/RV1106 裸奔日记 » 2022-08-12 16:37:33

对于RV1106支持SD NAND有个比较棘手的问题,RK默认EMMC启动使用200MHZ的时钟,而SD NAND基本不够格,从这一点来说RV1106是无法使用SD NAND做引导介质的

但是否可以修改EMMC时钟频率,这个就不敢肯定了

烧录不行,引导启动肯定也是不行的

#104 Re: RK3288/RK3399/RK1108 » RV1103/RV1106 裸奔日记 » 2022-08-11 18:42:07

EMMC引导肯定是可以支持的,只不过现在因为硬件限制,无法进行测试,那么疑问来了。

RV1103/RV1106是否能支持SD NAND引导呢,至少这种玩意有一定的性价比,特别是容量有要求时,优势会比较明显。

SPI NAND 最大容量是4Gbit
SD NAND 最大容量是8Gbit

EMMC这玩意最小得4GB

#105 Re: RK3288/RK3399/RK1108 » RV1103/RV1106 裸奔日记 » 2022-08-11 18:33:24

虽然,未进行EMMC引导测试,但根据分析,如果需要用EMMC介质进行裸奔,烧写指令会是如下方式:

EMMC烧录指令 (offset = 0x00080000, sector = 1024)

sudo xrock maskrom rv1106_ddr_924MHz_v1.09.bin rv1106_usbplug_v1.03.bin --rc4-off;
sleep 3;
sudo xrock flash write 1024 xbootpak.bin;
sudo xrock reset;

#106 Re: RK3288/RK3399/RK1108 » RV1103/RV1106 裸奔日记 » 2022-08-11 18:18:58

当然,除了使用XROCK工具进行烧写之外,还可以利用《瑞芯微工具套件 1.8》进行烧写裸机程序。
两种烧写方法原理是一样的,如果是windows平台,注意下,两者的驱动是不一样的。

spi nor flash 烧写
spinor.png

spi nand flash 烧写
spinand.png

#107 Re: RK3288/RK3399/RK1108 » RV1103/RV1106 裸奔日记 » 2022-08-11 18:10:12

RV1103 / RV1106 裸奔已支持SPI NOR FLASH以及SPI NAND FLASH引导

SPI NOR FLASH烧录指令 (offset = 0x00020000, sector = 256)

sudo xrock maskrom rv1106_ddr_924MHz_v1.09.bin rv1106_usbplug_v1.03.bin --rc4-off;
sleep 3;
sudo xrock flash write 256 xbootpak.bin;
sudo xrock reset;

SPI NAND FLASH烧录指令 (offset = 0x00040000, sector = 512)

sudo xrock maskrom rv1106_ddr_924MHz_v1.09.bin rv1106_usbplug_v1.03.bin --rc4-off;
sleep 3;
sudo xrock flash write 512 xbootpak.bin;
sudo xrock reset;

#108 Re: RK3288/RK3399/RK1108 » RV1103/RV1106 裸奔日记 » 2022-08-10 15:56:21

上传个LVGL触摸的操作视频,1024X600的分辨率

#109 Re: RK3288/RK3399/RK1108 » RV1103/RV1106 裸奔日记 » 2022-08-09 20:01:28

1_20220809-2000.jpg

搞定linux系统所有功能,跑个lvgl8先。

#110 Re: RK3288/RK3399/RK1108 » RV1103/RV1106 裸奔日记 » 2022-08-09 17:28:00

先DUMP整个时种树,以便裸奔时参考。

# cat clk_summary
                                 enable  prepare  protect                                duty
   clock                          count    count    count        rate   accuracy phase  cycle
---------------------------------------------------------------------------------------------
 xin24m                              18       18        0    24000000          0     0  50000
    pclk_vi_rtc_root                  2        2        0    24000000          0     0  50000
       pclk_vi_rtc_phy                1        1        0    24000000          0     0  50000
       pclk_vi_rtc_test               1        1        0    24000000          0     0  50000
    clk_tsadc_tsen                    1        1        0    12000000          0     0  50000
    clk_tsadc                         1        1        0     1000000          0     0  50000
    clk_user_otpc_s                   0        0        0    12000000          0     0  50000
    clk_sbpi_otpc_s                   0        0        0    24000000          0     0  50000
       clk_pmc_otp                    0        0        0    24000000          0     0  50000
    clk_user_otpc_ns                  0        0        0    12000000          0     0  50000
    clk_sbpi_otpc_ns                  0        0        0    24000000          0     0  50000
    clk_otpc_arb                      0        0        0    24000000          0     0  50000
    clk_macphy                        1        1        0    24000000          0     0  50000
    dbclk_gpio2                       0        0        0    24000000          0     0  50000
    clk_sdmmc_detn_flt                0        0        0    24000000          0     0  50000
    cclk_src_sdmmc                    1        1        0      800000          0     0  50000
       sdmmc_sample                   0        0        0      400000          0     0  50000
       sdmmc_drv                      0        0        0      400000          0    90  50000
    dbclk_gpio3                       0        0        0    24000000          0     0  50000
    dbclk_gpio1                       0        0        0    24000000          0     0  50000
    clk_uart_detn_flt                 0        0        0    24000000          0     0  50000
    tclk_pmu_wdt                      0        0        0    24000000          0     0  50000
    clk_refout                        0        0        0    24000000          0     0  50000
    clk_pvtm_pmu                      0        0        0    24000000          0     0  50000
    clk_pmu_mcu_rtc                   0        0        0    24000000          0     0  50000
    dbclk_pmu_gpio0                   0        0        0    24000000          0     0  50000
    clk_pmu                           1        1        0    24000000          0     0  50000
       clk_ddr_fail_safe              0        0        0    24000000          0     0  50000
    clk_rtc32k_frac                   0        0        0       32768          0     0  50000
       clk_rtc_32k                    0        0        0       32768          0     0  50000
    tclk_wdt_s                        0        0        0    24000000          0     0  50000
    tclk_wdt_ns                       0        0        0    24000000          0     0  50000
    clk_ref_usbphy                    2        2        0    24000000          0     0  50000
       clk_usbphy_480m                1        1        0   480000000          0     0  50000
    clk_ref_usbotg                    1        1        0    24000000          0     0  50000
    clk_saradc                        1        1        0     3000000          0     0  50000
    clk_capture_pwm2_peri             0        0        0    24000000          0     0  50000
    clk_capture_pwm1_peri             0        0        0    24000000          0     0  50000
    clk_timer_root                    2        2        0    24000000          0     0  50000
       clk_timer5                     1        1        0    24000000          0     0  50000
       clk_timer4                     0        0        0    24000000          0     0  50000
       clk_timer3                     0        0        0    24000000          0     0  50000
       clk_timer2                     0        0        0    24000000          0     0  50000
       clk_timer1                     0        0        0    24000000          0     0  50000
       clk_timer0                     0        0        0    24000000          0     0  50000
       clk_stimer1                    0        0        0    24000000          0     0  50000
       clk_stimer0                    0        0        0    24000000          0     0  50000
    clk_capture_pwm0_peri             0        0        0    24000000          0     0  50000
    dbclk_gpio4                       0        0        0    24000000          0     0  50000
    cclk_src_emmc                     0        0        0      400000          0     0  50000
       emmc_sample                    0        0        0      200000          0     0  50000
       emmc_drv                       0        0        0      200000          0   180  50000
    clk_timer_ddrmon                  0        0        0    24000000          0     0  50000
    clk_vicap_m1                      1        1        0    24000000          0     0  50000
       sclk_vicap_m1                  1        1        0    24000000          0     0  50000
    clk_vicap_m0                      1        1        0    24000000          0     0  50000
       sclk_vicap_m0                  1        1        0    24000000          0     0  50000
    clk_uart5                         0        0        0    24000000          0     0  50000
       sclk_uart5                     0        0        0    24000000          0     0  50000
    clk_uart4                         0        0        0    24000000          0     0  50000
       sclk_uart4                     0        0        0    24000000          0     0  50000
    clk_uart3                         0        0        0    24000000          0     0  50000
       sclk_uart3                     0        0        0    24000000          0     0  50000
    clk_uart2                         1        1        0    24000000          0     0  50000
       sclk_uart2                     1        1        0    24000000          0     0  50000
    clk_uart1                         0        0        0    24000000          0     0  50000
       sclk_uart1                     0        0        0    24000000          0     0  50000
    clk_uart0                         0        0        0    24000000          0     0  50000
       sclk_uart0                     0        0        0    24000000          0     0  50000
    clk_ref_mipi1                     0        0        0    24000000          0     0  50000
       mclk_ref_mipi1                 0        0        0    24000000          0     0  50000
    clk_core_mcu_rtc                  1        1        0    24000000          0     0  50000
    clk_pvtm_core                     0        0        0    24000000          0     0  50000
    xin_osc0_half                     0        0        0    12000000          0     0  50000
       i2s0_8ch_mclkout               0        0        0    12000000          0     0  50000
    pll_gpll                          1        1        0  1188000000          0     0  50000
       gpll                          12       12        0  1188000000          0     0  50000
          clk_vicap_m1_src            0        0        0   594000000          0     0  50000
             clk_vicap_m1_frac        0        0        0    12000000          0     0  50000
          clk_vicap_m0_src            0        0        0   594000000          0     0  50000
             clk_vicap_m0_frac        0        0        0    12000000          0     0  50000
          clk_uart5_src               0        0        0   594000000          0     0  50000
             clk_uart5_frac           0        0        0    12000000          0     0  50000
          clk_uart4_src               0        0        0   594000000          0     0  50000
             clk_uart4_frac           0        0        0    12000000          0     0  50000
          clk_uart3_src               0        0        0   594000000          0     0  50000
             clk_uart3_frac           0        0        0    12000000          0     0  50000
          clk_uart2_src               0        0        0   594000000          0     0  50000
             clk_uart2_frac           0        0        0    12000000          0     0  50000
          clk_uart1_src               0        0        0   594000000          0     0  50000
             clk_uart1_frac           0        0        0    12000000          0     0  50000
          clk_uart0_src               0        0        0   594000000          0     0  50000
             clk_uart0_frac           0        0        0    12000000          0     0  50000
          clk_ref_mipi1_src           0        0        0   594000000          0     0  50000
             clk_ref_mipi1_frac       0        0        0    12000000          0     0  50000
          clk_ref_mipi0_src           1        1        0   594000000          0     0  50000
             clk_ref_mipi0_frac       1        1        0    27000000          0     0  50000
                clk_ref_mipi0         1        1        0    27000000          0     0  50000
                   mclk_ref_mipi0       1        1        0    27000000          0     0  50000
          clk_i2s0_8ch_rx_src         1        1        0   594000000          0     0  50000
             clk_i2s0_8ch_rx_frac       1        1        0     2048000          0     0  50000
                clk_i2s0_8ch_rx       1        1        0     2048000          0     0  50000
                   mclk_i2s0_8ch_rx       1        1        0     2048000          0     0  50000
          clk_i2s0_8ch_tx_src         1        1        0   594000000          0     0  50000
             clk_i2s0_8ch_tx_frac       1        1        0     2048000          0     0  50000
                clk_i2s0_8ch_tx       1        1        0     2048000          0     0  50000
                   mclk_i2s0_8ch_tx       2        2        0     2048000          0     0  50000
                      mclk_sai        0        0        0     2048000          0     0  50000
                      mclk_dsm        0        0        0     2048000          0     0  50000
                      mclk_acodec_tx       1        1        0     2048000          0     0  50000
          clk_450m_src                1        1        0   475200000          0     0  50000
          clk_400m_src                4        4        0   396000000          0     0  50000
             cclk_src_sdio            0        0        0   396000000          0     0  50000
                sdio_sample           0        0        0   198000000          0     0  50000
                sdio_drv              0        0        0   198000000          0   180  50000
             clk_core_rga2e           0        0        0   396000000          0     0  50000
             aclk_vo_root             1        1        0   396000000          0     0  50000
                aclk_rga2e            0        0        0   396000000          0     0  50000
             aclk_vepu_com_root       1        1        0   396000000          0     0  50000
             dclk_decom               0        0        0   396000000          0     0  50000
             aclk_peri_root           1        1        0   396000000          0     0  50000
                aclk_ive              0        0        0   396000000          0     0  50000
                aclk_decom            0        0        0   396000000          0     0  50000
          clk_339m_src                4        4        0   339428572          0     0  50000
             clk_core_isp3p2          1        1        0   339428572          0     0  50000
             dclk_vicap               1        1        0   339428572          0     0  50000
             aclk_vi_root             3        3        0   339428572          0     0  50000
                aclk_vicap            1        1        0   339428572          0     0  50000
                aclk_isp3p2           1        1        0   339428572          0     0  50000
          clk_300m_src                5        5        0   297000000          0     0  50000
             sclk_sfc                 0        0        0    74250000          0     0  50000
             aclk_vop_root            1        1        0   297000000          0     0  50000
                aclk_vop              1        1        0   297000000          0     0  50000
             aclk_mac_root            1        1        0   297000000          0     0  50000
                aclk_mac              1        1        0   297000000          0     0  50000
             aclk_vepu_root           2        2        0   297000000          0     0  50000
                aclk_vepu_pp          0        0        0   297000000          0     0  50000
                aclk_vepu             1        1        0   297000000          0     0  50000
             clk_pka_crypto           0        0        0   297000000          0     0  50000
             clk_core_crypto          0        0        0   297000000          0     0  50000
             aclk_bus_root            3        3        0   297000000          0     0  50000
                aclk_usbotg           1        1        0   297000000          0     0  50000
                aclk_dmac             1        1        0   297000000          0     0  50000
                aclk_crypto           0        0        0   297000000          0     0  50000
          clk_200m_src                6        8        0   198000000          0     0  50000
             hclk_vo_root             2        2        0   198000000          0     0  50000
                hclk_vop              1        1        0   198000000          0     0  50000
                hclk_sdio             0        0        0   198000000          0     0  50000
                hclk_rga2e            0        0        0   198000000          0     0  50000
             clk_core_vepu_dvbm       0        0        0   198000000          0     0  50000
             clk_spi0                 0        0        0   198000000          0     0  50000
             hclk_vepu_root           2        2        0   198000000          0     0  50000
                hclk_vepu_pp          0        0        0   198000000          0     0  50000
                hclk_vepu             1        1        0   198000000          0     0  50000
             clk_i2c1                 0        1        0   198000000          0     0  50000
             hclk_pmu_root            1        1        0   198000000          0     0  50000
                hclk_pmu_sram         0        0        0   198000000          0     0  50000
                clk_pmu_mcu           0        0        0   198000000          0     0  50000
             clk_100m_pmu             1        1        0    99000000          0     0  50000
                pclk_pmu_root         3        4        0    99000000          0     0  50000
                   pclk_pmu_wdt       0        0        0    99000000          0     0  50000
                   pclk_pvtm_pmu       0        0        0    99000000          0     0  50000
                   pclk_pmu_mailbox       0        0        0    99000000          0     0  50000
                   pclk_i2c1          0        1        0    99000000          0     0  50000
                   pclk_pmu_gpio0       1        1        0    99000000          0     0  50000
                   pclk_pmu           1        1        0    99000000          0     0  50000
             clk_i2c4                 0        1        0   198000000          0     0  50000
             clk_i2c3                 0        0        0   198000000          0     0  50000
             clk_i2c2                 0        0        0   198000000          0     0  50000
             clk_i2c0                 0        0        0   198000000          0     0  50000
             hclk_peri_root           2        2        0   198000000          0     0  50000
                hclk_trng_s           0        0        0   198000000          0     0  50000
                hclk_trng_ns          0        0        0   198000000          0     0  50000
                hclk_sai              0        0        0   198000000          0     0  50000
                hclk_bootrom          0        0        0   198000000          0     0  50000
                hclk_sfc              0        0        0   198000000          0     0  50000
                hclk_ive              0        0        0   198000000          0     0  50000
                hclk_i2s0             1        1        0   198000000          0     0  50000
                hclk_emmc             0        0        0   198000000          0     0  50000
                hclk_crypto           0        0        0   198000000          0     0  50000
          clk_150m_src                5        5        0   148500000          0     0  50000
             pclk_vo_root             4        4        0   148500000          0     0  50000
                pclk_tsadc            1        1        0   148500000          0     0  50000
                pclk_otp_mask         0        0        0   148500000          0     0  50000
                pclk_otpc_s           0        0        0   148500000          0     0  50000
                pclk_otpc_ns          0        0        0   148500000          0     0  50000
                pclk_mac              2        2        0   148500000          0     0  50000
                pclk_gpio2            1        1        0   148500000          0     0  50000
             pclk_vi_root             4        4        0   148500000          0     0  50000
                pclk_mipicsiphy       1        1        0   148500000          0     0  50000
                pclk_gpio3            1        1        0   148500000          0     0  50000
                pclk_csihost1         0        0        0   148500000          0     0  50000
                pclk_csihost0         1        1        0   148500000          0     0  50000
             hclk_vi_root             4        4        0   148500000          0     0  50000
                hclk_vicap            1        1        0   148500000          0     0  50000
                hclk_sdmmc            1        1        0   148500000          0     0  50000
                hclk_isp3p2           1        1        0   148500000          0     0  50000
             hclk_npu_root            2        2        0   148500000          0     0  50000
                hclk_rknn             1        1        0   148500000          0     0  50000
          clk_core_mcu                1        1        0   297000000          0     0  50000
          hclk_cpu                    1        1        0   198000000          0     0  50000
    pll_cpll                          1        1        0  1000000000          0     0  50000
       cpll                           5        5        0  1000000000          0     0  50000
          dclk_vop_src                1        1        0    50000000          0     0  50000
             dclk_vop                 1        1        0    50000000          0     0  50000
          clk_500m_src                2        2        0   500000000          0     0  50000
             aclk_ddr_root            2        2        0   500000000          0     0  50000
                aclk_sys_shrm         1        1        0   500000000          0     0  50000
          clk_250m_src                1        1        0   250000000          0     0  50000
          clk_100m_src                7        7        0   100000000          0     0  50000
             pclk_vepu_root           2        2        0   100000000          0     0  50000
                pclk_gpio1            1        1        0   100000000          0     0  50000
                pclk_spi0             0        0        0   100000000          0     0  50000
             clk_pwm2_peri            0        0        0   100000000          0     0  50000
             clk_pwm1_peri            0        0        0   100000000          0     0  50000
             clk_pwm0_peri            2        2        0   100000000          0     0  50000
             pclk_peri_root           7        9        0   100000000          0     0  50000
                pclk_wdt_s            0        0        0   100000000          0     0  50000
                pclk_wdt_ns           0        0        0   100000000          0     0  50000
                pclk_usbphy           1        1        0   100000000          0     0  50000
                pclk_uart5            0        0        0   100000000          0     0  50000
                pclk_uart4            0        0        0   100000000          0     0  50000
                pclk_uart3            0        0        0   100000000          0     0  50000
                pclk_uart2            1        1        0   100000000          0     0  50000
                pclk_timer            1        1        0   100000000          0     0  50000
                pclk_stimer           0        0        0   100000000          0     0  50000
                pclk_spi1             0        0        0   100000000          0     0  50000
                pclk_saradc           1        1        0   100000000          0     0  50000
                pclk_pwm2_peri        0        0        0   100000000          0     0  50000
                pclk_pwm1_peri        0        0        0   100000000          0     0  50000
                pclk_uart1            0        0        0   100000000          0     0  50000
                pclk_uart0            0        0        0   100000000          0     0  50000
                pclk_pwm0_peri        0        2        0   100000000          0     0  50000
                pclk_dft2apb          0        0        0   100000000          0     0  50000
                pclk_i2c4             0        1        0   100000000          0     0  50000
                pclk_i2c3             0        0        0   100000000          0     0  50000
                pclk_i2c2             0        0        0   100000000          0     0  50000
                pclk_i2c0             0        0        0   100000000          0     0  50000
                pclk_gpio4            1        1        0   100000000          0     0  50000
                pclk_dsm              0        0        0   100000000          0     0  50000
                pclk_decom            0        0        0   100000000          0     0  50000
                pclk_acodec           1        1        0   100000000          0     0  50000
             pclk_npu_root            1        1        0   100000000          0     0  50000
             pclk_ddr_root            2        2        0   100000000          0     0  50000
                pclk_dfictrl          1        1        0   100000000          0     0  50000
                pclk_ddrc             0        0        0   100000000          0     0  50000
                pclk_ddrmon           0        0        0   100000000          0     0  50000
                pclk_ddr_hwlp         0        0        0   100000000          0     0  50000
                pclk_ddrphy           0        0        0   100000000          0     0  50000
             pclk_top_root            1        1        0   100000000          0     0  50000
          clk_50m_src                 2        2        0    50000000          0     0  50000
             clk_gmac0_50m_o          2        2        0    50000000          0     0  50000
                clk_gmac0_tx_50m_o       1        1        0    50000000          0     0  50000
                clk_gmac0_ref_50m       1        1        0    50000000          0     0  50000
             clk_spi1                 0        0        0    50000000          0     0  50000
    pll_dpll                          1        1        0   924000000          0     0  50000
       dpll                           1        1        0   924000000          0     0  50000
          clk_core_ddrc_src           2        2        0   462000000          0     0  50000
             clk_core_ddrc            1        1        0   462000000          0     0  50000
             aclk_ddrc                1        1        0   462000000          0     0  50000
             clk_ddr_phy              0        0        0   462000000          0     0  50000
             clk_ddrmon               0        0        0   462000000          0     0  50000
             clk_dfictrl              0        0        0   462000000          0     0  50000
    pll_apll                          1        1        0  1608000000          0     0  50000
       apll                           1        1        0  1608000000          0     0  50000
          armclk                      1        1        0  1608000000          0     0  50000
             pclk_dbg                 2        2        0   201000000          0     0  50000
                pclk_cpu_root         2        2        0   201000000          0     0  50000
                   pclk_mailbox       1        1        0   201000000          0     0  50000
 clk_pvtpll_1                         1        1        0   420000000          0     0  50000
    aclk_npu_root                     2        2        0   420000000          0     0  50000
       aclk_rknn                      1        1        0   420000000          0     0  50000
 clk_pvtpll_0                         1        1        0   410000000          0     0  50000
    clk_core_vepu                     1        1        0   410000000          0     0  50000
 clk_utmi_usbotg                      1        1        0           0          0     0  50000
 sclk_in_spi0                         0        0        0           0          0     0  50000
 pclk_vicap_vepu                      1        1        0           0          0     0  50000
 clk_rxbyteclkhs_1                    0        0        0           0          0     0  50000
 clk_rxbyteclkhs_0                    1        1        0           0          0     0  50000
 pclk_vicap                           1        1        0           0          0     0  50000
 i1clk_vicap                          1        1        0           0          0     0  50000
 i0clk_vicap                          1        1        0           0          0     0  50000
 isp0clk_vicap                        2        2        0           0          0     0  50000
 rx1pclk_vicap                        1        1        0           0          0     0  50000
 rx0pclk_vicap                        1        1        0           0          0     0  50000

#111 Re: RK3288/RK3399/RK1108 » RV1103/RV1106 裸奔日记 » 2022-08-02 09:53:58

这个芯片比F133/D1S/T113便宜,有价格优势

#112 Re: RK3288/RK3399/RK1108 » RV1103/RV1106 裸奔日记 » 2022-08-01 15:11:42

自己造的一个板子,没有寄存器手册,只能用各种资料来推测具体芯片内部细节了,搞定常规外设,基本没太大问题,先用官方的sdk来跑通所有功能先。

#113 Re: RK3288/RK3399/RK1108 » RV1103/RV1106 裸奔日记 » 2022-07-29 17:13:52

为了烧写裸奔镜像,这里对xrock工具进行了扩展,支持了RV1103/RV1106芯片

https://github.com/xboot/xrock

烧写指令:

sudo xrock maskrom rv1106_ddr_924MHz_v1.07.bin rv1106_usbplug_v1.03.bin --rc4-off;
sleep 3;
sudo xrock flash write 512 xbootpak.bin;
sudo xrock reset;

#114 RK3288/RK3399/RK1108 » RV1103/RV1106 裸奔日记 » 2022-07-29 17:10:58

xboot
回复: 67

RV1103 / RV1106开始裸奔了,要搞定裸奔必须研究透RK的引导机制,经过一整天的深入研究,在没有任何TRM手册的情况下,搞定了RV1106的SPI NAND FLASH引导启动。

下面是启动日记

DDR Version V1.07 20220523
f947
F
DDRConf2
DDR3, BW=16 Col=10 Bk=8 CS0 Row=13 CS=1 Die BW=16 Size=128MB
924MHz
DDR bin out

█████████████████████████
██ ▄▄▄▄▄ ██▄▀▀▀█ ▄▄▄▄▄ ██
██ █   █ █ ▀▄█ █ █   █ ██
██ █▄▄▄█ ██▄  ██ █▄▄▄█ ██
██▄▄▄▄▄▄▄█▄█ █ █▄▄▄▄▄▄▄██
████▀▄ ▀▄▄█ ▀█▄▀█▀▀  █▀██
███▀▄▀ ▀▄ ▄█▀▀▄▀█ ▀█ ▄███
███▄█▄█▄▄▄▀▀ ▄ ▀ ▄▄ ▀  ██
██ ▄▄▄▄▄ █▄ ▄█▄▀▄████▄▄██
██ █   █ █ ▀█▄█▄▄█ ▄▀█▄██
██ █▄▄▄█ ██▀  █ ▄▄▄▄█▄ ██
██▄▄▄▄▄▄▄███▄██▄▄▄▄▄▄▄███
█████████████████████████
       _                   _                     
 _  _ | |___ _____ _____ _| |_                   
\ \/ /|  _  |  _  |  _  |_   _|  (C) 2007-2022   
 )  ( | |_| | |_| | |_| | | |____JIANJUN.JIANG__ 
/_/\_\|_____|_____|_____| |_____________________|
V3.0.0 (Jul 29 2022 - 16:59:22) - [x1106][X1106 Based On RV1106 SOC]
[    0.000020]Probe device 'blk-romdisk.0' with blk-romdisk
[    0.000800]Probe device 'usbphy480m' with clk-fixed
[    0.000810]Probe device 'xin24m' with clk-fixed
[    0.000820]Probe device 'xin32k' with clk-fixed
[    0.000830]Probe device 'link-uart0' with clk-link
[    0.000840]Probe device 'link-uart1' with clk-link
[    0.000850]Probe device 'link-uart2' with clk-link
[    0.000860]Probe device 'link-uart3' with clk-link
[    0.000870]Probe device 'link-uart4' with clk-link
[    0.000880]Probe device 'link-uart5' with clk-link
[    0.000890]Probe device 'uart-8250.0' with uar              &       S&LWobe device 'uart-8250.2' with uart-8250
[    0.000920]Probe device 'uart-8250.3' with uart-8250
[    0.000930]Probe device 'uart-8250.4' with uart-8250
[    0.000940]Probe device 'uart-8250.5' with uart-8250
[    0.000950]Probe device 'console-uart.0' with console-uart
[    0.001060]mount /private with 'ram' filesystem

xboot: /#            
xboot: /# 

#115 Re: RK3288/RK3399/RK1108 » RV1106/RV1103芯片参数 » 2022-07-29 17:05:46

RV1106 裸奔

DDR Version V1.07 20220523
f947
F
DDRConf2
DDR3, BW=16 Col=10 Bk=8 CS0 Row=13 CS=1 Die BW=16 Size=128MB
924MHz
DDR bin out

█████████████████████████
██ ▄▄▄▄▄ ██▄▀▀▀█ ▄▄▄▄▄ ██
██ █   █ █ ▀▄█ █ █   █ ██
██ █▄▄▄█ ██▄  ██ █▄▄▄█ ██
██▄▄▄▄▄▄▄█▄█ █ █▄▄▄▄▄▄▄██
████▀▄ ▀▄▄█ ▀█▄▀█▀▀  █▀██
███▀▄▀ ▀▄ ▄█▀▀▄▀█ ▀█ ▄███
███▄█▄█▄▄▄▀▀ ▄ ▀ ▄▄ ▀  ██
██ ▄▄▄▄▄ █▄ ▄█▄▀▄████▄▄██
██ █   █ █ ▀█▄█▄▄█ ▄▀█▄██
██ █▄▄▄█ ██▀  █ ▄▄▄▄█▄ ██
██▄▄▄▄▄▄▄███▄██▄▄▄▄▄▄▄███
█████████████████████████
       _                   _                     
 _  _ | |___ _____ _____ _| |_                   
\ \/ /|  _  |  _  |  _  |_   _|  (C) 2007-2022   
 )  ( | |_| | |_| | |_| | | |____JIANJUN.JIANG__ 
/_/\_\|_____|_____|_____| |_____________________|
V3.0.0 (Jul 29 2022 - 16:59:22) - [x1106][X1106 Based On RV1106 SOC]
[    0.000020]Probe device 'blk-romdisk.0' with blk-romdisk
[    0.000800]Probe device 'usbphy480m' with clk-fixed
[    0.000810]Probe device 'xin24m' with clk-fixed
[    0.000820]Probe device 'xin32k' with clk-fixed
[    0.000830]Probe device 'link-uart0' with clk-link
[    0.000840]Probe device 'link-uart1' with clk-link
[    0.000850]Probe device 'link-uart2' with clk-link
[    0.000860]Probe device 'link-uart3' with clk-link
[    0.000870]Probe device 'link-uart4' with clk-link
[    0.000880]Probe device 'link-uart5' with clk-link
[    0.000890]Probe device 'uart-8250.0' with uar              &       S&LWobe device 'uart-8250.2' with uart-8250
[    0.000920]Probe device 'uart-8250.3' with uart-8250
[    0.000930]Probe device 'uart-8250.4' with uart-8250
[    0.000940]Probe device 'uart-8250.5' with uart-8250
[    0.000950]Probe device 'console-uart.0' with console-uart
[    0.001060]mount /private with 'ram' filesystem

xboot: /#            

#116 Re: 全志 SOC » XFEL已支持spi nand flash烧写 » 2022-06-28 11:23:11

估计还是某些型号的spi nand在操作上有些特殊,可以对照手册研究下,看是否能解决这个问题。

#117 Re: 全志 SOC » XFEL已支持spi nand flash烧写 » 2022-06-27 19:10:20

有其他spi nand吗?是否也是同样的现象,还是仅仅是个别spi nand有这种问题?

#118 Re: 全志 SOC » XFEL已支持spi nand flash烧写 » 2022-06-27 09:58:57

jlzheng 说:

@xboot 感谢提供xfel工具。我用的是一块V3s+MX35LF1GE4AB spinand, 碰到个奇怪的问题。用xfel 直接写入或擦除后写入都会读不出来,但是擦除后下电再上电,然后写入就能成功读出。请教下这是什么原因?谢谢。

你的意思是写入后,需要掉电下,才能正常读出来?否则,读不出来?

用最新的xfel了吗?

#119 Re: 全志 SOC » t113-s3用xboot编译成功烧录到nor没反应,sdram里面可以运行 » 2022-06-10 09:16:02

之前应该是验证过的,不过很久没有再次验证了,你试试spi nand看看,严格按readme操作。

#120 Re: 全志 SOC » T113同时启用RISC-V和A7双核的尝试 » 2022-06-07 09:00:18

还有一个地方需要研究,就是efuse部分,这个东西有可能搞手脚的。

#121 Re: RK3288/RK3399/RK1108 » RV1106/RV1103芯片参数 » 2022-06-02 15:38:05

有没有TRM文档呢,丢个上来吧。

#123 Re: 全志 SOC » 一个如何让你的客户必须从你这里购买主芯片新思路,抛砖引玉,探讨探讨。(不采用加密芯片的方案) » 2022-05-23 09:55:08

多级信任链,是可取的,但整个游戏规则,必须由芯片原厂来设计,芯片原厂其实是没有太多动力做这件事的,反正你都是我的芯片,随便你哪个代理商,贸易商,方案商来出,都是一样的,还省得麻烦,现在主要是思考现行商业模式下,如何能达成此类需求,不做伤筋动骨的假设。

#126 Re: 全志 SOC » 一个如何让你的客户必须从你这里购买主芯片新思路,抛砖引玉,探讨探讨。(不采用加密芯片的方案) » 2022-05-21 18:52:38

这种方案,有个最大的好处是,客户随便刷机,也感受不到保护机制的存在,只有客户在心生邪念时,才会被教育。前期合作双方没有任何心理负担,彼此都很坦诚,可以有效维护客户关系。合作久了,心生邪念了,也能有效保护个人利益免受侵害。如果一开始就来个加密芯片,很守规则的客户估计心理要凉半截。得不偿失。

#128 Re: 全志 SOC » 一个如何让你的客户必须从你这里购买主芯片新思路,抛砖引玉,探讨探讨。(不采用加密芯片的方案) » 2022-05-21 18:30:38

有了这些机制,剩下的就是完整性保护,防止干掉恶心提示,这里就需要有部分代码是闭源的,且启动时需要检测是否修改过。这个可以用上可信引导技术。

#130 Re: 全志 SOC » 一个如何让你的客户必须从你这里购买主芯片新思路,抛砖引玉,探讨探讨。(不采用加密芯片的方案) » 2022-05-21 18:26:05

如果没有efuse,就写到flash里,一起出给客户,但这种方案,必须保证主芯片和flash是配套的,但贴片时很难杜绝,这种情况,只能是等客户贴好板子了,给客户激活,或者网络直接激活。虽然有恶心的提升,但不影响使用,如果搞服务器的话,可以让客户自行激活,而且还可以计算数量。

#131 Re: 全志 SOC » 一个如何让你的客户必须从你这里购买主芯片新思路,抛砖引玉,探讨探讨。(不采用加密芯片的方案) » 2022-05-21 18:23:12

先说思路,自己搞个ECC密钥对,保护好,杜绝泄漏。
先根据芯片的唯一ID,SHA256运算,再ECDSA签名,签名文件写入芯片的EFUSE,然后写好efuse的芯片,就可以直接出给客户了。

#132 Re: 全志 SOC » 一个如何让你的客户必须从你这里购买主芯片新思路,抛砖引玉,探讨探讨。(不采用加密芯片的方案) » 2022-05-21 18:20:47

那怎么判断这个芯片是不是你卖给他的呢,这里有多种组合方案。

1,SOC里有唯一ID,还有EFUSE
2,SOC里有唯一ID,没有EFUSE,但要求客户买你的SPI nor 或者EMMC
3,如果SOC没有唯一ID,没有EFUSE或者不购买SPI nor,EMMC等,这种情况直接pass,考虑加密芯片吧。

#133 Re: 全志 SOC » 一个如何让你的客户必须从你这里购买主芯片新思路,抛砖引玉,探讨探讨。(不采用加密芯片的方案) » 2022-05-21 18:17:32

先解决恶心提示问题,这个比较简单,直接在窗口显示一陀东西,就行了,怎么恶心,怎么来,反正关不掉。

#134 全志 SOC » 一个如何让你的客户必须从你这里购买主芯片新思路,抛砖引玉,探讨探讨。(不采用加密芯片的方案) » 2022-05-21 18:14:50

xboot
回复: 16

一年前,写了个帖子https://whycan.com/t_6507.html在全志芯片F1C100S/V3S/V831上实现裸机加密方案,防盗版进行时(不采用专用加密芯片)。
用于解决防盗版问题,这种方案是保护整个产品。

但如果我们的诉求变化了,不是保护完整的产品,仅要保证客户必须从我这里采购芯片,即使客户不从我们这里采购芯片,也能运行,只不过有个恶心的“未授权”提示,体验功能不受任何影响,那么该如何实现呢。同样,不采用任何加密芯片(一个主芯片配一个加密芯片,这种算常规方案,不考虑)

归纳下:
1,要求客户必须从你这里买主芯片,如果是从其他渠道购买的,所有功能都是正常的,但有屏幕有恶心提示,或显示我司联系方式。
2,不采用加密芯片,
3,镜像或者源码可以提供给客户(部分闭源)。

#135 Re: 全志 SOC » T113裸奔之 通过IAR/Jlink 初始化 SDARM...... » 2022-05-16 14:09:41

理论上是一样的控制器,寄存器信息可以参考这个文件,但两者ddr.bin不一样,毕竟一个riscv,一个是arm,这些bin文件都是从原厂sdk里扣出来的,细节就很难深究了,能用就行了,用了些高级技巧来处理这种问题,全得益于之前研究V831芯片时总结出的DDR初始化方法。可以翻翻那些帖子,应该能有所收获。

#137 Re: RISC-V » 性能最强的 RISC-V 内核单片机:HPM6750 » 2022-05-11 15:08:39

看情况,应该没有F133有优势,性能及价格,以及功能

#138 Re: 全志 SOC » T113-s3 spi-nand 启动 » 2022-05-07 20:21:38

可以直接xfel spinand write,没必要xfel spinand erase

#141 Re: 全志 SOC » go语言裸机编程探索 » 2022-03-23 20:08:44

感觉比较好的思路就是用c完整实现一个类linux的各种系统调用。然后直接用go去编译链接

#142 Re: 全志 SOC » go语言裸机编程探索 » 2022-03-23 20:07:34

看了下eggos,里面实现如下syscall,不是全部linux syscall, 这些syscall,绝大部分还是用go写的。

	kernelCalls = [...]uintptr{
		syscall.SYS_ARCH_PRCTL,
		syscall.SYS_MMAP,
		syscall.SYS_MUNMAP,
		syscall.SYS_CLOCK_GETTIME,
		syscall.SYS_RT_SIGPROCMASK,
		syscall.SYS_SIGALTSTACK,
		syscall.SYS_RT_SIGACTION,
		syscall.SYS_GETTID,
		syscall.SYS_CLONE,
		syscall.SYS_FUTEX,
		syscall.SYS_NANOSLEEP,
		syscall.SYS_SCHED_YIELD,
		syscall.SYS_MADVISE,
		syscall.SYS_EXIT_GROUP,

		// TODO: real random
		unix.SYS_GETRANDOM,

		// may removed in the future
		syscall.SYS_EPOLL_CREATE1,
		syscall.SYS_EPOLL_CTL,
		syscall.SYS_EPOLL_WAIT,
		syscall.SYS_EPOLL_PWAIT,
		syscall.SYS_PIPE2,

		SYS_WAIT_IRQ,
		SYS_WAIT_SYSCALL,
		SYS_FIXED_MMAP,
		SYS_EPOLL_NOTIFY,
	}

#143 Re: 全志 SOC » go语言裸机编程探索 » 2022-03-22 11:02:39

是的,我也期望go官方能支持裸奔,这样go编译器就不要去操心了,只要专心做好runtime就行了,其实我觉得官方觉得工作量巨大,是因为没有抽象出一个统一的runtime接口,少了一个抽象层,我觉得,随着go的发展,这个抽象层是必须的,不但有一定的扩展能力,还能降低系统耦合度,代码可读性,可维护性。当然这个抽象层是否能设计的好,是否影响效率,就看官方的架构水平了。

#144 Re: 全志 SOC » 哪位兄弟用过f133移植rtthread 能否提供一下, » 2022-03-22 10:13:07

支持lvgl这种也就分分钟,作为裸机平台,这个是可以的,反正随意改造,代码足够清晰,不会带你入坑的。

#145 Re: 全志 SOC » go语言裸机编程探索 » 2022-03-22 10:08:09

对于大家玩的这些芯片,程序体积不是问题,我个人觉得反而特别合适发挥跨界MCU的优点。32MB的rom,ram,心无杂念的跑一个功能强悍的裸奔程序。系统不稳定都难。

#146 Re: 全志 SOC » go语言裸机编程探索 » 2022-03-22 10:02:17

多多研究,如果跑出helloworld了,也许我会入坑

#147 Re: 全志 SOC » go语言裸机编程探索 » 2022-03-22 10:01:07

是的,大一点,无所谓,基本代替操作系统了,毕竟OS的体积也要算上。

#148 Re: 全志 SOC » go语言裸机编程探索 » 2022-03-21 20:30:48

就看连接的运行时的大小了,估计小不了,go的库都比较高级,功能强悍,不过tinygo都能在mcu跑,感觉还是绰绰有余的。

#149 Re: 全志 SOC » 发现一个蛮有创意的二维码生成及展示方式,超级终端模式,我用来在系统上电时通过串口来展示芯片唯一ID了。 » 2022-03-21 18:13:46

生成串口二维码的代码,不复杂,就4种字符,其中一个是空格,其他是UTF8字符。支持反显,大部分linux终端,都是黑底白字,所有需要反色显示,当然对于微信,无所谓,正反都可以,但阿里的app,就不支持反显扫码了,这一点,还是微信做的好点。

/* ▀▄█ */
#define UTF8_EMPTY(inv)			do{ if(inv) { *p++ = 0xe2; *p++ = 0x96; *p++ = 0x88; } else { *p++ = 0x20; } } while(0)
#define UTF8_TOPHALF(inv)		do{ if(inv) { *p++ = 0xe2; *p++ = 0x96; *p++ = 0x84; } else { *p++ = 0xe2; *p++ = 0x96; *p++ = 0x80; } } while(0)
#define UTF8_BOTTOMHALF(inv)	do{ if(inv) { *p++ = 0xe2; *p++ = 0x96; *p++ = 0x80; } else { *p++ = 0xe2; *p++ = 0x96; *p++ = 0x84; } } while(0)
#define UTF8_FULL(inv)			do{ if(inv) { *p++ = 0x20; } else { *p++ = 0xe2; *p++ = 0x96; *p++ = 0x88; } } while(0)
#define UTF8_NEWLINE()			do{ *p++ = '\r'; *p++ = '\n'; } while(0)
#define UTF8_END()				do{ *p++ = '\0'; } while(0)

char * qrcgen_tostring(const char * txt, int invert)
{
	uint8_t qrc[QRCGEN_BUFFER_LEN_MAX];
	uint8_t tmp[QRCGEN_BUFFER_LEN_MAX];
	int qrs, x, y, i;
	int t, b;
	char *s, *p;

	if(qrcgen_encode_text(txt, tmp, qrc, QRCGEN_ECC_MEDIUM, QRCGEN_VERSION_MIN, QRCGEN_VERSION_MAX, QRCGEN_MASK_AUTO, 1))
	{
		qrs = qrcgen_get_size(qrc);
		if(qrs > 0)
		{
			p = s = malloc(((qrs + 4) * 3 + 2) * (qrs / 2 + 1 + 2) + 1);
			if(s)
			{
				for(i = 0; i < qrs + 4; ++i)
					UTF8_EMPTY(invert);
				UTF8_NEWLINE();
				for(y = 0; y < qrs; y += 2)
				{
					UTF8_EMPTY(invert);
					UTF8_EMPTY(invert);
					for(x = 0; x < qrs; x++)
					{
						t = qrcgen_get_pixel(qrc, x, y);
						b = 0;
						if(y + 1 < qrs)
							b = qrcgen_get_pixel(qrc, x, y + 1);
						if(t)
						{
							if(b)
								UTF8_FULL(invert);
							else
								UTF8_TOPHALF(invert);
						}
						else
						{
							if(b)
								UTF8_BOTTOMHALF(invert);
							else
								UTF8_EMPTY(invert);
						}
					}
					UTF8_EMPTY(invert);
					UTF8_EMPTY(invert);
					UTF8_NEWLINE();
				}
				for(i = 0; i < qrs + 4; i++)
					UTF8_EMPTY(invert);
				UTF8_NEWLINE();
				UTF8_END();
				return s;
			}
		}
	}
	return NULL;
}

#150 Re: 全志 SOC » 发现一个蛮有创意的二维码生成及展示方式,超级终端模式,我用来在系统上电时通过串口来展示芯片唯一ID了。 » 2022-03-21 18:05:44

补充下,需要终端开启UTF8支持,对于minicom可以通天 -R参数来选择utf8

sudo minicom -R utf8 -D /dev/ttyUSB0 

#151 全志 SOC » 发现一个蛮有创意的二维码生成及展示方式,超级终端模式,我用来在系统上电时通过串口来展示芯片唯一ID了。 » 2022-03-21 18:04:11

xboot
回复: 7

偶然发现的,觉得蛮有创意,就集成进xboot,每次上电开机,串口都会通过二维码的形式展示芯片唯一ID。

qrcode_20220321-1803.png


还见到另外一个创意,也觉得蛮有意思,PC跟手机传文件,写个命令行的程序,运行参数带文件路径,运行后开启http服务,并通过终端展示二维码,然后手机微信扫码,就直接下载了。也觉得蛮有用。

#152 Re: 全志 SOC » XFEL已支持spi nand flash烧写 » 2022-03-21 17:24:35

看具体操作没看出啥问题,难道spi nand坏块了?

#153 Re: 全志 SOC » go语言裸机编程探索 » 2022-03-21 17:12:17

eggos这套机制值得研究,首先得用go搞出hello world,在F1C100S平台上,裸奔启动代码不缺,就缺go编译出来的elf,直接搞成bin文件,然后缺什么补什么

#154 Re: 全志 SOC » go语言裸机编程探索 » 2022-03-21 14:05:04

eggos本质是模拟各种linux的syscall吗?

#155 Re: 全志 SOC » go语言裸机编程探索 » 2022-03-21 12:59:02

还是不喜欢tinygo这种深度魔改型,最好的方式,还是原生go编译器,增加GOARCH GOOS这种选项,只要增加个BAREMETAL或在NOOS,不管叫什么,就超级感兴趣了。就是有点遗憾~!

#156 Re: 全志 SOC » go语言裸机编程探索 » 2022-03-21 09:35:04

之前研究过一段时间,基本有两种思路,一种是完全模拟linux上的go runtime,还有一种是go编译器增加NOOS之类的编译选项,改编译器最彻底,最通用,但官方不支持。比较遗憾!

#157 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » [记录]使用SPI驱动WS2811 » 2022-03-12 10:31:51

综合判定下来,应该选择8bit模式,比较合理,资源也相对少一点,8bit的话,基本就可以不要表格了,直接运算就行了。

#158 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » [记录]使用SPI驱动WS2811 » 2022-03-12 10:26:30

按WS2812B规格书的完美参数
0.4 / 1.25 = 0.32
0.45 / 1.25 = 0.36

8bit模式
3 / 8 = 0.375

16bit模式
5 / 16 = 0.3125
6 / 16 = 0.375

看来16bit不是最优的,要找个介于0.32 和0.36之间的比值,会相对更好点。

比如12bit的话,感觉比例比较合适
4 / 12 = 0.333333333

当然12bit的话,频率就要变成9.6MHZ

#159 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » [记录]使用SPI驱动WS2811 » 2022-03-12 10:20:05

我看有的工程才有6.4M频率,8bit模式,1.25us / 8 = 0.15625us,然后8比特是3比5和5比3的方式

#160 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » [记录]使用SPI驱动WS2811 » 2022-03-12 08:33:34

使用5bit,测试下来,发现可靠性偏低,感觉有必要搞成8bit,或者16bit,反正SPI时钟速度不是瓶颈。还有感觉想要搞通用时序,估计可靠性都好不到哪里去,最优的方式,还是用可配置的8bit或者16bit方案。

#162 全志 SOC » 全志D1,D1s,F133,T113,R528的SPI控制器跟之前的SOC,有点不太一致,沿用之前的驱动在某些SPI频率上,会出现卡死现象。 » 2022-03-11 09:52:05

xboot
回复: 2

坑网LinjieGuo发布了一个帖子,用SPI来驱动WS2811这种灯带,基于此研究成果,我编写了一个WS2812的通用驱动,原贴路径https://whycan.com/t_7742.html

因为此驱动需要4M的SPI时钟,在测试后发现,程序直接卡死,实验了3M同样如此,但2M,及5M,或者50M这些都没有任何问题,SPI驱动一直沿用之前的,什么F1C100S,V3S,V831,都是这一个,因为从来没有在F133上实验过如此低的频率,所以,也一直没有发现问题。现在突然发现这个问题,就有必要去深入研究一下了,初步比较芯片手册,之前的SPI_CCR寄存器没有了。发现多了SPI_BA_CCR之类的寄存器,但虽然SPI_CCR寄存器没有了,但还是可以通过这个寄存器来控制分频。那问题来了这个消失的寄存器,是如何控制分频的,难道是SPI_BA_CCR的马甲寄存器?

有谁研究过F133的SPI控制器驱动吗?可以去linux内核里翻翻,看能否找到蛛丝马迹。

#164 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » [记录]使用SPI驱动WS2811 » 2022-03-10 20:22:11

更新了下WS2812的驱动,添加缓存支持,提升刷新效率。

26a11c1820cdb4e202a99876c37971684c4634e5
 src/driver/led/ledstrip-ws2812.c | 37 ++++++++++++++++++++-----------------
 1 file changed, 20 insertions(+), 17 deletions(-)

diff --git a/src/driver/led/ledstrip-ws2812.c b/src/driver/led/ledstrip-ws2812.c
index 6f598bb3e..bc0736ef4 100644
--- a/src/driver/led/ledstrip-ws2812.c
+++ b/src/driver/led/ledstrip-ws2812.c
@@ -47,9 +47,11 @@ struct ledstrip_ws2812_pdata_t {
 	struct spi_device_t * spidev;
 	int count;
 	struct color_t * color;
+	int buflen;
+	unsigned char * buffer;
 };
 
-static const unsigned char ws2812_table[256][5]={
+static const unsigned char ws2812_map[256][5]={
 	{ 0x84, 0x21, 0x08, 0x42, 0x10, },
 	{ 0x84, 0x21, 0x08, 0x42, 0x1e, },
 	{ 0x84, 0x21, 0x08, 0x43, 0xd0, },
@@ -308,12 +310,6 @@ static const unsigned char ws2812_table[256][5]={
 	{ 0xf7, 0xbd, 0xef, 0x7b, 0xde, },
 };
 
-static void ledstrip_ws2812_send(struct ledstrip_t * strip, unsigned char byte)
-{
-	struct ledstrip_ws2812_pdata_t * pdat = (struct ledstrip_ws2812_pdata_t *)strip->priv;
-	spi_device_write_then_read(pdat->spidev, (void *)&ws2812_table[byte][0], 5, NULL, 0);
-}
-
 static void ledstrip_ws2812_set_count(struct ledstrip_t * strip, int n)
 {
 	struct ledstrip_ws2812_pdata_t * pdat = (struct ledstrip_ws2812_pdata_t *)strip->priv;
@@ -322,9 +318,20 @@ static void ledstrip_ws2812_set_count(struct ledstrip_t * strip, int n)
 	{
 		if(pdat->color)
 			free(pdat->color);
+		if(pdat->buffer)
+			free(pdat->buffer);
 		pdat->count = n;
 		pdat->color = malloc(pdat->count * sizeof(struct color_t));
 		memset(pdat->color, 0, pdat->count * sizeof(struct color_t));
+		pdat->buflen = n * 3 * 5 + 150;
+		pdat->buffer = malloc(pdat->buflen);
+		for(int i = 0; i < n; i++)
+		{
+			memcpy(&pdat->buffer[(i * 3 + 0) * 5], (void *)&ws2812_map[0][0], 5);
+			memcpy(&pdat->buffer[(i * 3 + 1) * 5], (void *)&ws2812_map[0][0], 5);
+			memcpy(&pdat->buffer[(i * 3 + 2) * 5], (void *)&ws2812_map[0][0], 5);
+		}
+		memset(&pdat->buffer[n * 3 * 5], 0, 150);
 	}
 }
 
@@ -338,6 +345,9 @@ static void ledstrip_ws2812_set_color(struct ledstrip_t * strip, int i, struct c
 {
 	struct ledstrip_ws2812_pdata_t * pdat = (struct ledstrip_ws2812_pdata_t *)strip->priv;
 	memcpy(&pdat->color[i], c, sizeof(struct color_t));
+	memcpy(&pdat->buffer[(i * 3 + 0) * 5], (void *)&ws2812_map[pdat->color[i].g][0], 5);
+	memcpy(&pdat->buffer[(i * 3 + 1) * 5], (void *)&ws2812_map[pdat->color[i].r][0], 5);
+	memcpy(&pdat->buffer[(i * 3 + 2) * 5], (void *)&ws2812_map[pdat->color[i].b][0], 5);
 }
 
 static void ledstrip_ws2812_get_color(struct ledstrip_t * strip, int i, struct color_t * c)
@@ -349,16 +359,7 @@ static void ledstrip_ws2812_get_color(struct ledstrip_t * strip, int i, struct c
 static void ledstrip_ws2812_refresh(struct ledstrip_t * strip)
 {
 	struct ledstrip_ws2812_pdata_t * pdat = (struct ledstrip_ws2812_pdata_t *)strip->priv;
-	int i;
-
-	for(i = 0; i < 150; i++)
-		ledstrip_ws2812_send(strip, 0x00);
-	for(i = 0; i < pdat->count; i++)
-	{
-		ledstrip_ws2812_send(strip, pdat->color[i].g);
-		ledstrip_ws2812_send(strip, pdat->color[i].r);
-		ledstrip_ws2812_send(strip, pdat->color[i].b);
-	}
+	spi_device_write_then_read(pdat->spidev, pdat->buffer, pdat->buflen, NULL, 0);
 }
 
 static struct device_t * ledstrip_ws2812_probe(struct driver_t * drv, struct dtnode_t * n)
@@ -386,6 +387,8 @@ static struct device_t * ledstrip_ws2812_probe(struct driver_t * drv, struct dtn
 	pdat->spidev = spidev;
 	pdat->count = 0;
 	pdat->color = NULL;
+	pdat->buflen = 0;
+	pdat->buffer = NULL;
 
 	strip->name = alloc_device_name(dt_read_name(n), dt_read_id(n));
 	strip->set_count = ledstrip_ws2812_set_count;

#166 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » [记录]使用SPI驱动WS2811 » 2022-03-10 09:20:59

按这个总结的表格,最优的兼容性最好的,应该是T0H = 0.25us,T1H = 1us,T0L = 1us,T1L = 0.25us,两者间4倍关系,也就是说,上面的5bit表格无需改变,仅需将SPI的clk由原先的2M,换乘4M,就可以更通用了,当然这仅仅是分析,没有实际测试过。

#171 Re: 全志 SOC » 开源一个6000行的2D矢量图形库libcg,零依赖,API接口类似cairo,在某些场景可以代替cairo,特别适合裸奔场景。 » 2022-03-05 13:31:29

void cg_set_operator(struct cg_ctx_t * ctx, enum cg_operator_t op);
enum cg_operator_t {
	CG_OPERATOR_SRC				= 0, /* r = s * ca + d * cia */
	CG_OPERATOR_SRC_OVER		= 1, /* r = (s + d * sia) * ca + d * cia */
	CG_OPERATOR_DST_IN			= 2, /* r = d * sa * ca + d * cia */
	CG_OPERATOR_DST_OUT			= 3, /* r = d * sia * ca + d * cia */
};

调用cg_set_operator可以设定合成模式,测试用例没有覆盖所有模式。

#172 Re: 全志 SOC » f133用xfel烧录到ddr2运行正常,烧录到spi没反应 » 2022-03-03 20:10:38

要看你这f133.bin代码怎么写的,参考xboot源码树吧,支持spi nor及spi nand引导,自动判断的。

#173 RK3288/RK3399/RK1108 » XROCK支持RK3588 » 2022-03-03 11:56:07

xboot
回复: 1
sudo xrock maskrom rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v1.05.bin rk3588_usbplug_v1.07.bin --rc4-off
sudo xrock version

DDR写入速度

xrock write 0 boot-debug.img
100% [================================================] 36.283 MB, 11.371 MB/s  

#174 Re: 全志 SOC » 用xfel下载xboot.bin的时候提示usb bulk send error » 2022-02-25 16:57:31

而且编译参数,也要选择riscv64-f133,你搞成d1了

#175 Re: 全志 SOC » 用xfel下载xboot.bin的时候提示usb bulk send error » 2022-02-25 16:56:38

麻雀1.5是F133,你用D1的 DDR初始化命令,DDR肯定不能使用,换命令 sudo xfel ddr f133

#176 Re: 全志 SOC » 分享一个用于烧录SD-NAND或EMMC的xfel版本,目前支持F133/D1S » 2022-02-24 10:44:46

xfel利用的sram空间,而fes利用的是DDR空间,什么mmu,usb啥的,该设置的全设置了,但这种方式是严重依赖固件里的uboot的,如果uboot不正确,比如ddr配置错误,那么就无法工作了,而且全志固件包里,还有个lua插件,由烧录软件来解析执行,所以,全志烧录工具,所有芯片都能烧,是靠固件来支持的。所有需要的信息都在固件里。xfel定位是裸奔,零依赖,当然不能靠固件来做核心功能。

#178 Re: 全志 SOC » 分享一个用于烧录SD-NAND或EMMC的xfel版本,目前支持F133/D1S » 2022-02-23 11:11:05

fes模式,uboot提供的一条命令sprite_test,之前还在思考是否要支持下fes模式。

#179 Re: 全志 SOC » 计划手写一份纯C版AI深度学习推理引擎,并支持硬件加速接口,大家有啥意见及建议,还请不吝惕教。 » 2022-02-23 10:28:55

我觉得不需要太多背景知识,只要懂张量的概念,就足够了,具体怎么算的,也没必要研究,由搞数学的人来填坑,会用就行了,剩下的全是C语言知识了。

#180 Re: 全志 SOC » 小麻雀 Nezha-MQ 迎来双核A7版本128M内存(基于T113-s3) » 2022-02-17 09:39:40

T113跟R528完全一样的,都是开启的arm双核,两者仅封装不一样,R528是BGA封装的,T113跟R528相比,少引出了一些gpio,见下表。
1_20220217-0937.png

#182 Re: 全志 SOC » 小麻雀 Nezha-MQ 迎来双核A7版本128M内存(基于T113-s3) » 2022-02-16 18:04:12

xfel read 0x00000000 0x10000 t113-arm-brom.bin
xfel read 0x06000000 0x10000 t113-riscv-brom.bin

#184 Re: 全志 SOC » 小麻雀 Nezha-MQ 迎来双核A7版本128M内存(基于T113-s3) » 2022-02-16 17:08:47

RSICV核心在里面的,因为我可以dump T113的RISCV的brom,跟D1/F133的RISCV做了比较,一模一样。

#185 Re: 全志 SOC » 小麻雀 Nezha-MQ 迎来双核A7版本128M内存(基于T113-s3) » 2022-02-16 14:39:58

全志T113-S3编译烧写步骤

https://xboot.org/xboot/#/guide-allwinner-t113s3

编译源码,生成的目标文件在output目录下

make clean
make CROSS_COMPILE=/path/to/arm-none-linux-gnueabihf- PLATFORM=arm32-t113s3

烧写到RAM中并运行

sudo xfel ddr t113-s3; sudo xfel write 0x40000000 xboot.bin; sudo xfel exec 0x40000000;

烧写普通镜像到SPI Nor Flash

sudo xfel spinor write 0 xboot.bin

烧写压缩镜像到SPI Nor Flash

sudo xfel spinor write 0 xboot.bin.z

烧写普通镜像到SPI Nand Flash

sudo xfel spinand splwrite 2048 1048576 xboot.bin

烧写压缩镜像到SPI Nand Flash

sudo xfel spinand splwrite 2048 1048576 xboot.bin.z

现在T113还没有实现get_boot_device函数,默认引导介质为SPI NOR FLASH,F133, D1这些已实现get_boot_device函数。

#186 Re: 全志 SOC » 小麻雀 Nezha-MQ 迎来双核A7版本128M内存(基于T113-s3) » 2022-02-16 14:16:38

XBOOT第一时间支持T113-S3,xfel也顺利支持T113-S3,但现在ARM的中断没办法响应,估计被RISCV劫持了,或者其他什么情况,应该需要设置某些寄存器。这个问题留给有心人研究了。包括如何启动另外一个ARM核,这个是双核CORTEX-A7


下面是写demo
1_20220216-1411.jpg
2_20220216-1411.jpg

#187 Re: 全志 SOC » F133的SPL代码DRAM初始化参数是怎样的? » 2022-02-16 09:29:15

mctl_hal.S copyed from tina-d1 source code, and modify some depend functions

#189 Re: 全志 SOC » 小麻雀 Nezha-MQ 迎来双核A7版本128M内存(基于T113-s3) » 2022-02-14 16:37:30

V1.2.5版本支持R528-S3和T113-S3 DDR 初始化命令

xfel ddr r528-s3
xfel ddr t113-s3

#190 Re: 全志 SOC » 小麻雀 Nezha-MQ 迎来双核A7版本128M内存(基于T113-s3) » 2022-02-14 12:50:31

感觉未来很有可能会出一个4核版的异构马甲,该赚的钱都得赚到,才能不辱使命

#191 Re: 全志 SOC » 小麻雀 Nezha-MQ 迎来双核A7版本128M内存(基于T113-s3) » 2022-02-14 12:48:37

是4核的die,还有个dsp,之前分析r528的时候就dump了riscv的brom 跟d1的一模一样。

#192 Re: 全志 SOC » 小麻雀 Nezha-MQ 迎来双核A7版本128M内存(基于T113-s3) » 2022-02-14 09:51:42

这是坑网网友mengxp逆向R328-S3 fes1 工程里的相关代码,有一个bond_id_check函数,这个看名字是芯片邦定相关检测函数,感觉没啥大用,理论上全志应该会有一套自己的马甲管理方案的,也便于自己做产品控制,相关信息也一定会在封装时写入了efuse之类的地方,包括开哪个核,等等,这些细节有可能研究出来吗?


uint32_t crc_16(uint16_t reg, uint8_t data_crc)
{
    uint32_t ret;
    uint16_t v3;
    uint16_t v4;

    ret = reg ^ (data_crc << 8);
    v3 = 8;
    do {
        v4 = 2 * ret;
        v3--;
        if ((ret << 16) >= 0)
            ret = v4;
        else
            ret = v4 ^ 0x8005;
    } while (v3);

    return ret;
}

uint32_t disturb_coding(uint16_t disturb_code, uint8_t id_num)
{
    return (disturb_code + id_num) | (crc_16(disturb_code, id_num) << 16);
}

uint32_t id_judge_fun(uint16_t disturb_code)
{
    uint32_t chipId;
    uint8_t v5;
    uint32_t ret;

    chipId = MEMORY(0x3006200) & 0xF;
    printf("the chip id is 0x%x\n", chipId);
    if (chipId == 3)
    {
        v5 = 7;
        ret = disturb_coding(disturb_code, v5);
    }
    else
    {
        v5 = 1;
        ret = 0;
    }
    return ret;
}


int bond_id_check(void)
{
    uint8_t v0;
    uint32_t v1;
    uint16_t v3;
    uint32_t v4;

    v0 = 1;
    v1 = id_judge_fun(0);
    while (v1 != disturb_coding(0, v0))
    {
        v0++;
        if (v0 == 17)
            return 0;
    }
    v3 = 1;
    while (1)
    {
        v4 = id_judge_fun(v3);
        if (v4 != disturb_coding(v3, v0))
            break;
        v3++;
        if (v3 == 5)
            return 1;
    }
    return 0;
}

int chip_id_check(void)
{
    uint32_t chipId = MEMORY(0x3006200) & 0xF;

    if(chipId != 3)
        return 0;
    return 1;
}

#193 Re: 全志 SOC » 小麻雀 Nezha-MQ 迎来双核A7版本128M内存(基于T113-s3) » 2022-02-14 09:39:19

现在有个棘手的问题,fel模式下如果通过代码的方式区分这些马甲,已知有两类,RISCV单核一类,ARM双核一类。

RISCV 单核,D1/F133,检测代码

static int chip_detect(struct xfel_ctx_t * ctx, uint32_t id)
{
	if(id == 0x00185900)
	{
		/*
		 * XuanTie C906 RISC-V
		 */
		if(R32(0x00000000) == 0x43014281)
			return 1;
	}
	return 0;
}

ARM双核,R528/T113,检测代码

static int chip_detect(struct xfel_ctx_t * ctx, uint32_t id)
{
	if(id == 0x00185900)
	{
		/*
		 * Dual-Core ARM Cortex-A7
		 */
		if(R32(0x00000000) == 0xea000019)
			return 1;
	}
	return 0;
}

这里通过读取0地址的机器码来判断是开启的是RISCV还是ARM核,但如何进一步区分,这马甲是R528还是T113呢?或者更近一步,能区分出马甲的尾缀,比如R528-S2,R528-S3,T113-S2,T113-S3这些马甲呢?

有没有相关解决这个问题的思路呢,大家来点脑洞吧,也许真能找到完美解决方案。

#194 Re: 全志 SOC » 站在微凉大侠的肩膀上,编写F1C100S平台的CVBS IN驱动, 也就是驱动完全找不到北的TVD模块。 » 2022-02-12 10:05:57

没有垂直同步,如果你仅预览,建议将TVIN的格式转换后的buffer直接作为LCD的显示buffer吧,这样可以避免拷贝,当然最好能用上DE,FE这种硬件模块,效率更高

#196 Re: 全志 SOC » f1c100s上跑xboot,移植gt911求助 » 2022-02-09 18:41:04

"irq-f1c100s-gpio@0x01f02a40": {
    "interrupt-base": 128,
    "interrupt-count": 6,
    "interrupt-parent": 40
},要加上的话,interrupt-base、interrupt-count、interrupt-parent不知道代表什么含义,中断号吗?

这种更不需要关心了,这个给系统里的所有可中断的gpio,都注册一个中断,并生成中断号

#197 Re: 全志 SOC » f1c100s上跑xboot,移植gt911求助 » 2022-02-09 18:39:34

只要关心这个配置,填如GPIO编号即可,中断号无需关心,系统会通过gpio_to_irq来获取具体的中断号

    "interrupt-gpio": 137,
    "interrupt-gpio-config": 6,
    "reset-gpio": 138,
    "reset-gpio-config": 1

GPIO 编号如下:

#define F1C100S_GPIOA0            (0)
#define F1C100S_GPIOA1            (1)
#define F1C100S_GPIOA2            (2)
#define F1C100S_GPIOA3            (3)

#define F1C100S_GPIOC0            (64)
#define F1C100S_GPIOC1            (65)
#define F1C100S_GPIOC2            (66)
#define F1C100S_GPIOC3            (67)

#define F1C100S_GPIOD0            (96)
#define F1C100S_GPIOD1            (97)
#define F1C100S_GPIOD2            (98)
#define F1C100S_GPIOD3            (99)
#define F1C100S_GPIOD4            (100)
#define F1C100S_GPIOD5            (101)
#define F1C100S_GPIOD6            (102)
#define F1C100S_GPIOD7            (103)
#define F1C100S_GPIOD8            (104)
#define F1C100S_GPIOD9            (105)
#define F1C100S_GPIOD10            (106)
#define F1C100S_GPIOD11            (107)
#define F1C100S_GPIOD12            (108)
#define F1C100S_GPIOD13            (109)
#define F1C100S_GPIOD14            (110)
#define F1C100S_GPIOD15            (111)
#define F1C100S_GPIOD16            (112)
#define F1C100S_GPIOD17            (113)
#define F1C100S_GPIOD18            (114)
#define F1C100S_GPIOD19            (115)
#define F1C100S_GPIOD20            (116)
#define F1C100S_GPIOD21            (117)

#define F1C100S_GPIOE0            (128)
#define F1C100S_GPIOE1            (129)
#define F1C100S_GPIOE2            (130)
#define F1C100S_GPIOE3            (131)
#define F1C100S_GPIOE4            (132)
#define F1C100S_GPIOE5            (133)
#define F1C100S_GPIOE6            (134)
#define F1C100S_GPIOE7            (135)
#define F1C100S_GPIOE8            (136)
#define F1C100S_GPIOE9            (137)
#define F1C100S_GPIOE10            (138)
#define F1C100S_GPIOE11            (139)
#define F1C100S_GPIOE12            (140)

#define F1C100S_GPIOF0            (160)
#define F1C100S_GPIOF1            (161)
#define F1C100S_GPIOF2            (162)
#define F1C100S_GPIOF3            (163)
#define F1C100S_GPIOF4            (164)
#define F1C100S_GPIOF5            (165)

#198 Re: 全志 SOC » 开源一个6000行的2D矢量图形库libcg,零依赖,API接口类似cairo,在某些场景可以代替cairo,特别适合裸奔场景。 » 2022-02-09 14:39:15

直接用freetype的内部函数,几乎没有可行性,现在的freetype没那么灵活,需要修改freetype的代码,想直接用内部函数,几乎不可行。

#199 Re: 全志 SOC » 用F1C100S开发了一个项目,原始技术实现,裸奔XUI GUI框架 » 2022-02-08 09:37:46

你这写法不正确,xui_begin和xui_end之间,是会疯狂调用的,你这写法等于无限分配一个图片,当然后面的肯定无法分配成功,没有内存了。合理的写法,是外部分配好,再使用,或者引入图片cache机制。才可以这样写。

#200 Re: 全志 SOC » RK3568 boot下载失败处理方法 » 2022-02-08 09:33:25

都是些瑞芯微闭源引导文件部分,考虑不周全,然后软件不断升级引起的BUG

#201 Re: 全志 SOC » 全志D1芯片之终极探索 » 2022-01-25 18:32:46

d1_unofficial.7z

D1芯片的SVD寄存器文件,有什么好用的工具去看这玩意吗?

#202 Re: 全志 SOC » 用F1C100S开发了一个项目,原始技术实现,裸奔XUI GUI框架 » 2022-01-25 18:15:13

可以调用这个布局函数
void xui_layout_set_next(struct xui_context_t * ctx, struct region_t * r, int relative);

#203 Re: 全志 SOC » RK3568 boot下载失败处理方法 » 2022-01-25 17:10:18

可以的,只要备份一个正常的固件头,就可以修复了。

#204 Re: 全志 SOC » 全志有fel模式,瑞芯微有maskrom模式,为了给裸机开发舔砖加瓦,fel模式有xfel工具,那么maskrom模式就需要xrock工具了 » 2022-01-25 13:41:17

开发xrock已有近半年了,因RK裸奔玩家较少,故更新频率较低,最近因为要解决某些问题,增加了对RK3566, RK3568芯片的支持,新芯片采用New IDB,包括未来的RK3588旗舰芯片,这里扩展了maskrom指令,增加--rc4-off参数。

RK3566

sudo xrock maskrom rk3566_ddr_1056MHz_v1.11.bin rk356x_usbplug_v1.13.bin --rc4-off
sudo xrock version

RK3568

sudo xrock maskrom rk3568_ddr_1560MHz_v1.11.bin rk356x_usbplug_v1.13.bin --rc4-off
sudo xrock version

#205 Re: 全志 SOC » 用F1C100S开发了一个项目,原始技术实现,裸奔XUI GUI框架 » 2022-01-25 12:52:41

可以的,什么效果都可以做到,对于在一个控件之上,再绘制一个控件,需要主动调用布局相关函数,不然,会依次向下排列的。

#206 Re: 全志 SOC » XFEL已支持spi nand flash烧写 » 2022-01-25 12:48:17

https://gitee.com/xboot/xboot/blob/master/src/arch/riscv64/mach-f133/romdisk/boot/mangopi.json

modify json device tree.

	"fb-f133-rgb@0x05000000": {
		"clock-name-de": "link-de",
		"clock-name-tconlcd": "link-tconlcd",
		"reset-de": 16,
		"reset-tconlcd": 912,
		"width": 800,
		"height": 480,
		"physical-width": 216,
		"physical-height": 135,
		"bits-per-pixel": 18,
		"clock-frequency": 33000000,
		"hfront-porch": 40,
		"hback-porch": 87,
		"hsync-len": 1,
		"vfront-porch": 13,
		"vback-porch": 31,
		"vsync-len": 1,
		"hsync-active": false,
		"vsync-active": false,
		"den-active": true,
		"clk-active": true,
		"backlight": null
	},

#207 全志 SOC » RK3568 boot下载失败处理方法 » 2022-01-25 12:43:22

xboot
回复: 5

因RK3568旧芯片存在flash兼容问题,在完全擦除后,出现无法下载boot的异常现象,处理方法如下。

本处理方法仅以linux系统为例,对于window系统理论上也是可行的,但windows上驱动安装比较麻烦,不推荐。建议在linux系统上操作,不需要安装任何驱动程序。

第一步,确认板子运行在maskrom模式

如果板子运行在loader模式,需要通过短接EMMC重新上电,或者运行如下指令进入maskrom模式

sudo xrock reset maskrom

第二步,运行xrock的maskrom指令,进入loader模式

sudo xrock maskrom rk3568_ddr_920MHz_v1.05.bin rk356x_usbplug_v1.05.bin --rc4-off

第三步,写入16MB头文件

sudo xrock flash write 0 16MB.bin

经过这三步处理后,就可以正常烧录。

RK3568 boot下载失败处理方法.pdf

#208 Re: 全志 SOC » 一个网友用XFEL烧录芒果R3 spi nand,实验成功了。 » 2022-01-19 13:49:57

sprite_test命令进入fes模式后,就可以通过FES协议来烧录了。

跟烧录FLASH相关的几个FES命令,如下:

FEX_CMD_fes_down
FEX_CMD_fes_up
FEX_CMD_fes_flash_size_probe
FEX_CMD_fes_flash_set_on
FEX_CMD_fes_flash_set_off

具体哪个命令干了哪些事,看uboot代码就能明白个大概,FES协议有2个版本,现在的SDK应该都是2.0版本,之前的1.0版本貌似是13年之前的。

FES跟FEL协议差异有多大,这个还需要进一步确认下,USB传输上应该精简了些,效率高一些。

#209 Re: 全志 SOC » 一个网友用XFEL烧录芒果R3 spi nand,实验成功了。 » 2022-01-19 11:18:48

一些命令操作记录,F133平台,如何通过XFEL进入FES模式

方式1,
对uboot打补丁,默认设置WORK_MODE_USB_PRODUCT启动模式。

diff --git a/lichee/brandy-2.0/u-boot-2018/board/sunxi/board_common.c b/lichee/brandy-2.0/u-boot-2018/board/sunxi/board_common.c
index 327238b86..319623ab8 100644
--- a/lichee/brandy-2.0/u-boot-2018/board/sunxi/board_common.c
+++ b/lichee/brandy-2.0/u-boot-2018/board/sunxi/board_common.c
@@ -67,7 +67,8 @@ void set_boot_work_mode(int work_mode)
 
 int get_boot_work_mode(void)
 {
-       return uboot_spare_head.boot_data.work_mode;
+       return WORK_MODE_USB_PRODUCT;
+//     return uboot_spare_head.boot_data.work_mode;
 }

在FEL模式下,执行如下命令,就可以让F133进入FES模式了。

xfel ddr ddr2; xfel write 0x42000000 lichee/brandy-2.0/u-boot-2018/u-boot-dtb.bin; xfel exec 0x42000000;

方式2,不打补丁,通过xfel,修改uboot头,工作模式设置放置在uboot头,可以简单研究下,操作命令同上。

方式3,进入uboot命令行,敲sprite_test

进入FES模式后,就可以执行高阶烧录命令了。

#define	FEX_CMD_fes_trans						0x0201
#define	FEX_CMD_fes_run 						0x0202
#define FEX_CMD_fes_down						0x0206
#define FEX_CMD_fes_up	    					0x0207
#define FEX_CMD_fes_verify    					0x0208
#define FEX_CMD_fes_query_storage				0x0209
#define FEX_CMD_fes_probe_hardware  			0x020A
#define FEX_CMD_fes_flash_set_on				0x020A
#define FEX_CMD_fes_flash_set_off				0x020B
#define FEX_CMD_fes_verify_value    			0x020C
#define FEX_CMD_fes_verify_status   			0x020D
#define FEX_CMD_fes_flash_size_probe			0x020E
#define FEX_CMD_fes_tool_mode					0x020F
#define FEX_CMD_fes_memset                      0x0210
#define FEX_CMD_fes_pmu                         0x0211
#define FEX_CMD_fes_unseqmem_read   			0x0212
#define FEX_CMD_fes_unseqmem_write  			0x0213
#define FEX_CMD_fes_force_erase                 0x0220
#define FEX_CMD_fes_force_erase_key             0x0221
#define FEX_CMD_fes_reset_cpu					0x0214
#define FEX_CMD_fes_low_power_manger 			0x0215
#define FEX_CMD_fes_query_secure                0x0230
#define FEX_CMD_fes_query_info               0x0231

#210 全志 SOC » 一个网友用XFEL烧录芒果R3 spi nand,实验成功了。 » 2022-01-18 15:42:05

xboot
回复: 4
xfel  spinand
xfel spinand erase 0x000000 134217728
xfel spinand write 0x000000 u-boot-sunxi-with-nand-spl.bin 
xfel spinand write 0x80000 splash.bmp 
xfel spinand write 0x100000 kernel.itb 
xfel spinand write 0x600000 rootfs.squashfs

#211 Re: 全志 SOC » 请问这个判断BGA引脚有无虚焊的方法,用来判断F133A有没有TV IN 引脚有没有连接,靠谱吗? » 2022-01-17 19:27:14

找个F133B,量阻抗,再跟A的比较,效果杠杠的。或者直接去跟D1比,无差别。

#212 Re: 全志 SOC » XFEL已支持spi nand flash烧写 » 2022-01-17 18:17:20

你的代码需要拷贝到sys-copyself.c里,大概率是链接脚本没修改正确。添加一下就可以解决你的问题了。

	.text :
	{
		PROVIDE(__image_start = .);
		PROVIDE(__text_start = .);
		PROVIDE(__spl_start = .);
		.obj/arch/arm32/mach-f1c100s/start.o (.text*)
		.obj/arch/arm32/lib/memcpy.o (.text*)
		.obj/arch/arm32/lib/memset.o (.text*)
		.obj/arch/arm32/mach-f1c100s/sys-jtag.o (.text*)
		.obj/arch/arm32/mach-f1c100s/sys-uart.o (.text*)
		.obj/arch/arm32/mach-f1c100s/sys-clock.o (.text*)
		.obj/arch/arm32/mach-f1c100s/sys-dram.o (.text*)
		.obj/arch/arm32/mach-f1c100s/sys-mmu.o (.text*)
		.obj/arch/arm32/mach-f1c100s/sys-decompress.o (.text*)
		.obj/arch/arm32/mach-f1c100s/sys-hash.o (.text*)
		.obj/arch/arm32/mach-f1c100s/sys-verify.o (.text*)
		.obj/arch/arm32/mach-f1c100s/sys-spinor.o (.text*)
		.obj/arch/arm32/mach-f1c100s/sys-copyself.o (.text*)
		PROVIDE(__spl_end = .);
		*(.text*)
		*(.init.text)
		*(.exit.text)
		*(.glue*)
		*(.note.gnu.build-id)
		PROVIDE(__text_end = .);
	} > ram

#213 Re: 全志 SOC » XFEL已支持spi nand flash烧写 » 2022-01-17 18:11:50

贴一段之前的总结:

不是对齐问题,这种sys-开头的文件,是需要用特别的编程手段的,因为这些程序的链接地址都是在DDR中,而实际运行地址是在SRAM中,需要实现成地址无关的程序,而系统刚启动,什么环境都不具备,C执行环境,更是不完整的,所以只能用特别编程手段。

一般有一下注意点:
1,不要使用已初始化数据段
2,不要使用未初始化数据段
3,不要使用switch case语句,可以用if elseif 代替
4,不要使用全局变量,仅使用局部变量
5,局部变量的初始化,用代码实现,会编译成立即数赋值
6,只能使用栈空间,其他什么都不可以使用
7,不要调用任何外部库,比如工具链里的C库等。

只要按这种要求,编程,编译出来的代码,都是地址无关的,SPL代码是很特殊的,谨记运行地址不是链接地址,就明白为何需要这样处理了。
当然,这种限制,也导致编程要求较高,如果不想挑战自己,就链接两次,做两个程序吧,BL1->BL2,这种,你看某些芯片的引导链,那么长,就是因为这种原因。

独立的一个程序,支持引导,自举,换到DDR空间,要求是很高的。这种编程技巧,算挑战性编程。

#214 Re: 全志 SOC » XFEL已支持spi nand flash烧写 » 2022-01-15 17:39:32

还有一个需要注意的地方自拷贝完整镜像放在1MB偏移的地方,只要注意这些细节,spi nand 就可以引导了。

	else if(d == BOOT_DEVICE_SPINAND)
	{
		struct zdesc_t * z = (struct zdesc_t *)__heap_start;
		void * mem = (void *)__image_start;
		void * tmp = (void *)z + sizeof(struct zdesc_t);
		uint32_t size = __image_end - __image_start;

		sys_spinand_init();
		sys_spinand_read(1048576 + 65536, z, sizeof(struct zdesc_t));
		sys_spinand_exit();
		if((z->magic[0] == 'Z') && (z->magic[1] == 'B') && (z->magic[2] == 'L') && (z->magic[3] == '!'))
		{
			//if(sys_verify((char *)z->pubkey, (char *)z->sha256, (char *)z->signature))
			{
				uint32_t csize = (z->csize[0] << 24) | (z->csize[1] << 16) | (z->csize[2] << 8) | (z->csize[3] << 0);
				uint32_t dsize = (z->dsize[0] << 24) | (z->dsize[1] << 16) | (z->dsize[2] << 8) | (z->dsize[3] << 0);
				sys_spinand_init();
				sys_spinand_read(1048576 + 65536 + sizeof(struct zdesc_t), tmp, csize);
				sys_spinand_exit();
				//if(sys_hash((char *)(&z->majoy), (sizeof(struct zdesc_t) - 100) + csize, (char *)z->sha256))
				{
					sys_decompress(tmp, csize, mem, dsize);
				}
			}
		}
		else
		{
			sys_spinand_init();
			sys_spinand_read(1048576, mem, size);
			sys_spinand_exit();
		}
	}

#215 Re: 全志 SOC » XFEL已支持spi nand flash烧写 » 2022-01-15 17:35:39

F1C100S的话,貌似每个page仅使用1kB,还有一个细节需要注意,就是你spinand的page大小,sys-spinand.c文件里面有个define

/*
 * Default spi nand page size: 2048(11), 4096(12)
 */
#define SPINAND_PAGE_BITS	(11)
#define SPINAND_PAGE_MASK	((1 << SPINAND_PAGE_BITS) - 1)
#define SPINAND_PAGE_SIZE	(1 << SPINAND_PAGE_BITS)

#216 Re: 全志 SOC » XFEL已支持spi nand flash烧写 » 2022-01-15 17:31:37

你指令参数错误了,参考f133的烧录指令

sudo xfel spinand splwrite 2048 1048576 xboot.bin

这个意思是spi nand 每个扇区仅使用2KB,如果多余的话,就留空,然后完整镜像放置在1MB位置,splwrite,会在1MB之前复制尽可能多的spl备份,包括0地址也会放一个,存在多份,每个扇区使用2KB还是1KB这个由芯片的brom决定

#217 Re: 全志 SOC » XFEL已支持spi nand flash烧写 » 2022-01-12 19:51:14

UMS功能在D1上实验失败,不管是官方uboot还是社区的uboot,都没有能支持ums功能,也就是说,要想用uboot来让全志的芯片支持ums功能,还需要大量工作。看来引入uboot是不靠谱的,需要用tinyusb自己写个U盘的payload? 这工作量就大多了,还有一种思路,加载linux内核,由linux内核来实现UMS功能。

#218 Re: 全志 SOC » XFEL已支持spi nand flash烧写 » 2022-01-12 16:54:22

发现了一个机关,全志烧录工具,本质上是利用FES模式,FES模式是uboot提供的一个命令,叫做sprite_test,当你手动执行这个命令时,就可以进入FES模式,或者改变get_boot_work_mode函数的返回值为WORK_MODE_USB_PRODUCT,则uboot启动时会自动运行sprite_test命令进入FES模式。FES模式下的USB传输协议与FEL基本一致,一些命令的ID做了改变,并扩展了FLASH相关的指令,也就是说,XFEL仅需增加对FES模式的支持后,就可以实现实现flash烧写了。而且,FES模式下FES_PLATFORM_HW_ID永远是0x00161000,不管是哪种芯片。

FES,FEL模式公共命令:

#define APP_LAYER_COMMEN_CMD_VERIFY_DEV			0x0001
#define APP_LAYER_COMMEN_CMD_SWITCH_ROLE		0x0002
#define APP_LAYER_COMMEN_CMD_IS_READY			0x0003
#define APP_LAYER_COMMEN_CMD_GET_CMD_SET_VER 	0x0004
#define APP_LAYER_COMMEN_CMD_DISCONNECT			0x0010

FES模式特有的命令:

#define	FEX_CMD_fes_trans						0x0201
#define	FEX_CMD_fes_run 						0x0202
#define FEX_CMD_fes_down						0x0206
#define FEX_CMD_fes_up	    					0x0207
#define FEX_CMD_fes_verify    					0x0208
#define FEX_CMD_fes_query_storage				0x0209
#define FEX_CMD_fes_probe_hardware  			0x020A
#define FEX_CMD_fes_flash_set_on				0x020A
#define FEX_CMD_fes_flash_set_off				0x020B
#define FEX_CMD_fes_verify_value    			0x020C
#define FEX_CMD_fes_verify_status   			0x020D
#define FEX_CMD_fes_flash_size_probe			0x020E
#define FEX_CMD_fes_tool_mode					0x020F
#define FEX_CMD_fes_memset                      0x0210
#define FEX_CMD_fes_pmu                         0x0211
#define FEX_CMD_fes_unseqmem_read   			0x0212
#define FEX_CMD_fes_unseqmem_write  			0x0213
#define FEX_CMD_fes_force_erase                 0x0220
#define FEX_CMD_fes_force_erase_key             0x0221
#define FEX_CMD_fes_reset_cpu					0x0214
#define FEX_CMD_fes_low_power_manger 			0x0215
#define FEX_CMD_fes_query_secure                0x0230
#define FEX_CMD_fes_query_info               0x0231

理论上是可以实现用xfel来烧录全志image的,也就是说可以代替全志的PhoenixSuit工具的,但这个工作有多大意义就得打个问号了。

#219 Re: 全志 SOC » XFEL已支持spi nand flash烧写 » 2022-01-12 13:37:06

我先研究下ums功能,看带宽能有多快,对于45KB的SD命令,总觉得是个残缺,实用性有限。

#220 Re: 全志 SOC » XFEL已支持spi nand flash烧写 » 2022-01-12 11:37:13

看到pull request了,统筹考虑一下,再合并进去。再探讨一个问题,xfel是否需要增加一个命令,在fel模式下,通过otg口,将芯片变成一个U盘呢,就是xfel内置U盘Payload,这种需求有必要考虑吗?

#221 Re: 全志 SOC » 站在微凉大侠的肩膀上,编写F1C100S平台的CVBS IN驱动, 也就是驱动完全找不到北的TVD模块。 » 2022-01-10 09:37:12

具体4种模式,参考css里面的objtct-fit。

===============================================
object-fit:指定可替换元素的内容应该如何适应到其使用的高度和宽度确定的框。与我们熟悉的background-size属性有点相似。

contain被替换的内容将被缩放,以在填充元素的内容框时保持其宽高比。 整个对象在填充盒子的同时保留其长宽比,因此如果宽高比与框的宽高比不匹配,该对象将被添加“黑边”。
cover被替换的内容在保持其宽高比的同时填充元素的整个内容框。如果对象的宽高比与内容框不相匹配,该对象将被剪裁以适应内容框。
fill被替换的内容正好填充元素的内容框。整个对象将完全填充此框。如果对象的宽高比与内容框不相匹配,那么该对象将被拉伸以适应内容框。
none被替换的内容将保持其原有的尺寸。
scale-down内容的尺寸与 none 或 contain 中的一个相同,取决于它们两个之间谁得到的对象尺寸会更小一些。

#222 Re: 全志 SOC » 站在微凉大侠的肩膀上,编写F1C100S平台的CVBS IN驱动, 也就是驱动完全找不到北的TVD模块。 » 2022-01-10 09:34:39

贴一段xui里矩阵操作代码吧,4种填充模式。

	switch(opt & (0x3 << 12))
	{
	case XUI_IMAGE_NONE:
		sx = 1.0;
		sy = 1.0;
		break;
	case XUI_IMAGE_CONTAIN:
		sx = (double)r->w / (double)surface_get_width(s);
		sy = (double)r->h / (double)surface_get_height(s);
		if(sx >= sy)
			sx = sy;
		else
			sy = sx;
		break;
	case XUI_IMAGE_COVER:
		sx = (double)r->w / (double)surface_get_width(s);
		sy = (double)r->h / (double)surface_get_height(s);
		if(sx <= sy)
			sx = sy;
		else
			sy = sx;
		break;
	case XUI_IMAGE_FILL:
		sx = (double)r->w / (double)surface_get_width(s);
		sy = (double)r->h / (double)surface_get_height(s);
		break;
	default:
		sx = 1.0;
		sy = 1.0;
		break;
	}
	matrix_init_translate(&m, r->x + r->w / 2, r->y + r->h / 2);
	if(angle != 0.0)
		matrix_rotate(&m, angle);
	matrix_translate(&m, -surface_get_width(s) / 2 * sx, -surface_get_height(s) / 2 * sy);
	matrix_scale(&m, sx, sy);

#223 Re: 全志 SOC » 站在微凉大侠的肩膀上,编写F1C100S平台的CVBS IN驱动, 也就是驱动完全找不到北的TVD模块。 » 2022-01-10 09:31:15

修改 matrix参数进行仿射变换,想做啥效果都可以,移位,缩放,旋转,镜像。。。。想怎么来就怎么来。

#224 Re: 全志 SOC » 站在微凉大侠的肩膀上,编写F1C100S平台的CVBS IN驱动, 也就是驱动完全找不到北的TVD模块。 » 2022-01-07 16:40:10

看驱动代码
https://gitee.com/xboot/xboot/blob/master/src/arch/arm32/mach-f1c200s/driver/cam-f1c200s-tvd.c

	case 0xd5d73dfe: /* "camera-set-saturation" */
		if(p)
		{
			f1c200s_tvd_set_saturation(pdat, *p);
			return 0;
		}
		break;
	case 0x0ed48a72: /* "camera-get-saturation" */
		if(p)
		{
			*p = f1c200s_tvd_get_saturation(pdat);
			return 0;
		}
		break;
	case 0xdae4842d: /* "camera-set-brightness" */
		if(p)
		{
			f1c200s_tvd_set_brightness(pdat, *p);
			return 0;
		}
		break;
	case 0x13e1d0a1: /* "camera-get-brightness" */
		if(p)
		{
			*p = f1c200s_tvd_get_brightness(pdat);
			return 0;
		}
		break;
	case 0xf3916322: /* "camera-set-contrast" */
		if(p)
		{
			f1c200s_tvd_set_contrast(pdat, *p);
			return 0;
		}
		break;
	case 0xa8290296: /* "camera-get-contrast" */
		if(p)
		{
			*p = f1c200s_tvd_get_contrast(pdat);
			return 0;
		}
		break;

#226 Re: 全志 SOC » 全志D1芯片之终极探索 » 2022-01-07 09:28:38

xfel已支持R528,DDR初始化,Spi Nor Flash 以及Spi Nand flash烧写都已支持,为了区分芯片是RISCV版还是ARM版马甲,扩展了一个detect接口,现在判断方法是判断第一条指令是arm指令还是riscv指令。如果能找到全志的绑定,封装信息寄存器,那是最完美的,不过大概率是不会公开的。

下面是xfel的支持列表
https://xboot.org/xfel

#227 Re: 全志 SOC » 全志D1芯片之终极探索 » 2022-01-06 11:59:48

gerryqd 说:

@xboot

对于 spi nand 的支持,有点疑问,麻烦老大解释下。

目前的烧写支持不支持坏块?如果在烧写过程中发现有坏块,可以标记出坏块吗?

现在不支持坏快处理,对全志的坏块处理细节不清楚,特别是brom引导时遇到坏块,brom会怎么处理,还有一个问题,坏块标识对每一个芯片,行为都是一致的吗?这些缺少细节,所以暂时就不处理了。

#228 Re: 全志 SOC » 用F1C100S开发了一个项目,原始技术实现,裸奔XUI GUI框架 » 2022-01-06 11:30:52

@海石生风
XML打包成二进制格式,本质还是一个配置文件,那如何用xml或者二进制描述事件呢,以及在xml里如何动态修改控件状态或者外部变量呢,如果做不到这一点,就不能称之为声明式,如果仅仅是普通的xml描述界面,连响应式都算不上。

#230 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-12-29 23:11:41

而R528里面的RISCV BROM跟D1里面的BROM一模一样,也就是说芯片出厂后,各种马甲芯片,两个BROM都固化了,就看启动谁而已,这个部分全志绝对不希望被扯裤衩的。

#231 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-12-29 23:07:13

r528-arm-brom.7z
贴个arm核的brom,感兴趣可以逆向下。D1里面也有这个BROM的,只是你dump不出来。

在d1上无法dump 出arm的brom是因为riscv的brom 启动后覆盖了arm的nbrom,也就是覆盖了0地址,但r528上是可以dump 2个brom的,因为仅启动了arm的brom,riscv的还没启动。

如果找到启动riscv的机关,也就是说在r528是可以变成d1的,但这个时候arm核是否还能用,这个是未知的

#233 Re: 全志 SOC » 全志 D1 SDK 固打包件文件结构分析 » 2021-12-29 09:36:08

要摒弃tina系统,这些都得深入研究,D1主线化不知猴年马月?很讨厌这种非标的实现。

#234 Re: 全志 SOC » XFEL已支持spi nand flash烧写 » 2021-12-29 09:05:07

@byron1784

估计是你USB线缆相关问题,换好点的线材。

spi nand flash 引导对于xboot用如下命令:

烧写普通镜像到SPI Nand Flash

sudo xfel spinand splwrite 2048 1048576 xboot.bin

烧写压缩镜像到SPI Nand Flash

sudo xfel spinand splwrite 2048 1048576 xboot.bin.z

#235 Re: 全志 SOC » XFEL已支持spi nand flash烧写 » 2021-12-20 12:14:40

烧录tf这个就没有计划支持了,主要原因还是通过fel协议写入大镜像效率不会太高,很有可能是无法忍受的,所以意义也不大。当然真有这种需求也是可以通过用xfel烧录一个特制的uboot到ram中来实现,比如ums,fastoot,dfu等,这个难度不大,基本研究一下uboot就能搞出来.

#236 Re: RISC-V » 国产riscv芯片汇总 » 2021-12-18 08:59:42

没大内存,不能驱动大屏,都不感冒

#238 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-12-14 16:57:25

waycan就有,搜索下,就能找到,D1的裸奔代码

为方便大家研究全志RISCV D1芯片,花了点时间编写了一个精简版的裸机程序,方便大家学习参考。
https://whycan.com/t_6683.html

#239 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-12-10 18:27:18

已支持spi nand flash 自举引导,并扩展xfel烧录工具,支持烧录spl镜像到spi nand flash

烧写普通镜像到SPI Nand Flash

sudo xfel spinand splwrite 2048 1048576 xboot.bin

烧写压缩镜像到SPI Nand Flash

sudo xfel spinand splwrite 2048 1048576 xboot.bin.z

xfel 1.2.2版本支持的命令

xfel(v1.2.2) - https://github.com/xboot/xfel
usage:
    xfel version                                             - Show chip version
    xfel hexdump <address> <length>                          - Dumps memory region in hex
    xfel dump <address> <length>                             - Binary memory dump to stdout
    xfel exec <address>                                      - Call function address
    xfel read32 <address>                                    - Read 32-bits value from device memory
    xfel write32 <address> <value>                           - Write 32-bits value to device memory
    xfel read <address> <length> <file>                      - Read memory to file
    xfel write <address> <file>                              - Write file to memory
    xfel reset                                               - Reset device using watchdog
    xfel sid                                                 - Show sid information
    xfel jtag                                                - Enable jtag debug
    xfel ddr [type]                                          - Initial ddr controller with optional type
    xfel spinor                                              - Detect spi nor flash
    xfel spinor read <address> <length> <file>               - Read spi nor flash to file
    xfel spinor write <address> <file>                       - Write file to spi nor flash
    xfel spinand                                             - Detect spi nand flash
    xfel spinand read <address> <length> <file>              - Read spi nand flash to file
    xfel spinand write <address> <file>                      - Write file to spi nand flash
    xfel spinand splwrite <valid-page-size> <address> <file> - Write file to spi nand flash with spl mode

#240 Re: 全志 SOC » 为方便大家研究全志RISCV D1芯片,花了点时间编写了一个精简版的裸机程序,方便大家学习参考。 » 2021-12-10 18:25:31

将spl保留区域调整为1MB,并扩展了xfel,支持烧录spl镜像到spi nand flash,可以烧录普通镜像,以及压缩镜像,并能正常引导启动。

烧写普通镜像到SPI Nand Flash

sudo xfel spinand splwrite 2048 1048576 xboot.bin

烧写压缩镜像到SPI Nand Flash

sudo xfel spinand splwrite 2048 1048576 xboot.bin.z

xfel 1.2.2版本支持的命令

xfel(v1.2.2) - https://github.com/xboot/xfel
usage:
    xfel version                                             - Show chip version
    xfel hexdump <address> <length>                          - Dumps memory region in hex
    xfel dump <address> <length>                             - Binary memory dump to stdout
    xfel exec <address>                                      - Call function address
    xfel read32 <address>                                    - Read 32-bits value from device memory
    xfel write32 <address> <value>                           - Write 32-bits value to device memory
    xfel read <address> <length> <file>                      - Read memory to file
    xfel write <address> <file>                              - Write file to memory
    xfel reset                                               - Reset device using watchdog
    xfel sid                                                 - Show sid information
    xfel jtag                                                - Enable jtag debug
    xfel ddr [type]                                          - Initial ddr controller with optional type
    xfel spinor                                              - Detect spi nor flash
    xfel spinor read <address> <length> <file>               - Read spi nor flash to file
    xfel spinor write <address> <file>                       - Write file to spi nor flash
    xfel spinand                                             - Detect spi nand flash
    xfel spinand read <address> <length> <file>              - Read spi nand flash to file
    xfel spinand write <address> <file>                      - Write file to spi nand flash
    xfel spinand splwrite <valid-page-size> <address> <file> - Write file to spi nand flash with spl mode

#241 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-12-10 10:57:57

只要A7核锁了,就无需交任何版税的,参考全志A40I,T507,hdmi功能的版税规则,只要不用,是可以不交钱的。

#242 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-12-10 10:54:23

T113,也就是T133(这两名字原厂还没想好?)已经确认是双核A7,跟F133为同一个晶圆,同一个封装,pin脚定义。开的是双核cortex-a7,无RISC-V。

#243 Re: 全志 SOC » 为方便大家研究全志RISCV D1芯片,花了点时间编写了一个精简版的裸机程序,方便大家学习参考。 » 2021-12-09 23:44:37

结合搜索的各种资料,大概明白了,spl的整个过程,brom引导时会从block0开始依次检测合法spl代码,spl会存在多个备份,直到找到合法的为止,各个备份spl按block来对齐,如果 SPL 超过 1 个 block, 单个备份起始 block 地址为偶数。最大可以有8个备份,一个page是2kb有效,但这个现在不敢肯定,手上没有4kpage的nand来测试,估计大概率是还是2k有效。

#246 Re: 全志 SOC » 为方便大家研究全志RISCV D1芯片,花了点时间编写了一个精简版的裸机程序,方便大家学习参考。 » 2021-12-09 20:39:44

已实现spinand引导,确认每个page使用2k,自拷贝函数实现。

/*
 * sys-spinand.c
 *
 * Copyright(c) 2007-2021 Jianjun Jiang <8192542@qq.com>
 * Official site: http://xboot.org
 * Mobile phone: +86-18665388956
 * QQ: 8192542
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 *
 */

#include <xboot.h>

/*
 * Default spi nand page size: 2048(11), 4096(12)
 */
#define SPINAND_PAGE_BITS	(11)
#define SPINAND_PAGE_MASK	((1 << SPINAND_PAGE_BITS) - 1)
#define SPINAND_PAGE_SIZE	(1 << SPINAND_PAGE_BITS)

enum {
	SPI_GCR	= 0x04,
	SPI_TCR	= 0x08,
	SPI_IER	= 0x10,
	SPI_ISR	= 0x14,
	SPI_FCR	= 0x18,
	SPI_FSR	= 0x1c,
	SPI_WCR	= 0x20,
	SPI_CCR	= 0x24,
	SPI_MBC	= 0x30,
	SPI_MTC	= 0x34,
	SPI_BCC	= 0x38,
	SPI_TXD	= 0x200,
	SPI_RXD	= 0x300,
};

void sys_spinand_init(void)
{
	virtual_addr_t addr;
	u32_t val;

	/* Config GPIOC2, GPIOC3, GPIOC4 and GPIOC5 */
	addr = 0x02000060 + 0x00;
	val = read32(addr);
	val &= ~(0xf << ((2 & 0x7) << 2));
	val |= ((0x2 & 0xf) << ((2 & 0x7) << 2));
	write32(addr, val);

	val = read32(addr);
	val &= ~(0xf << ((3 & 0x7) << 2));
	val |= ((0x2 & 0xf) << ((3 & 0x7) << 2));
	write32(addr, val);

	val = read32(addr);
	val &= ~(0xf << ((4 & 0x7) << 2));
	val |= ((0x2 & 0xf) << ((4 & 0x7) << 2));
	write32(addr, val);

	val = read32(addr);
	val &= ~(0xf << ((5 & 0x7) << 2));
	val |= ((0x2 & 0xf) << ((5 & 0x7) << 2));
	write32(addr, val);

	/* Deassert spi0 reset */
	addr = 0x0200196c;
	val = read32(addr);
	val |= (1 << 16);
	write32(addr, val);

	/* Open the spi0 gate */
	addr = 0x02001940;
	val = read32(addr);
	val |= (1 << 31);
	write32(addr, val);

	/* Open the spi0 bus gate */
	addr = 0x0200196c;
	val = read32(addr);
	val |= (1 << 0);
	write32(addr, val);

	/* Select pll-periph0 for spi0 clk */
	addr = 0x02001940;
	val = read32(addr);
	val &= ~(0x3 << 24);
	val |= 0x1 << 24;
	write32(addr, val);

	/* Set clock pre divide ratio, divided by 1 */
	addr = 0x02001940;
	val = read32(addr);
	val &= ~(0x3 << 8);
	val |= 0x0 << 8;
	write32(addr, val);

	/* Set clock divide ratio, divided by 6 */
	addr = 0x02001940;
	val = read32(addr);
	val &= ~(0xf << 0);
	val |= (6 - 1) << 0;
	write32(addr, val);

	/* Set spi clock rate control register, divided by 2 */
	addr = 0x04025000;
	write32(addr + SPI_CCR, 0x1000);

	/* Enable spi0 and do a soft reset */
	addr = 0x04025000;
	val = read32(addr + SPI_GCR);
	val |= (1 << 31) | (1 << 7) | (1 << 1) | (1 << 0);
	write32(addr + SPI_GCR, val);
	while(read32(addr + SPI_GCR) & (1 << 31));

	val = read32(addr + SPI_TCR);
	val &= ~(0x3 << 0);
	val |= (1 << 6) | (1 << 2);
	write32(addr + SPI_TCR, val);

	val = read32(addr + SPI_FCR);
	val |= (1 << 31) | (1 << 15);
	write32(addr + SPI_FCR, val);
}

void sys_spinand_exit(void)
{
	virtual_addr_t addr = 0x04025000;
	u32_t val;

	/* Disable the spi0 controller */
	val = read32(addr + SPI_GCR);
	val &= ~((1 << 1) | (1 << 0));
	write32(addr + SPI_GCR, val);
}

static void sys_spi_select(void)
{
	virtual_addr_t addr = 0x04025000;
	u32_t val;

	val = read32(addr + SPI_TCR);
	val &= ~((0x3 << 4) | (0x1 << 7));
	val |= ((0 & 0x3) << 4) | (0x0 << 7);
	write32(addr + SPI_TCR, val);
}

static void sys_spi_deselect(void)
{
	virtual_addr_t addr = 0x04025000;
	u32_t val;

	val = read32(addr + SPI_TCR);
	val &= ~((0x3 << 4) | (0x1 << 7));
	val |= ((0 & 0x3) << 4) | (0x1 << 7);
	write32(addr + SPI_TCR, val);
}

static void sys_spi_write_txbuf(u8_t * buf, int len)
{
	virtual_addr_t addr = 0x04025000;
	int i;

	write32(addr + SPI_MTC, len & 0xffffff);
	write32(addr + SPI_BCC, len & 0xffffff);
	if(buf)
	{
		for(i = 0; i < len; i++)
			write8(addr + SPI_TXD, *buf++);
	}
	else
	{
		for(i = 0; i < len; i++)
			write8(addr + SPI_TXD, 0xff);
	}
}

static int sys_spi_transfer(void * txbuf, void * rxbuf, int len)
{
	virtual_addr_t addr = 0x04025000;
	int count = len;
	u8_t * tx = txbuf;
	u8_t * rx = rxbuf;
	u8_t val;
	int n, i;

	while(count > 0)
	{
		n = (count <= 64) ? count : 64;
		write32(addr + SPI_MBC, n);
		sys_spi_write_txbuf(tx, n);
		write32(addr + SPI_TCR, read32(addr + SPI_TCR) | (1 << 31));

		while((read32(addr + SPI_FSR) & 0xff) < n);
		for(i = 0; i < n; i++)
		{
			val = read8(addr + SPI_RXD);
			if(rx)
				*rx++ = val;
		}

		if(tx)
			tx += n;
		count -= n;
	}
	return len;
}

static int sys_spi_write_then_read(void * txbuf, int txlen, void * rxbuf, int rxlen)
{
	if(sys_spi_transfer(txbuf, NULL, txlen) != txlen)
		return -1;
	if(sys_spi_transfer(NULL, rxbuf, rxlen) != rxlen)
		return -1;
	return 0;
}

static void sys_spinand_wait(void)
{
	u8_t tx[2];
	u8_t rx[1];

	tx[0] = 0x0f;
	tx[1] = 0xc0;
	do {
		sys_spi_select();
		sys_spi_write_then_read(tx, 2, rx, 1);
		sys_spi_deselect();
	} while((rx[0] & 0x1) == 0x1);
}

void sys_spinand_read(int addr, void * buf, int count)
{
	u8_t tx[4];
	u32_t pa, ca;
	int n;

	while(count > 0)
	{
		pa = addr >> SPINAND_PAGE_BITS;
		ca = addr & SPINAND_PAGE_MASK;
		n = count > (SPINAND_PAGE_SIZE - ca) ? (SPINAND_PAGE_SIZE - ca) : count;
		tx[0] = 0x13;
		tx[1] = (u8_t)(pa >> 16);
		tx[2] = (u8_t)(pa >> 8);
		tx[3] = (u8_t)(pa >> 0);
		sys_spi_select();
		sys_spi_write_then_read(tx, 4, 0, 0);
		sys_spi_deselect();
		sys_spinand_wait();
		tx[0] = 0x03;
		tx[1] = (u8_t)(ca >> 8);
		tx[2] = (u8_t)(ca >> 0);
		tx[3] = 0x0;
		sys_spi_select();
		sys_spi_write_then_read(tx, 4, buf, n);
		sys_spi_deselect();
		sys_spinand_wait();
		addr += n;
		buf += n;
		count -= n;
	}
}

其中,因spl代码需要实现成位置无关,就不支持芯片型号检测了,一般的spi nand flash page 为2k,4k,这些通过宏定义来设置了,不动态识别。

/*
 * Default spi nand page size: 2048(11), 4096(12)
 */
#define SPINAND_PAGE_BITS	(11)
#define SPINAND_PAGE_MASK	((1 << SPINAND_PAGE_BITS) - 1)
#define SPINAND_PAGE_SIZE	(1 << SPINAND_PAGE_BITS)

这个自拷贝函数,为连续拷贝,不做任何间隔拷贝,间隔拷贝函数仅BROM中的才是如此,xboot中,spl代码实现成位置无关的,且为一个独立的镜像。其镜像最前面就是spl代码。

所以烧录时,将xboot的前64k,烧录到0地址,这个烧录过程需要做间隔处理,再将完整xboot烧录到256k的位置,这个位置无需做任何间隔处理,由上面的函数来实现自拷贝。

2k page大小的flash时,spl代码烧写无需特殊处理。

#247 Re: 全志 SOC » 为方便大家研究全志RISCV D1芯片,花了点时间编写了一个精简版的裸机程序,方便大家学习参考。 » 2021-12-09 16:06:27

那就写一个sys-spinand.c,测试下,是否能完成引导,既然是多个引导地址,那就从0开始写了。

关于spinand自拷贝,可以参考xfel里面的代码,当然,全志的boot0也可以参考。

#248 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-12-09 14:29:57

奇怪在什么地方,DDR2肯定比DDR3要慢一些,而且主频也有差别。

#249 Re: 全志 SOC » 为方便大家研究全志RISCV D1芯片,花了点时间编写了一个精简版的裸机程序,方便大家学习参考。 » 2021-12-09 13:53:00

猜测,brom里面自动搜索spi nand flash 有效spl,这个是合理的,而且也很有可能就是这样,但很有可能,D1 的brom是每个page读取2k,这样对于2k page的spi nand flash就无需留空了。

#250 Re: 全志 SOC » 为方便大家研究全志RISCV D1芯片,花了点时间编写了一个精简版的裸机程序,方便大家学习参考。 » 2021-12-09 13:46:42

@woolen
那很有可能brom spi nand flash 引导时的地址不是0,而是64KB,还有一个可能的地方,就是每个page使用的是2k,而不是1k。

两个方向查找原因:
1,spi nand flash引导地址
2,每page采用2k还是1k,checksum运算应该是必须的。

#251 Re: 全志 SOC » 开源一个6000行的2D矢量图形库libcg,零依赖,API接口类似cairo,在某些场景可以代替cairo,特别适合裸奔场景。 » 2021-12-09 11:11:58

上面为X86平台上的测试结果,下面为F133裸奔测试结果。
可以看到,相对关系还是比较稳定的,跟平台关系不大,cairo的整体表现还是略胜一筹。

F133.png

https://www.tubiaoxiu.com/p.html?s=8a307d36a77ae6fd&isChart=true

由这两个图互相对比,也能发现一个相对性指标,F133跟X86平台性能相差巨大,平均下来大概有个10几倍的性能差距,一个数量级了,RISCV任重道远。

#252 Re: 全志 SOC » 为方便大家研究全志RISCV D1芯片,花了点时间编写了一个精简版的裸机程序,方便大家学习参考。 » 2021-12-09 10:24:08

spl的大小不一定就是24k,大小由链接脚本中自动计算的__spl_size来决定,但mksunxi工具会将spl按8k的整数倍来填充,这是为了兼容各种引导介质。
xfel现在是没有做任何写1k跳1k的,后面会增加一个命令行参数来做这件事。

同样跟你有一样的疑惑,现在没有按1k跳为何能有ddr打印信息,checksum肯定是不正确的,理论上应该是禁止运行的才对。除非,对于nand 引导,checksum根本就不起作用,要确认这个问题,就需要去逆向brom了。

假设checksum不起作用,或者歪打正着,碰对了,那么后面的现象就是可解释的。
同样关注这个问题,争取有个明确的结论。

这里提供一个之前做的工作,用于判断启动的引导介质,已验证。

enum {
	BOOT_DEVICE_SPINOR,
	BOOT_DEVICE_SPINAND,
	BOOT_DEVICE_SDCARD,
};

static int get_boot_device(void)
{
	uint8_t s = *((volatile uint8_t *)(0x00020000 + 0x28));

	if(s == 0x3)
		return BOOT_DEVICE_SPINOR;
	else if(s == 0x4)
		return BOOT_DEVICE_SPINAND;
	else if(s == 0x0)
		return BOOT_DEVICE_SDCARD;
	return BOOT_DEVICE_SPINOR;
}

#254 Re: 全志 SOC » 为方便大家研究全志RISCV D1芯片,花了点时间编写了一个精简版的裸机程序,方便大家学习参考。 » 2021-12-08 14:48:56

@woolen
这个测试demo仅支持spi nor flash引导,如果要支持spi nand引导,需要做两个工作,一个是实现spi nand自拷贝,另一个是,一个page只能使用前2k,后面的需要空着。

spi nand flash 引导是有点特殊的。但只要满足这两个要求,就可以实现spi nand 自举了。

#255 Re: 全志 SOC » 开源一个6000行的2D矢量图形库libcg,零依赖,API接口类似cairo,在某些场景可以代替cairo,特别适合裸奔场景。 » 2021-12-07 19:17:49

libcg性能测试,纯C版,未启用任何汇编加速。
cairo默认配置,采用pixman做底层加速。
xvg为xboot的候补渲染接口实现,全部贝塞尔化,效率较低。

.png

详情见这个链接。
https://www.tubiaoxiu.com/p.html?s=1f5dd669953369e8&isChart=true

#256 Re: 全志 SOC » 开源一个6000行的2D矢量图形库libcg,零依赖,API接口类似cairo,在某些场景可以代替cairo,特别适合裸奔场景。 » 2021-12-07 12:17:06

增加9个硬件加速接口,方便用汇编代码来优化渲染效率。

void cg_memfill32(uint32_t * dst, uint32_t val, int len);
void cg_comp_solid_source(uint32_t * dst, int len, uint32_t color, uint32_t alpha);
void cg_comp_solid_source_over(uint32_t * dst, int len, uint32_t color, uint32_t alpha);
void cg_comp_solid_destination_in(uint32_t * dst, int len, uint32_t color, uint32_t alpha);
void cg_comp_solid_destination_out(uint32_t * dst, int len, uint32_t color, uint32_t alpha);
void cg_comp_source(uint32_t * dst, int len, uint32_t * src, uint32_t alpha);
void cg_comp_source_over(uint32_t * dst, int len, uint32_t * src, uint32_t alpha);
void cg_comp_destination_in(uint32_t * dst, int len, uint32_t * src, uint32_t alpha);
void cg_comp_destination_out(uint32_t * dst, int len, uint32_t * src, uint32_t alpha);

#257 Re: 全志 SOC » 开源一个6000行的2D矢量图形库libcg,零依赖,API接口类似cairo,在某些场景可以代替cairo,特别适合裸奔场景。 » 2021-12-04 19:59:07

1_.png

不可能做到完全一致,具体接口上,还是有些差异的,毕竟如此精简了,也不能要求太多。
增加了一些测试demo,图片裁剪,旋转缩放,拼图等相关测试用例

#258 Re: 全志 SOC » 开源一个6000行的2D矢量图形库libcg,零依赖,API接口类似cairo,在某些场景可以代替cairo,特别适合裸奔场景。 » 2021-12-04 11:06:54

修改了一处libcg与cairo行为不一致的地方,就是默认miter limit,cairo默认是10,而libcg默认是4,打个补丁就可以修复此问题,修改后fill_and_stroke这个测试用例的渲染效果就跟cairo完全一致了,还发现了一些其他行为不一致的现象,比如点划线的偏移参数为负时,fill_style测试用例,gradient测试用例,这些表现都跟cairo不一致,这些都需要慢慢修复。

diff --git a/cg.c b/cg.c
index 8e39f2c..cbb6ddf 100644
--- a/cg.c
+++ b/cg.c
@@ -2297,7 +2297,7 @@ static struct cg_state_t * cg_state_create(void)
 	cg_matrix_init_identity(&state->matrix);
 	state->winding = XVG_FILL_RULE_WINDING;
 	state->stroke.width = 1.0;
-	state->stroke.miterlimit = 4.0;
+	state->stroke.miterlimit = 10.0;
 	state->stroke.cap = XVG_LINE_CAP_BUTT;
 	state->stroke.join = XVG_LINE_JOIN_MITER;
 	state->stroke.dash = NULL;

#259 Re: 全志 SOC » 开源一个6000行的2D矢量图形库libcg,零依赖,API接口类似cairo,在某些场景可以代替cairo,特别适合裸奔场景。 » 2021-12-04 09:08:04

@novice

很不错,镜像才64KB,够小,简单看了下代码,有个地方需要注意下,因为多种测试用例用的同一个cg_ctx_t,而这个上下文在不同测试项里,某些属性是会变化的,而这些属性并没有恢复,所以渲染时会出现跟标准demo表现不一致的现象,最简单的处理方法,就是所有测试用例加上cg_save()和cg_restore(),就可以规避这个问题。

#260 Re: 全志 SOC » 全志 FEL 或 Rockchip MaskRom 在 Linux 下有时连不上的问题解决方法 » 2021-12-03 16:53:18

已合并,这个USB自动休眠,大概多长时间会触发呢,libusb是否有唤醒usb设备相关功能呢。

#262 全志 SOC » 开源一个6000行的2D矢量图形库libcg,零依赖,API接口类似cairo,在某些场景可以代替cairo,特别适合裸奔场景。 » 2021-12-03 09:02:29

xboot
回复: 25

嵌入式开发中,2D图形渲染是永远绕不过去的问题,传统的绘图,都是丑的要命,灵活性很低。高质量渲染除了大型图形库,小型系统基本无缘。

这里开源一个6000行的2D高质量矢量图形库,你没看错,就是6000行,2个C文件,核心部分是扣的freetype实现,原理就是利用freetype的软渲,来实现灵活的2D矢量渲染。

API接口模仿cairo,基本cairo的demo,拿来就跑,行为基本一致。

https://github.com/xboot/libcg

#263 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-11-18 11:30:52

教授的主页,有个项目挺有意思,用于解决IOT领域,当云或者服务失效时,IOT设备沦为电子垃圾的问题。完全云化会产生很多电子垃圾,深有同感。教授的思路是服务自动迁移,一次开发,到处运行?

https://folk.ntnu.no/michaeng/

#264 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-11-18 10:52:16

挪威科技大学的Michael Engel教授就在操作系统的课程中介绍并使用了哪吒D1及玄铁C906,并在课件中详细展示了如何在哪吒上玩转MIT的xv6 OS。
附件是课件,里面用xfel来引导xv6操作系统。
1_20211118-1051.png
xv6-riscv.pdf

#265 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-11-15 17:01:47

F133运行自制立即式UI框架--XUI

#266 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-11-15 16:20:02

F133内部含有一个电阻触摸控制器TSADC,可以直接连接标准的电阻触摸,这个控制器基本跟F1C100S的类似,所以编写驱动也就手到擒来,拷贝下,基本就可以了。对于电阻触摸屏,所涉及到的均值滤波,中值滤波,触摸校正参数等,这些xboot里都有成熟的解决方案,就不细说了。

下面是演示视频,感觉还是比较丝滑的。

#267 Re: 全志 SOC » XFEL已支持spi nand flash烧写 » 2021-11-14 11:35:57

phoenixSuit具体有没有使用整片DDR,这个是不清楚的,但可以肯定phoenixSuit一定是加载了一个小loader,可能就是利用uboot,然后再去烧录的,肯定不是纯粹的fel模式烧录的,这个跟你在uboot里启动一个fastboot,然后用fastboot来烧录是类似的。效率肯定高很多。

#268 Re: 全志 SOC » XFEL已支持spi nand flash烧写 » 2021-11-14 08:40:16

你通过spi 直接写入128M,按照33KB/s,差不多就是一个小时,现象都是正常的。

#269 Re: 全志 SOC » XFEL已支持spi nand flash烧写 » 2021-11-14 08:34:27

flash 写入时现在分为两个部分,第一个进度条是擦除进度条,第二个进度条是写入进度条,做了分离处理。注意擦除区域会按最小擦除块来擦,会覆盖到所有待写区域。

#270 Re: 全志 SOC » F1c100s性能真的很差吗? » 2021-11-13 14:06:20

CPU超频,DDR超频,效果很明显,参考司徒的实验

#274 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-11-12 16:30:05

1_20211112-1629.jpg2_20211112-1629.jpg
实在找不到DE寄存器的资料,只搞通了TCON的测试模式。

#275 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-11-10 16:17:05

还发现一个F133跟D1的差异,就是唯一序列号,D1读出来的sid看起来比较正确,但F133读出来的sid信息量太少,大部分全零,感觉不太对劲。

00005c00000000000000000000000000

#276 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-11-10 15:43:53

F133内存带宽测试

xboot: /# wboxtest benchmark
[benchmark]-[memcmp]
 Bandwidth: 154.423MB/s
[benchmark]-[memcpy]
 Bandwidth: 897.000MB/s
[benchmark]-[memmove]
 Bandwidth: 234.500MB/s
[benchmark]-[memset]
 Bandwidth: 1.907GB/s

F133是DDR2,D1是DDR3,memcpy部分F133比D1的带宽低,但其他几项尽然高了,我估计当时测试D1带宽时用的标准工具链,现在测试F133用的玄铁工具链,不然解释不通,DDR2的性能还能超过DDR3?不深究了,权当工具链的功劳了。

#277 Re: 全志 SOC » XFEL已支持spi nand flash烧写 » 2021-11-09 09:23:36

因为华邦的spi nand id是3个字节,而绝大部分spi nand id是两个字节,这里扩展了ID的匹配策略,现在支持华邦的spi nand flash了,最新的支持列表如下:

	/* Winbond */
	{ "W25N512GV",       SPINAND_ID(0xef, 0xaa, 0x20), 2048,  64,  64,  512, 1, 1 },
	{ "W25N01GV",        SPINAND_ID(0xef, 0xaa, 0x21), 2048,  64,  64, 1024, 1, 1 },
	{ "W25M02GV",        SPINAND_ID(0xef, 0xab, 0x21), 2048,  64,  64, 1024, 1, 2 },
	{ "W25N02KV",        SPINAND_ID(0xef, 0xaa, 0x22), 2048, 128,  64, 2048, 1, 1 },

	/* Gigadevice */
	{ "GD5F1GQ4UAWxx",   SPINAND_ID(0xc8, 0x10),       2048,  64,  64, 1024, 1, 1 },
	{ "GD5F1GQ4UExIG",   SPINAND_ID(0xc8, 0xd1),       2048, 128,  64, 1024, 1, 1 },
	{ "GD5F1GQ4UExxH",   SPINAND_ID(0xc8, 0xd9),       2048,  64,  64, 1024, 1, 1 },
	{ "GD5F1GQ4xAYIG",   SPINAND_ID(0xc8, 0xf1),       2048,  64,  64, 1024, 1, 1 },
	{ "GD5F2GQ4UExIG",   SPINAND_ID(0xc8, 0xd2),       2048, 128,  64, 2048, 1, 1 },
	{ "GD5F2GQ5UExxH",   SPINAND_ID(0xc8, 0x32),       2048,  64,  64, 2048, 1, 1 },
	{ "GD5F2GQ4xAYIG",   SPINAND_ID(0xc8, 0xf2),       2048,  64,  64, 2048, 1, 1 },
	{ "GD5F4GQ4UBxIG",   SPINAND_ID(0xc8, 0xd4),       4096, 256,  64, 2048, 1, 1 },
	{ "GD5F4GQ4xAYIG",   SPINAND_ID(0xc8, 0xf4),       2048,  64,  64, 4096, 1, 1 },
	{ "GD5F2GQ5UExxG",   SPINAND_ID(0xc8, 0x52),       2048, 128,  64, 2048, 1, 1 },
	{ "GD5F4GQ4UCxIG",   SPINAND_ID(0xc8, 0xb4),       4096, 256,  64, 2048, 1, 1 },

	/* Macronix */
	{ "MX35LF1GE4AB",    SPINAND_ID(0xc2, 0x12),       2048,  64,  64, 1024, 1, 1 },
	{ "MX35LF1G24AD",    SPINAND_ID(0xc2, 0x14),       2048, 128,  64, 1024, 1, 1 },
	{ "MX31LF1GE4BC",    SPINAND_ID(0xc2, 0x1e),       2048,  64,  64, 1024, 1, 1 },
	{ "MX35LF2GE4AB",    SPINAND_ID(0xc2, 0x22),       2048,  64,  64, 2048, 1, 1 },
	{ "MX35LF2G24AD",    SPINAND_ID(0xc2, 0x24),       2048, 128,  64, 2048, 1, 1 },
	{ "MX35LF2GE4AD",    SPINAND_ID(0xc2, 0x26),       2048, 128,  64, 2048, 1, 1 },
	{ "MX35LF2G14AC",    SPINAND_ID(0xc2, 0x20),       2048,  64,  64, 2048, 1, 1 },
	{ "MX35LF4G24AD",    SPINAND_ID(0xc2, 0x35),       4096, 256,  64, 2048, 1, 1 },
	{ "MX35LF4GE4AD",    SPINAND_ID(0xc2, 0x37),       4096, 256,  64, 2048, 1, 1 },

	/* Micron */
	{ "MT29F1G01AAADD",  SPINAND_ID(0x2c, 0x12),       2048,  64,  64, 1024, 1, 1 },
	{ "MT29F1G01ABAFD",  SPINAND_ID(0x2c, 0x14),       2048, 128,  64, 1024, 1, 1 },
	{ "MT29F2G01AAAED",  SPINAND_ID(0x2c, 0x9f),       2048,  64,  64, 2048, 2, 1 },
	{ "MT29F2G01ABAGD",  SPINAND_ID(0x2c, 0x24),       2048, 128,  64, 2048, 2, 1 },
	{ "MT29F4G01AAADD",  SPINAND_ID(0x2c, 0x32),       2048,  64,  64, 4096, 2, 1 },
	{ "MT29F4G01ABAFD",  SPINAND_ID(0x2c, 0x34),       4096, 256,  64, 2048, 1, 1 },
	{ "MT29F4G01ADAGD",  SPINAND_ID(0x2c, 0x36),       2048, 128,  64, 2048, 2, 2 },
	{ "MT29F8G01ADAFD",  SPINAND_ID(0x2c, 0x46),       4096, 256,  64, 2048, 1, 2 },

	/* Toshiba */
	{ "TC58CVG0S3HRAIG", SPINAND_ID(0x98, 0xc2),       2048, 128,  64, 1024, 1, 1 },
	{ "TC58CVG1S3HRAIG", SPINAND_ID(0x98, 0xcb),       2048, 128,  64, 2048, 1, 1 },
	{ "TC58CVG2S0HRAIG", SPINAND_ID(0x98, 0xcd),       4096, 256,  64, 2048, 1, 1 },
	{ "TC58CVG0S3HRAIJ", SPINAND_ID(0x98, 0xe2),       2048, 128,  64, 1024, 1, 1 },
	{ "TC58CVG1S3HRAIJ", SPINAND_ID(0x98, 0xeb),       2048, 128,  64, 2048, 1, 1 },
	{ "TC58CVG2S0HRAIJ", SPINAND_ID(0x98, 0xed),       4096, 256,  64, 2048, 1, 1 },
	{ "TH58CVG3S0HRAIJ", SPINAND_ID(0x98, 0xe4),       4096, 256,  64, 4096, 1, 1 },

	/* Esmt */
	{ "F50L512M41A",     SPINAND_ID(0xc8, 0x20),       2048,  64,  64,  512, 1, 1 },
	{ "F50L1G41A",       SPINAND_ID(0xc8, 0x21),       2048,  64,  64, 1024, 1, 1 },
	{ "F50L1G41LB",      SPINAND_ID(0xc8, 0x01),       2048,  64,  64, 1024, 1, 1 },
	{ "F50L2G41LB",      SPINAND_ID(0xc8, 0x0a),       2048,  64,  64, 1024, 1, 2 },

	/* Fison */
	{ "CS11G0T0A0AA",    SPINAND_ID(0x6b, 0x00),       2048, 128,  64, 1024, 1, 1 },
	{ "CS11G0G0A0AA",    SPINAND_ID(0x6b, 0x10),       2048, 128,  64, 1024, 1, 1 },
	{ "CS11G0S0A0AA",    SPINAND_ID(0x6b, 0x20),       2048,  64,  64, 1024, 1, 1 },
	{ "CS11G1T0A0AA",    SPINAND_ID(0x6b, 0x01),       2048, 128,  64, 2048, 1, 1 },
	{ "CS11G1S0A0AA",    SPINAND_ID(0x6b, 0x21),       2048,  64,  64, 2048, 1, 1 },
	{ "CS11G2T0A0AA",    SPINAND_ID(0x6b, 0x02),       2048, 128,  64, 4096, 1, 1 },
	{ "CS11G2S0A0AA",    SPINAND_ID(0x6b, 0x22),       2048,  64,  64, 4096, 1, 1 },

	/* Etron */
	{ "EM73B044VCA",     SPINAND_ID(0xd5, 0x01),       2048,  64,  64,  512, 1, 1 },
	{ "EM73C044SNB",     SPINAND_ID(0xd5, 0x11),       2048, 120,  64, 1024, 1, 1 },
	{ "EM73C044SNF",     SPINAND_ID(0xd5, 0x09),       2048, 128,  64, 1024, 1, 1 },
	{ "EM73C044VCA",     SPINAND_ID(0xd5, 0x18),       2048,  64,  64, 1024, 1, 1 },
	{ "EM73C044SNA",     SPINAND_ID(0xd5, 0x19),       2048,  64, 128,  512, 1, 1 },
	{ "EM73C044VCD",     SPINAND_ID(0xd5, 0x1c),       2048,  64,  64, 1024, 1, 1 },
	{ "EM73C044SND",     SPINAND_ID(0xd5, 0x1d),       2048,  64,  64, 1024, 1, 1 },
	{ "EM73D044SND",     SPINAND_ID(0xd5, 0x1e),       2048,  64,  64, 2048, 1, 1 },
	{ "EM73C044VCC",     SPINAND_ID(0xd5, 0x22),       2048,  64,  64, 1024, 1, 1 },
	{ "EM73C044VCF",     SPINAND_ID(0xd5, 0x25),       2048,  64,  64, 1024, 1, 1 },
	{ "EM73C044SNC",     SPINAND_ID(0xd5, 0x31),       2048, 128,  64, 1024, 1, 1 },
	{ "EM73D044SNC",     SPINAND_ID(0xd5, 0x0a),       2048, 120,  64, 2048, 1, 1 },
	{ "EM73D044SNA",     SPINAND_ID(0xd5, 0x12),       2048, 128,  64, 2048, 1, 1 },
	{ "EM73D044SNF",     SPINAND_ID(0xd5, 0x10),       2048, 128,  64, 2048, 1, 1 },
	{ "EM73D044VCA",     SPINAND_ID(0xd5, 0x13),       2048, 128,  64, 2048, 1, 1 },
	{ "EM73D044VCB",     SPINAND_ID(0xd5, 0x14),       2048,  64,  64, 2048, 1, 1 },
	{ "EM73D044VCD",     SPINAND_ID(0xd5, 0x17),       2048, 128,  64, 2048, 1, 1 },
	{ "EM73D044VCH",     SPINAND_ID(0xd5, 0x1b),       2048,  64,  64, 2048, 1, 1 },
	{ "EM73D044SND",     SPINAND_ID(0xd5, 0x1d),       2048,  64,  64, 2048, 1, 1 },
	{ "EM73D044VCG",     SPINAND_ID(0xd5, 0x1f),       2048,  64,  64, 2048, 1, 1 },
	{ "EM73D044VCE",     SPINAND_ID(0xd5, 0x20),       2048,  64,  64, 2048, 1, 1 },
	{ "EM73D044VCL",     SPINAND_ID(0xd5, 0x2e),       2048, 128,  64, 2048, 1, 1 },
	{ "EM73D044SNB",     SPINAND_ID(0xd5, 0x32),       2048, 128,  64, 2048, 1, 1 },
	{ "EM73E044SNA",     SPINAND_ID(0xd5, 0x03),       4096, 256,  64, 2048, 1, 1 },
	{ "EM73E044SND",     SPINAND_ID(0xd5, 0x0b),       4096, 240,  64, 2048, 1, 1 },
	{ "EM73E044SNB",     SPINAND_ID(0xd5, 0x23),       4096, 256,  64, 2048, 1, 1 },
	{ "EM73E044VCA",     SPINAND_ID(0xd5, 0x2c),       4096, 256,  64, 2048, 1, 1 },
	{ "EM73E044VCB",     SPINAND_ID(0xd5, 0x2f),       2048, 128,  64, 4096, 1, 1 },
	{ "EM73F044SNA",     SPINAND_ID(0xd5, 0x24),       4096, 256,  64, 4096, 1, 1 },
	{ "EM73F044VCA",     SPINAND_ID(0xd5, 0x2d),       4096, 256,  64, 4096, 1, 1 },
	{ "EM73E044SNE",     SPINAND_ID(0xd5, 0x0e),       4096, 256,  64, 4096, 1, 1 },
	{ "EM73C044SNG",     SPINAND_ID(0xd5, 0x0c),       2048, 120,  64, 1024, 1, 1 },
	{ "EM73D044VCN",     SPINAND_ID(0xd5, 0x0f),       2048,  64,  64, 2048, 1, 1 },

	/* Elnec */
	{ "FM35Q1GA",        SPINAND_ID(0xe5, 0x71),       2048,  64,  64, 1024, 1, 1 },

	/* Paragon */
	{ "PN26G01A",        SPINAND_ID(0xa1, 0xe1),       2048, 128,  64, 1024, 1, 1 },
	{ "PN26G02A",        SPINAND_ID(0xa1, 0xe2),       2048, 128,  64, 2048, 1, 1 },

	/* Ato */
	{ "ATO25D1GA",       SPINAND_ID(0x9b, 0x12),       2048,  64,  64, 1024, 1, 1 },

	/* Heyang */
	{ "HYF1GQ4U",        SPINAND_ID(0xc9, 0x51),       2048, 128,  64, 1024, 1, 1 },
	{ "HYF2GQ4U",        SPINAND_ID(0xc9, 0x52),       2048, 128,  64, 2048, 1, 1 },

#279 Re: 全志 SOC » XFEL已支持spi nand flash烧写 » 2021-11-08 18:32:41

A33还没有payload代码,如果有硬件的话,模仿个V3S的payload就差不多了。

#281 Re: 全志 SOC » 用F1C100S开发了一个项目,原始技术实现,裸奔XUI GUI框架 » 2021-11-08 09:34:42

xel 说:

现在的XUI比较依赖XBoot,是否能够剥离出来,作为一个单独的GUI框架呢

这里有人移植过
https://whycan.com/t_6765.html

#282 Re: 全志 SOC » 用F1C100S开发了一个项目,原始技术实现,裸奔XUI GUI框架 » 2021-11-03 19:24:25

立即UI想做任何效果都可以的,通过按键来操作UI,也是可以的,仅需要声明一个变量用来存储当前激活的控件

					if(xui_tabbar(ctx, 0xf26c, "Turn off backlight", item == MENU_ITEM_LCD))
						item = MENU_ITEM_LCD;
					if(xui_tabbar(ctx, 0xf4ad, "Device infomation", item == MENU_ITEM_INFO))
						item = MENU_ITEM_INFO;
					if(xui_tabbar(ctx, 0xf011, "Shutdown", item == MENU_ITEM_SHUTDOWN))
						item = MENU_ITEM_SHUTDOWN;

比如这段代码item是一个枚举型,代表当前激活的控件,你按按键后去改变item的值就可以了,当然如果你通过触摸控件,item的值也可以跟着变化,算数据双向绑定。

#283 Re: 全志 SOC » XFEL已支持spi nand flash烧写 » 2021-11-03 13:51:13

对于贴在板子上的SD卡,还有一种方案,就是用xfel运行一个小系统,可以是uboot或者linux之类的,然后在里面开启ums功能,这样PC上就可以刷SD卡了,而且速度还快。

#284 Re: 全志 SOC » XFEL已支持spi nand flash烧写 » 2021-11-03 11:07:16

写sd卡,貌似直接用读卡器插在电脑上更方便点。如果是Emmc的话,那还是有意义的,思路就是写个sdio的payload,然后通过xfel传输到ram中执行,有了sdio的读写,你就可以基于读写接口操作EMMC了,具体例子可以查看xfel的payload目录,参考里面的spi payload实现,模仿就可以了。

#285 Re: 全志 SOC » 正常运行状态下,有没有办法切换到FEL模式? » 2021-11-02 17:28:21

Quotation 说:

阶段性成果:目前能够在正常运行状态切换到FEL了,可以读写内存什么的。但是还无法通过sunxi-fel操作SPI Flash。

sunxi-fel不正常,可以试一试xfel,xfel在操作spi flash时会做很多初始化工作,xfel相比sunxi-fel,做的工作更多,依赖条件也更少。

#286 Re: 全志 SOC » 正常运行状态下,有没有办法切换到FEL模式? » 2021-11-02 17:23:58

我补充一个F133 / D1s的方式吧,这个是利用rtc寄存器在reset时能够保持的特性开发的,原理比较简单,就是设置rtc寄存器为某个特殊的值后直接重启,start.s会检查rtc寄存器,如果为某个特殊值,就直接进入fel模式。

相关代码:

/*
 * command/cmd-fel.c
 */

#include <xboot.h>
#include <command/command.h>

static void usage(void)
{
    printf("usage:\r\n");
    printf("    fel\r\n");
}

static int do_fel(int argc, char ** argv)
{
    virtual_addr_t virt = phys_to_virt(0x07090000);

    do {
        write32(virt + 0x100 + 0x8, 0x5aa5a55a);
        mb();
        smp_mb();
    } while(read32(virt + 0x100 + 0x8) != 0x5aa5a55a);
    machine_reboot();

    return 0;
}

static struct command_t cmd_fel = {
    .name    = "fel",
    .desc    = "reboot and enter to fel mode",
    .usage    = usage,
    .exec    = do_fel,
};

static __init void fel_cmd_init(void)
{
    register_command(&cmd_fel);
}

static __exit void fel_cmd_exit(void)
{
    unregister_command(&cmd_fel);
}

command_initcall(fel_cmd_init);
command_exitcall(fel_cmd_exit);
    /* Check flag and enter to fel mode */
    addi sp, sp, -32
    sd s0, 8(sp)
    sd s1, 16(sp)
    sd ra, 24(sp)
    mv s0, a0
    li t0, 0x07090108
    lw t1, (t0)
    li t2, 0x5aa5a55a
    sw zero, (t0)
    bne t1, t2, _fel
    ld ra, 24(sp)
    ld s0, 8(sp)
    ld s1, 16(sp)
    addi sp, sp, 32
    ret
_fel:
    nop

权当抛砖引玉

#287 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-11-01 17:44:42

XFEL工具现已支持spi nand flash的烧写,感兴趣的可以体验下,如果碰到问题了,也不妨提个issue。
https://whycan.com/t_7323.html

#288 全志 SOC » XFEL已支持spi nand flash烧写 » 2021-11-01 17:41:21

xboot
回复: 75

xfel工具很早就支持了spi nor flash的读写,但spi nand flash的支持一直没提上日程,考虑到F133,D1s的玩家越来越多,这个spi nand flash的支持就迫在眉睫了。经过几天的开发设计,spi nand flash的支持基本完成了。下面是支持的spi nand芯片列表,已经算是尽我所能,找到最全的芯片列表了。当然现在仅测试过MX35LF2GE4AD这颗,其他芯片的验证在遇到具体问题后,再进行调试了。

	/* Gigadevice */
	{ "GD5F1GQ4UAWxx",   0xc810, 2048,  64,  64, 1024, 1, 1 },
	{ "GD5F1GQ4UExIG",   0xc8d1, 2048, 128,  64, 1024, 1, 1 },
	{ "GD5F1GQ4UExxH",   0xc8d9, 2048,  64,  64, 1024, 1, 1 },
	{ "GD5F1GQ4xAYIG",   0xc8f1, 2048,  64,  64, 1024, 1, 1 },
	{ "GD5F2GQ4UExIG",   0xc8d2, 2048, 128,  64, 2048, 1, 1 },
	{ "GD5F2GQ5UExxH",   0xc832, 2048,  64,  64, 2048, 1, 1 },
	{ "GD5F2GQ4xAYIG",   0xc8f2, 2048,  64,  64, 2048, 1, 1 },
	{ "GD5F4GQ4UBxIG",   0xc8d4, 4096, 256,  64, 2048, 1, 1 },
	{ "GD5F4GQ4xAYIG",   0xc8f4, 2048,  64,  64, 4096, 1, 1 },
	{ "GD5F2GQ5UExxG",   0xc852, 2048, 128,  64, 2048, 1, 1 },
	{ "GD5F4GQ4UCxIG",   0xc8b4, 4096, 256,  64, 2048, 1, 1 },

	/* Macronix */
	{ "MX35LF1GE4AB",    0xc212, 2048,  64,  64, 1024, 1, 1 },
	{ "MX35LF1G24AD",    0xc214, 2048, 128,  64, 1024, 1, 1 },
	{ "MX31LF1GE4BC",    0xc21e, 2048,  64,  64, 1024, 1, 1 },
	{ "MX35LF2GE4AB",    0xc222, 2048,  64,  64, 2048, 1, 1 },
	{ "MX35LF2G24AD",    0xc224, 2048, 128,  64, 2048, 1, 1 },
	{ "MX35LF2GE4AD",    0xc226, 2048, 128,  64, 2048, 1, 1 },
	{ "MX35LF2G14AC",    0xc220, 2048,  64,  64, 2048, 1, 1 },
	{ "MX35LF4G24AD",    0xc235, 4096, 256,  64, 2048, 1, 1 },
	{ "MX35LF4GE4AD",    0xc237, 4096, 256,  64, 2048, 1, 1 },

	/* Micron */
	{ "MT29F1G01AAADD",  0x2c12, 2048,  64,  64, 1024, 1, 1 },
	{ "MT29F1G01ABAFD",  0x2c14, 2048, 128,  64, 1024, 1, 1 },
	{ "MT29F2G01AAAED",  0x2c9f, 2048,  64,  64, 2048, 2, 1 },
	{ "MT29F2G01ABAGD",  0x2c24, 2048, 128,  64, 2048, 2, 1 },
	{ "MT29F4G01AAADD",  0x2c32, 2048,  64,  64, 4096, 2, 1 },
	{ "MT29F4G01ABAFD",  0x2c34, 4096, 256,  64, 2048, 1, 1 },
	{ "MT29F4G01ADAGD",  0x2c36, 2048, 128,  64, 2048, 2, 2 },
	{ "MT29F8G01ADAFD",  0x2c46, 4096, 256,  64, 2048, 1, 2 },

	/* Toshiba */
	{ "TC58CVG0S3HRAIG", 0x98c2, 2048, 128,  64, 1024, 1, 1 },
	{ "TC58CVG1S3HRAIG", 0x98cb, 2048, 128,  64, 2048, 1, 1 },
	{ "TC58CVG2S0HRAIG", 0x98cd, 4096, 256,  64, 2048, 1, 1 },
	{ "TC58CVG0S3HRAIJ", 0x98e2, 2048, 128,  64, 1024, 1, 1 },
	{ "TC58CVG1S3HRAIJ", 0x98eb, 2048, 128,  64, 2048, 1, 1 },
	{ "TC58CVG2S0HRAIJ", 0x98ed, 4096, 256,  64, 2048, 1, 1 },
	{ "TH58CVG3S0HRAIJ", 0x98e4, 4096, 256,  64, 4096, 1, 1 },

	/* Esmt */
	{ "F50L512M41A",     0xc820, 2048,  64,  64,  512, 1, 1 },
	{ "F50L1G41A",       0xc821, 2048,  64,  64, 1024, 1, 1 },
	{ "F50L1G41LB",      0xc801, 2048,  64,  64, 1024, 1, 1 },
	{ "F50L2G41LB",      0xc80a, 2048,  64,  64, 1024, 1, 2 },

	/* Fison */
	{ "CS11G0T0A0AA",    0x6b00, 2048, 128,  64, 1024, 1, 1 },
	{ "CS11G0G0A0AA",    0x6b10, 2048, 128,  64, 1024, 1, 1 },
	{ "CS11G0S0A0AA",    0x6b20, 2048,  64,  64, 1024, 1, 1 },
	{ "CS11G1T0A0AA",    0x6b01, 2048, 128,  64, 2048, 1, 1 },
	{ "CS11G1S0A0AA",    0x6b21, 2048,  64,  64, 2048, 1, 1 },
	{ "CS11G2T0A0AA",    0x6b02, 2048, 128,  64, 4096, 1, 1 },
	{ "CS11G2S0A0AA",    0x6b22, 2048,  64,  64, 4096, 1, 1 },

	/* Etron */
	{ "EM73B044VCA",     0xd501, 2048,  64,  64,  512, 1, 1 },
	{ "EM73C044SNB",     0xd511, 2048, 120,  64, 1024, 1, 1 },
	{ "EM73C044SNF",     0xd509, 2048, 128,  64, 1024, 1, 1 },
	{ "EM73C044VCA",     0xd518, 2048,  64,  64, 1024, 1, 1 },
	{ "EM73C044SNA",     0xd519, 2048,  64, 128,  512, 1, 1 },
	{ "EM73C044VCD",     0xd51c, 2048,  64,  64, 1024, 1, 1 },
	{ "EM73C044SND",     0xd51d, 2048,  64,  64, 1024, 1, 1 },
	{ "EM73D044SND",     0xd51e, 2048,  64,  64, 2048, 1, 1 },
	{ "EM73C044VCC",     0xd522, 2048,  64,  64, 1024, 1, 1 },
	{ "EM73C044VCF",     0xd525, 2048,  64,  64, 1024, 1, 1 },
	{ "EM73C044SNC",     0xd531, 2048, 128,  64, 1024, 1, 1 },
	{ "EM73D044SNC",     0xd50a, 2048, 120,  64, 2048, 1, 1 },
	{ "EM73D044SNA",     0xd512, 2048, 128,  64, 2048, 1, 1 },
	{ "EM73D044SNF",     0xd510, 2048, 128,  64, 2048, 1, 1 },
	{ "EM73D044VCA",     0xd513, 2048, 128,  64, 2048, 1, 1 },
	{ "EM73D044VCB",     0xd514, 2048,  64,  64, 2048, 1, 1 },
	{ "EM73D044VCD",     0xd517, 2048, 128,  64, 2048, 1, 1 },
	{ "EM73D044VCH",     0xd51b, 2048,  64,  64, 2048, 1, 1 },
	{ "EM73D044SND",     0xd51d, 2048,  64,  64, 2048, 1, 1 },
	{ "EM73D044VCG",     0xd51f, 2048,  64,  64, 2048, 1, 1 },
	{ "EM73D044VCE",     0xd520, 2048,  64,  64, 2048, 1, 1 },
	{ "EM73D044VCL",     0xd52e, 2048, 128,  64, 2048, 1, 1 },
	{ "EM73D044SNB",     0xd532, 2048, 128,  64, 2048, 1, 1 },
	{ "EM73E044SNA",     0xd503, 4096, 256,  64, 2048, 1, 1 },
	{ "EM73E044SND",     0xd50b, 4096, 240,  64, 2048, 1, 1 },
	{ "EM73E044SNB",     0xd523, 4096, 256,  64, 2048, 1, 1 },
	{ "EM73E044VCA",     0xd52c, 4096, 256,  64, 2048, 1, 1 },
	{ "EM73E044VCB",     0xd52f, 2048, 128,  64, 4096, 1, 1 },
	{ "EM73F044SNA",     0xd524, 4096, 256,  64, 4096, 1, 1 },
	{ "EM73F044VCA",     0xd52d, 4096, 256,  64, 4096, 1, 1 },
	{ "EM73E044SNE",     0xd50e, 4096, 256,  64, 4096, 1, 1 },
	{ "EM73C044SNG",     0xd50c, 2048, 120,  64, 1024, 1, 1 },
	{ "EM73D044VCN",     0xd50f, 2048,  64,  64, 2048, 1, 1 },

	/* Elnec */
	{ "FM35Q1GA",        0xe571, 2048,  64,  64, 1024, 1, 1 },

	/* Paragon */
	{ "PN26G01A",        0xa1e1, 2048, 128,  64, 1024, 1, 1 },
	{ "PN26G02A",        0xa1e2, 2048, 128,  64, 2048, 1, 1 },

	/* Ato */
	{ "ATO25D1GA",       0x9b12, 2048,  64,  64, 1024, 1, 1 },

	/* Heyang */
	{ "HYF1GQ4U",        0xc951, 2048, 128,  64, 1024, 1, 1 },
	{ "HYF2GQ4U",        0xc952, 2048, 128,  64, 2048, 1, 1 },

https://github.com/xboot/xfel

#291 Re: 全志 SOC » 全志有fel模式,瑞芯微有maskrom模式,为了给裸机开发舔砖加瓦,fel模式有xfel工具,那么maskrom模式就需要xrock工具了 » 2021-09-25 11:41:04

Linux_upgrade_ tool,也是基于loader模式来操作,支持的指令也是类似的。只不过Linux_upgrade_ tool可以直接刷完整包。
这是loader模式支持的一些指令

enum {
	OPCODE_TEST_UNIT_READY	= 0x00,
	OPCODE_READ_FLASH_ID	= 0x01,
	OPCODE_TEST_BAD_BLOCK	= 0x03,
	OPCODE_READ_SECTOR		= 0x04,
	OPCODE_WRITE_SECTOR		= 0x05,
	OPCODE_ERASE_NORMAL		= 0x06,
	OPCODE_ERASE_FORCE		= 0x0b,
	OPCODE_READ_LBA			= 0x14,
	OPCODE_WRITE_LBA		= 0x15,
	OPCODE_ERASE_SYSTEM		= 0x16,
	OPCODE_READ_SDRAM		= 0x17,
	OPCODE_WRITE_SDRAM		= 0x18,
	OPCODE_EXEC_SDRAM		= 0x19,
	OPCODE_READ_FLASH_INFO	= 0x1a,
	OPCODE_READ_CHIP_INFO	= 0x1b,
	OPCODE_SET_RESET_FLAG	= 0x1e,
	OPCODE_WRITE_EFUSE		= 0x1f,
	OPCODE_READ_EFUSE		= 0x20,
	OPCODE_READ_SPI_FLASH	= 0x21,
	OPCODE_WRITE_SPI_FLASH	= 0x22,
	OPCODE_WRITE_NEW_EFUSE	= 0x23,
	OPCODE_READ_NEW_EFUSE	= 0x24,
	OPCODE_ERASE_LBA		= 0x25,
	OPCODE_READ_CAPABILITY	= 0xaa,
	OPCODE_RESET_DEVICE		= 0xff,
};

但uboot的loader实现不一定完整,很多指令不支持,仅支持核心的FLASH读写之类的。

#294 Re: BLDC电机驱动 » 一款成本极低的开源FOC驱动 » 2021-09-02 09:24:07

对于总线电机,是can接口通用还是modbus,电机集成驱动器留出总线接口,是趋势。

#295 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-08-30 09:16:49

jiangchun9981 说:

对xboot老大佩服的五体投地   

能不能讲下  老大好像没有JTAG这种调试工具  串口又不能确定能甩前  大概有什么调试经验?   

我看到的是利用了原来官方的uboot先调试了一下自己的代码  等用了再把uboot去掉

是的,在没有任何工具前,肯定是借用现成的二进制程序,验证自己的代码,调试经验的话,对于跑不起来,完全没反应的情况,需要做的工作就是定位问题点,而定位问题点,就需要对待验证的代码很熟悉,能加能砍,折半验证等等,如果还没法定位,就只能点LED灯了,一般情况下,是不需要上这种大杀器的,串口还是比较容易搞定的。

#296 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-08-29 10:59:35

这些符号是高人分析出来的,合成脚本在这里
https://github.com/smaeul/sunxi-blobs/blob/master/scripts/bin2elf

#!/bin/bash -eu
#
# Copyright © 2017 Samuel Holland <samuel@sholland.org>
# See LICENSE in the project directory for license terms.
#
# bash is only required for hexadecimal math.
#

# Adjust these as needed
ARCH=${ARCH:-or1k}
BLOCK_SIZE=4096
CROSS_COMPILE=${CROSS_COMPILE:-${ARCH}-linux-musl-}

# Generated, but might need adjustment
case "$ARCH" in
  or1k) ENDIANNESS=big ;;
  *)    ENDIANNESS=little ;;
esac
case "$ARCH" in
  *64*) WORDSIZE=64 ;;
  *)    WORDSIZE=32 ;;
esac
case "$ARCH" in
  riscv*) ARCH=riscv ;;
esac
case "$ARCH" in
  arm|riscv)
        BFDNAME=elf${WORDSIZE}-${ENDIANNESS}${ARCH} ;;
  *)    BFDNAME=elf${WORDSIZE}-${ARCH} ;;
esac

# Command-line parameters
input_file=$1
section_file=$2
symbol_file=$3
output_file=$4

# Internal variables
base=0

# Temporary files, deleted when the script exits
ldscript=$(mktemp)
tmpdir=$(mktemp -d)
tmpfile=$(mktemp)
trap 'rm -fr "$ldscript" "$tmpdir" "$tmpfile"' EXIT

# Usage: elfify <file> <start> <end> <type>
elfify() {
  # Convert raw binary into an ELF section of the appropriate type
  case "$4" in
    data)
      flags=alloc,contents,data,load,readonly
      stype=object
      ;;
    text)
      flags=alloc,code,contents,load,readonly
      stype=function
      ;;
  esac
  case "$ENDIANNESS" in
    big)    reverse="--reverse-bytes $((WORDSIZE / 8))" ;;
    little) reverse= ;;
  esac
  ${CROSS_COMPILE}objcopy -B "$ARCH" -I binary -O "$BFDNAME" \
    --rename-section ".data=.${4},${flags}" $reverse "$1"
  # Remove start/end symbols added by objcopy
  ${CROSS_COMPILE}strip -s "$1"

  printf '  .%s %s : {\n    %s(.%s)\n' "$2" "$2" "$1" "$4" >> "$ldscript"

  # Import symbols for this section. File format: "<address> <name>" lines
  while read -r address name; do
    if [[ "$address" -ge "$2" && "$address" -lt "$3" ]]; then
      ${CROSS_COMPILE}objcopy \
        --add-symbol "${name}=.${4}:$((address - $2)),${stype}" "$1"
    fi
  done < "$symbol_file"

  printf '  }\n' >> "$ldscript"
}

# Usage: hex <number>
hex() {
  if [ "$WORDSIZE" -eq 64 ]; then
    printf '0x%016x' "$*"
  else
    printf '0x%08x' "$*"
  fi
}

# Usage: warn <message>
warn() {
  printf 'warning: %s\n' "$*" >&2
}

printf 'SECTIONS\n{\n' > "$ldscript"

start=-1
type=data
# Section file contains lines of the format "<virtual address> <section type>"
while read -r newstart newtype; do
  # Sanity check the section start address and length
  newstart=$((newstart - base))
  length=$((newstart - start))
  if [ "$length" -le 0 ]; then
    warn "Ignoring negative or zero-length section at $(hex "$newstart")."
    continue
  fi

  # Set the base from the first starting address
  if [ "$start" -lt 0 ]; then
    base=$newstart
    start=0
    type=$newtype
    continue
  fi

  # Sanity check the section type -- new types need flags in elfify function
  if [ "$newtype" != 'data' ] && [ "$newtype" != 'text' ]; then
    warn "Handling unknown type '$newtype' at $(hex "$start") as 'data'."
    newtype=data
  fi

  # Handle the section beginning at $start and ending before $newstart
  if [ "$start" -gt 0 ]; then
    bs=$start
    skip=1
  else
    bs=$BLOCK_SIZE
    skip=0
  fi
  of=$tmpdir/$(hex "$start").$type
  dd bs="$newstart" count=1 if="$input_file" of="$tmpfile" 2> /dev/null
  dd bs="$bs" if="$tmpfile" of="$of" skip="$skip" 2> /dev/null
  elfify "$of" "$(hex "$((base + start))")" "$((base + newstart))" "$type"

  start=$newstart
  type=$newtype
done < "$section_file"

if [ "$start" -lt 0 ]; then
  warn "No sections were provided! Addresses will be wrong."
fi

# Handle remaining part of the input file (after last section start)
if [ "$start" -gt 0 ]; then
  bs=$start
  skip=1
else
  bs=$BLOCK_SIZE
  skip=0
fi
of=$tmpdir/$(hex "$start").$type
dd bs="$bs" if="$input_file" of="$of" skip="$skip" 2> /dev/null
# The end address doesn't matter as long as it's past the end of the file
elfify "$of" "$(hex "$((base + start))")" "$((2 ** WORDSIZE))" "$type"

printf '}\n' >> "$ldscript"

# Merge all section files in the correct order
${CROSS_COMPILE}ld -e 0 -o "$output_file" -r -T "$ldscript"

#297 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-08-28 10:16:36

由bin文件根据逆向的符号信息,合成出来的elf

#298 Re: 全志 SOC » 全志有fel模式,瑞芯微有maskrom模式,为了给裸机开发舔砖加瓦,fel模式有xfel工具,那么maskrom模式就需要xrock工具了 » 2021-08-24 09:11:28

这种级别的芯片玩裸机,意义也没那么大了,复杂芯片只有一个唯一的出路,上linux,别无他法。

#302 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-08-20 14:30:27

sun20iw1p1/rvbrom/blob.elf:     文件格式 elf64-littleriscv


Disassembly of section .0x0000000000000000:

0000000000000000 <fel_entry-0x22>:
       0:  4281                 li t0,0
       2:  4301                 li t1,0
       4:  4381                 li t2,0
       6:  4e01                 li t3,0
       8:  4e81                 li t4,0
       a:  4f01                 li t5,0
       c:  4f81                 li t6,0
       e:  4401                 li s0,0
      10:  4481                 li s1,0
      12:  4181                 li gp,0
      14:  4201                 li tp,0
      16:  4101                 li sp,0
      18:  4501                 li a0,0
      1a:  4581                 li a1,0
      1c:  4601                 li a2,0
      1e:  a029                 j 28 <normal_entry>
      20:  a009                 j 22 <fel_entry>

0000000000000022 <fel_entry>:
      22:  05c00493           li s1,92
      26:  a82d                 j 60 <normal_entry+0x38>

0000000000000028 <normal_entry>:
      28:  0fe000ef           jal ra,126 <prcm_enable_rtc_clocks>
      2c:  13a000ef           jal ra,166 <debug_state_init>
      30:  a801                 j 40 <normal_entry+0x18>
      32:  070002b7           lui t0,0x7000
      36:  5e02829b           addiw t0,t0,1504
      3a:  0002e303           lwu t1,0(t0) # 7000000 <gpio_get_boot_device+0x6ff1c6a>
      3e:  8302                 jr t1
      40:  070002b7           lui t0,0x7000
      44:  5dc2829b           addiw t0,t0,1500
      48:  0003f337           lui t1,0x3f
      4c:  9413031b           addiw t1,t1,-1727
      50:  00e31313           slli t1,t1,0xe
      54:  92f30313           addi t1,t1,-1745 # 3e92f <gpio_get_boot_device+0x30599>
      58:  0002e383           lwu t2,0(t0) # 7000000 <gpio_get_boot_device+0x6ff1c6a>
      5c:  fc730be3           beq t1,t2,32 <normal_entry+0xa>
      60:  00400337           lui t1,0x400
      64:  7c032073           csrs mxstatus,t1
      68:  000703b7           lui t2,0x70
      6c:  0133839b           addiw t2,t2,19
      70:  7c23a073           csrs mcor,t2
      74:  4321                 li t1,8
      76:  30033073           csrc mstatus,t1
      7a:  30401073           csrw mie,zero
      7e:  00003297           auipc t0,0x3
      82:  2a228293           addi t0,t0,674 # 3320 <trap_vector>
      86:  30529073           csrw mtvec,t0
      8a:  02050337           lui t1,0x2050
      8e:  0b83031b           addiw t1,t1,184
      92:  00036383           lwu t2,0(t1) # 2050000 <gpio_get_boot_device+0x2041c6a>
      96:  16aa0e37           lui t3,0x16aa0
      9a:  01c32023           sw t3,0(t1)
      9e:  07000337           lui t1,0x7000
      a2:  5e43031b           addiw t1,t1,1508
      a6:  00036283           lwu t0,0(t1) # 7000000 <gpio_get_boot_device+0x6ff1c6a>
      aa:  000103b7           lui t2,0x10
      ae:  fff3839b           addiw t2,t2,-1
      b2:  0053fe33           and t3,t2,t0
      b6:  0000feb7           lui t4,0xf
      ba:  fe8e8e9b           addiw t4,t4,-24
      be:  05de0063           beq t3,t4,fe <normal_entry+0xd6>
      c2:  00045137           lui sp,0x45
      c6:  ffc1011b           addiw sp,sp,-4
      ca:  030002b7           lui t0,0x3000
      ce:  0082829b           addiw t0,t0,8
      d2:  0002e303           lwu t1,0(t0) # 3000000 <gpio_get_boot_device+0x2ff1c6a>
      d6:  4385                 li t2,1
      d8:  00736e33           or t3,t1,t2
      dc:  01c2a023           sw t3,0(t0)
      e0:  07f00513           li a0,127
      e4:  05c00293           li t0,92
      e8:  00549463           bne s1,t0,f0 <normal_entry+0xc8>
      ec:  25f0906f           j 9b4a <fel_boot>
      f0:  01e000ef           jal ra,10e <sram_clear_stack>
      f4:  06f00513           li a0,111
      f8:  18c030ef           jal ra,3284 <normal_boot>
      fc:  a001                 j fc <normal_entry+0xd4>
      fe:  070002b7           lui t0,0x7000
     102:  5e82829b           addiw t0,t0,1512
     106:  0002e303           lwu t1,0(t0) # 7000000 <gpio_get_boot_device+0x6ff1c6a>
     10a:  8302                 jr t1
     10c:  a001                 j 10c <normal_entry+0xe4>

000000000000010e <sram_clear_stack>:
     10e:  000482b7           lui t0,0x48
     112:  d002829b           addiw t0,t0,-768
     116:  00048337           lui t1,0x48
     11a:  0002a023           sw zero,0(t0) # 48000 <gpio_get_boot_device+0x39c6a>
     11e:  0291                 addi t0,t0,4
     120:  fe62cde3           blt t0,t1,11a <sram_clear_stack+0xc>
     124:  8082                 ret

0000000000000126 <prcm_enable_rtc_clocks>:
     126:  070102b7           lui t0,0x7010
     12a:  20c2829b           addiw t0,t0,524
     12e:  0002e303           lwu t1,0(t0) # 7010000 <gpio_get_boot_device+0x7001c6a>
     132:  63c1                 lui t2,0x10
     134:  0063ee33           or t3,t2,t1
     138:  01c2a023           sw t3,0(t0)
     13c:  0002e303           lwu t1,0(t0)
     140:  00136393           ori t2,t1,1
     144:  0072a023           sw t2,0(t0)
     148:  070902b7           lui t0,0x7090
     14c:  3102829b           addiw t0,t0,784
     150:  0002e303           lwu t1,0(t0) # 7090000 <gpio_get_boot_device+0x7081c6a>
     154:  0010039b           addiw t2,zero,1
     158:  01f39393           slli t2,t2,0x1f
     15c:  0063ee33           or t3,t2,t1
     160:  01c2a023           sw t3,0(t0)
     164:  8082                 ret

0000000000000166 <debug_state_init>:
     166:  070902b7           lui t0,0x7090
     16a:  3042829b           addiw t0,t0,772
     16e:  0002e303           lwu t1,0(t0) # 7090000 <gpio_get_boot_device+0x7081c6a>
     172:  63a1                 lui t2,0x8
     174:  00737e33           and t3,t1,t2
     178:  020e0163           beqz t3,19a <debug_state_init+0x34>
     17c:  00008e37           lui t3,0x8
     180:  001e0e1b           addiw t3,t3,1
     184:  010e1e13           slli t3,t3,0x10
     188:  7ff00513           li a0,2047
     18c:  00a37eb3           and t4,t1,a0
     190:  01de6f33           or t5,t3,t4
     194:  01e2a023           sw t5,0(t0)
     198:  8082                 ret
     19a:  00008e37           lui t3,0x8
     19e:  001e0e1b           addiw t3,t3,1
     1a2:  07ff0537           lui a0,0x7ff0
     1a6:  00a37eb3           and t4,t1,a0
     1aa:  01de6f33           or t5,t3,t4
     1ae:  01e2a023           sw t5,0(t0)
     1b2:  8082                 ret

00000000000001b4 <boot_jump>:
     1b4:  8502                 jr a0
     1b6:  a001                 j 1b6 <boot_jump+0x2>
     1b8:  a001                 j 1b8 <boot_jump+0x4>
           ...

00000000000001bc <FUN_000001bc>:
     1bc:  7179                 addi sp,sp,-48
     1be:  f422                 sd s0,40(sp)
     1c0:  1800                 addi s0,sp,48
     1c2:  87aa                 mv a5,a0
     1c4:  fcf40fa3           sb a5,-33(s0)
     1c8:  fe042623           sw zero,-20(s0)
     1cc:  030007b7           lui a5,0x3000
     1d0:  0d078793           addi a5,a5,208 # 30000d0 <gpio_get_boot_device+0x2ff1d3a
     1d4:  439c                 lw a5,0(a5)
     1d6:  fef42623           sw a5,-20(s0)
     1da:  fec42703           lw a4,-20(s0)
     1de:  77c1                 lui a5,0xffff0
     1e0:  8ff9                 and a5,a5,a4
     1e2:  fef42623           sw a5,-20(s0)
     1e6:  fdf44783           lbu a5,-33(s0)
     1ea:  0007871b           sext.w a4,a5
     1ee:  fec42783           lw a5,-20(s0)
     1f2:  8fd9                 or a5,a5,a4
     1f4:  fef42623           sw a5,-20(s0)
     1f8:  030007b7           lui a5,0x3000
     1fc:  0d078793           addi a5,a5,208 # 30000d0 <gpio_get_boot_device+0x2ff1d3a
     200:  fec42703           lw a4,-20(s0)
     204:  c398                 sw a4,0(a5)
     206:  0001                 nop
     208:  7422                 ld s0,40(sp)
     20a:  6145                 addi sp,sp,48
     20c:  8082                 ret

000000000000020e <FUN_0000020e>:
     20e:  7179                 addi sp,sp,-48
     210:  f422                 sd s0,40(sp)
     212:  1800                 addi s0,sp,48
     214:  87aa                 mv a5,a0
     216:  fcf40fa3           sb a5,-33(s0)
     21a:  fe042623           sw zero,-20(s0)
     21e:  030007b7           lui a5,0x3000
     222:  0d078793           addi a5,a5,208 # 30000d0 <gpio_get_boot_device+0x2ff1d3a
     226:  439c                 lw a5,0(a5)
     228:  fef42623           sw a5,-20(s0)
     22c:  fec42703           lw a4,-20(s0)
     230:  ff0007b7           lui a5,0xff000
     234:  8ff9                 and a5,a5,a4
     236:  fef42623           sw a5,-20(s0)
     23a:  fdf44783           lbu a5,-33(s0)
     23e:  2781                 sext.w a5,a5
     240:  0107979b           slliw a5,a5,0x10
     244:  2781                 sext.w a5,a5
     246:  0007871b           sext.w a4,a5
     24a:  fec42783           lw a5,-20(s0)
     24e:  8fd9                 or a5,a5,a4
     250:  fef42623           sw a5,-20(s0)
     254:  030007b7           lui a5,0x3000
     258:  0d078793           addi a5,a5,208 # 30000d0 <gpio_get_boot_device+0x2ff1d3a
     25c:  fec42703           lw a4,-20(s0)
     260:  c398                 sw a4,0(a5)
     262:  0001                 nop
     264:  7422                 ld s0,40(sp)
     266:  6145                 addi sp,sp,48
     268:  8082                 ret

000000000000026a <FUN_0000026a>:
     26a:  7179                 addi sp,sp,-48
     26c:  f422                 sd s0,40(sp)
     26e:  1800                 addi s0,sp,48
     270:  87aa                 mv a5,a0
     272:  fcf40fa3           sb a5,-33(s0)
     276:  fe042623           sw zero,-20(s0)
     27a:  030007b7           lui a5,0x3000
     27e:  0d078793           addi a5,a5,208 # 30000d0 <gpio_get_boot_device+0x2ff1d3a
     282:  439c                 lw a5,0(a5)
     284:  fef42623           sw a5,-20(s0)
     288:  fec42703           lw a4,-20(s0)
     28c:  800007b7           lui a5,0x80000
     290:  8ff9                 and a5,a5,a4
     292:  fef42623           sw a5,-20(s0)
     296:  fdf44783           lbu a5,-33(s0)
     29a:  2781                 sext.w a5,a5
     29c:  0187979b           slliw a5,a5,0x18
     2a0:  2781                 sext.w a5,a5
     2a2:  0007871b           sext.w a4,a5
     2a6:  fec42783           lw a5,-20(s0)
     2aa:  8fd9                 or a5,a5,a4
     2ac:  fef42623           sw a5,-20(s0)
     2b0:  030007b7           lui a5,0x3000
     2b4:  0d078793           addi a5,a5,208 # 30000d0 <gpio_get_boot_device+0x2ff1d3a
     2b8:  fec42703           lw a4,-20(s0)
     2bc:  c398                 sw a4,0(a5)
     2be:  0001                 nop
     2c0:  7422                 ld s0,40(sp)
     2c2:  6145                 addi sp,sp,48
     2c4:  8082                 ret

00000000000002c6 <FUN_000002c6>:
     2c6:  7179                 addi sp,sp,-48
     2c8:  f406                 sd ra,40(sp)
     2ca:  f022                 sd s0,32(sp)
     2cc:  1800                 addi s0,sp,48
     2ce:  fca43c23           sd a0,-40(s0)
     2d2:  fcb43823           sd a1,-48(s0)
     2d6:  fe043423           sd zero,-24(s0)
     2da:  03800613           li a2,56
     2de:  4581                 li a1,0
     2e0:  fd043503           ld a0,-48(s0)
     2e4:  583090ef           jal ra,a066 <memset>
     2e8:  fd843783           ld a5,-40(s0)
     2ec:  fef43423           sd a5,-24(s0)
     2f0:  fe843783           ld a5,-24(s0)
     2f4:  0087c703           lbu a4,8(a5)
     2f8:  0097c683           lbu a3,9(a5)
     2fc:  06a2                 slli a3,a3,0x8
     2fe:  8f55                 or a4,a4,a3
     300:  00a7c683           lbu a3,10(a5)
     304:  06c2                 slli a3,a3,0x10
     306:  8f55                 or a4,a4,a3
     308:  00b7c783           lbu a5,11(a5)
     30c:  07e2                 slli a5,a5,0x18
     30e:  8fd9                 or a5,a5,a4
     310:  2781                 sext.w a5,a5
     312:  873e                 mv a4,a5
     314:  8911a7b7           lui a5,0x8911a
     318:  80078793           addi a5,a5,-2048 # ffffffff89119800 <gpio_get_boot_devic
     31c:  00f70463           beq a4,a5,324 <FUN_000002c6+0x5e>
     320:  57fd                 li a5,-1
     322:  a00d                 j 344 <FUN_000002c6+0x7e>
     324:  fd043783           ld a5,-48(s0)
     328:  fd843703           ld a4,-40(s0)
     32c:  e398                 sd a4,0(a5)
     32e:  fd043783           ld a5,-48(s0)
     332:  07a1                 addi a5,a5,8
     334:  03000613           li a2,48
     338:  fd843583           ld a1,-40(s0)
     33c:  853e                 mv a0,a5
     33e:  3fd090ef           jal ra,9f3a <FUN_00009f3a>
     342:  4781                 li a5,0
     344:  853e                 mv a0,a5
     346:  70a2                 ld ra,40(sp)
     348:  7402                 ld s0,32(sp)
     34a:  6145                 addi sp,sp,48
     34c:  8082                 ret

000000000000034e <FUN_0000034e>:
     34e:  715d                 addi sp,sp,-80
     350:  e486                 sd ra,72(sp)
     352:  e0a2                 sd s0,64(sp)
     354:  0880                 addi s0,sp,80
     356:  fca43c23           sd a0,-40(s0)
     35a:  87ae                 mv a5,a1
     35c:  fcc43423           sd a2,-56(s0)
     360:  fcd43023           sd a3,-64(s0)
     364:  fae43c23           sd a4,-72(s0)
     368:  fcf42a23           sw a5,-44(s0)
     36c:  fe042623           sw zero,-20(s0)
     370:  fe043023           sd zero,-32(s0)
     374:  fc843783           ld a5,-56(s0)
     378:  0007b023           sd zero,0(a5)
     37c:  fc043783           ld a5,-64(s0)
     380:  0007a023           sw zero,0(a5)
     384:  fd843783           ld a5,-40(s0)
     388:  639c                 ld a5,0(a5)
     38a:  03078793           addi a5,a5,48
     38e:  fef43023           sd a5,-32(s0)
     392:  fe042623           sw zero,-20(s0)
     396:  a0f9                 j 464 <FUN_0000034e+0x116>
     398:  fec42783           lw a5,-20(s0)
     39c:  0796                 slli a5,a5,0x5
     39e:  fe043703           ld a4,-32(s0)
     3a2:  97ba                 add a5,a5,a4
     3a4:  0007c703           lbu a4,0(a5)
     3a8:  0017c683           lbu a3,1(a5)
     3ac:  06a2                 slli a3,a3,0x8
     3ae:  8f55                 or a4,a4,a3
     3b0:  0027c683           lbu a3,2(a5)
     3b4:  06c2                 slli a3,a3,0x10
     3b6:  8f55                 or a4,a4,a3
     3b8:  0037c783           lbu a5,3(a5)
     3bc:  07e2                 slli a5,a5,0x18
     3be:  8fd9                 or a5,a5,a4
     3c0:  0007871b           sext.w a4,a5
     3c4:  fd442783           lw a5,-44(s0)
     3c8:  2781                 sext.w a5,a5
     3ca:  08e79863           bne a5,a4,45a <FUN_0000034e+0x10c>
     3ce:  fd843783           ld a5,-40(s0)
     3d2:  6398                 ld a4,0(a5)
     3d4:  fec42783           lw a5,-20(s0)
     3d8:  0796                 slli a5,a5,0x5
     3da:  fe043683           ld a3,-32(s0)
     3de:  97b6                 add a5,a5,a3
     3e0:  0047c683           lbu a3,4(a5)
     3e4:  0057c603           lbu a2,5(a5)
     3e8:  0622                 slli a2,a2,0x8
     3ea:  8ed1                 or a3,a3,a2
     3ec:  0067c603           lbu a2,6(a5)
     3f0:  0642                 slli a2,a2,0x10
     3f2:  8ed1                 or a3,a3,a2
     3f4:  0077c783           lbu a5,7(a5)
     3f8:  07e2                 slli a5,a5,0x18
     3fa:  8fd5                 or a5,a5,a3
     3fc:  2781                 sext.w a5,a5
     3fe:  1782                 slli a5,a5,0x20
     400:  9381                 srli a5,a5,0x20
     402:  973e                 add a4,a4,a5
     404:  fc843783           ld a5,-56(s0)
     408:  e398                 sd a4,0(a5)
     40a:  fec42783           lw a5,-20(s0)
     40e:  0796                 slli a5,a5,0x5
     410:  fe043703           ld a4,-32(s0)
     414:  97ba                 add a5,a5,a4
     416:  0087c703           lbu a4,8(a5)
     41a:  0097c683           lbu a3,9(a5)
     41e:  06a2                 slli a3,a3,0x8
     420:  8f55                 or a4,a4,a3
     422:  00a7c683           lbu a3,10(a5)
     426:  06c2                 slli a3,a3,0x10
     428:  8f55                 or a4,a4,a3
     42a:  00b7c783           lbu a5,11(a5)
     42e:  07e2                 slli a5,a5,0x18
     430:  8fd9                 or a5,a5,a4
     432:  0007871b           sext.w a4,a5
     436:  fc043783           ld a5,-64(s0)
     43a:  c398                 sw a4,0(a5)
     43c:  fec42783           lw a5,-20(s0)
     440:  0796                 slli a5,a5,0x5
     442:  fe043703           ld a4,-32(s0)
     446:  97ba                 add a5,a5,a4
     448:  02000613           li a2,32
     44c:  85be                 mv a1,a5
     44e:  fb843503           ld a0,-72(s0)
     452:  2e9090ef           jal ra,9f3a <FUN_00009f3a>
     456:  4781                 li a5,0
     458:  a831                 j 474 <FUN_0000034e+0x126>
     45a:  fec42783           lw a5,-20(s0)
     45e:  2785                 addiw a5,a5,1
     460:  fef42623           sw a5,-20(s0)
     464:  fd843783           ld a5,-40(s0)
     468:  5398                 lw a4,32(a5)
     46a:  fec42783           lw a5,-20(s0)
     46e:  f2e7e5e3           bltu a5,a4,398 <FUN_0000034e+0x4a>
     472:  57fd                 li a5,-1
     474:  853e                 mv a0,a5
     476:  60a6                 ld ra,72(sp)
     478:  6406                 ld s0,64(sp)
     47a:  6161                 addi sp,sp,80
     47c:  8082                 ret

000000000000047e <FUN_0000047e>:
     47e:  7139                 addi sp,sp,-64
     480:  fc06                 sd ra,56(sp)
     482:  f822                 sd s0,48(sp)
     484:  0080                 addi s0,sp,64
     486:  fca43423           sd a0,-56(s0)
     48a:  fcb43023           sd a1,-64(s0)
     48e:  fe043423           sd zero,-24(s0)
     492:  fe043023           sd zero,-32(s0)
     496:  fc042e23           sw zero,-36(s0)
     49a:  fc843783           ld a5,-56(s0)
     49e:  6398                 ld a4,0(a5)
     4a0:  fc043783           ld a5,-64(s0)
     4a4:  0047c683           lbu a3,4(a5)
     4a8:  0057c603           lbu a2,5(a5)
     4ac:  0622                 slli a2,a2,0x8
     4ae:  8ed1                 or a3,a3,a2
     4b0:  0067c603           lbu a2,6(a5)
     4b4:  0642                 slli a2,a2,0x10
     4b6:  8ed1                 or a3,a3,a2
     4b8:  0077c783           lbu a5,7(a5)
     4bc:  07e2                 slli a5,a5,0x18
     4be:  8fd5                 or a5,a5,a3
     4c0:  2781                 sext.w a5,a5
     4c2:  1782                 slli a5,a5,0x20
     4c4:  9381                 srli a5,a5,0x20
     4c6:  97ba                 add a5,a5,a4
     4c8:  fef43423           sd a5,-24(s0)
     4cc:  fc043783           ld a5,-64(s0)
     4d0:  0147c703           lbu a4,20(a5)
     4d4:  0157c683           lbu a3,21(a5)
     4d8:  06a2                 slli a3,a3,0x8
     4da:  8f55                 or a4,a4,a3
     4dc:  0167c683           lbu a3,22(a5)
     4e0:  06c2                 slli a3,a3,0x10
     4e2:  8f55                 or a4,a4,a3
     4e4:  0177c783           lbu a5,23(a5)
     4e8:  07e2                 slli a5,a5,0x18
     4ea:  8fd9                 or a5,a5,a4
     4ec:  2781                 sext.w a5,a5
     4ee:  1782                 slli a5,a5,0x20
     4f0:  9381                 srli a5,a5,0x20
     4f2:  fef43023           sd a5,-32(s0)
     4f6:  fc043783           ld a5,-64(s0)
     4fa:  0087c703           lbu a4,8(a5)
     4fe:  0097c683           lbu a3,9(a5)
     502:  06a2                 slli a3,a3,0x8
     504:  8f55                 or a4,a4,a3
     506:  00a7c683           lbu a3,10(a5)
     50a:  06c2                 slli a3,a3,0x10
     50c:  8f55                 or a4,a4,a3
     50e:  00b7c783           lbu a5,11(a5)
     512:  07e2                 slli a5,a5,0x18
     514:  8fd9                 or a5,a5,a4
     516:  fcf42e23           sw a5,-36(s0)
     51a:  fdc42783           lw a5,-36(s0)
     51e:  863e                 mv a2,a5
     520:  fe843583           ld a1,-24(s0)
     524:  fe043503           ld a0,-32(s0)
     528:  245090ef           jal ra,9f6c <FUN_00009f6c>
     52c:  0001                 nop
     52e:  70e2                 ld ra,56(sp)
     530:  7442                 ld s0,48(sp)
     532:  6121                 addi sp,sp,64
     534:  8082                 ret

0000000000000536 <FUN_00000536>:
     536:  1101                 addi sp,sp,-32
     538:  ec22                 sd s0,24(sp)
     53a:  1000                 addi s0,sp,32
     53c:  fea43423           sd a0,-24(s0)
     540:  fe843783           ld a5,-24(s0)
     544:  0147c703           lbu a4,20(a5)
     548:  0157c683           lbu a3,21(a5)
     54c:  06a2                 slli a3,a3,0x8
     54e:  8f55                 or a4,a4,a3
     550:  0167c683           lbu a3,22(a5)
     554:  06c2                 slli a3,a3,0x10
     556:  8f55                 or a4,a4,a3
     558:  0177c783           lbu a5,23(a5)
     55c:  07e2                 slli a5,a5,0x18
     55e:  8fd9                 or a5,a5,a4
     560:  2781                 sext.w a5,a5
     562:  853e                 mv a0,a5
     564:  6462                 ld s0,24(sp)
     566:  6105                 addi sp,sp,32
     568:  8082                 ret

000000000000056a <FUN_0000056a>:
     56a:  1101                 addi sp,sp,-32
     56c:  ec22                 sd s0,24(sp)
     56e:  1000                 addi s0,sp,32
     570:  fe042623           sw zero,-20(s0)
     574:  020017b7           lui a5,0x2001
     578:  68c78793           addi a5,a5,1676 # 200168c <gpio_get_boot_device+0x1ff32f
     57c:  439c                 lw a5,0(a5)
     57e:  fef42423           sw a5,-24(s0)
     582:  fe842703           lw a4,-24(s0)
     586:  77c1                 lui a5,0xffff0
     588:  17fd                 addi a5,a5,-1
     58a:  8ff9                 and a5,a5,a4
     58c:  fef42423           sw a5,-24(s0)
     590:  020017b7           lui a5,0x2001
     594:  68c78793           addi a5,a5,1676 # 200168c <gpio_get_boot_device+0x1ff32f
     598:  fe842703           lw a4,-24(s0)
     59c:  c398                 sw a4,0(a5)
     59e:  06400793           li a5,100
     5a2:  fef42623           sw a5,-20(s0)
     5a6:  0001                 nop
     5a8:  fec42783           lw a5,-20(s0)
     5ac:  fff7871b           addiw a4,a5,-1
     5b0:  fee42623           sw a4,-20(s0)
     5b4:  fbf5                 bnez a5,5a8 <FUN_0000056a+0x3e>
     5b6:  020017b7           lui a5,0x2001
     5ba:  68c78793           addi a5,a5,1676 # 200168c <gpio_get_boot_device+0x1ff32f
     5be:  439c                 lw a5,0(a5)
     5c0:  fef42423           sw a5,-24(s0)
     5c4:  fe842703           lw a4,-24(s0)
     5c8:  67c1                 lui a5,0x10
     5ca:  8fd9                 or a5,a5,a4
     5cc:  fef42423           sw a5,-24(s0)
     5d0:  020017b7           lui a5,0x2001
     5d4:  68c78793           addi a5,a5,1676 # 200168c <gpio_get_boot_device+0x1ff32f
     5d8:  fe842703           lw a4,-24(s0)
     5dc:  c398                 sw a4,0(a5)
     5de:  0001                 nop
     5e0:  6462                 ld s0,24(sp)
     5e2:  6105                 addi sp,sp,32
     5e4:  8082                 ret

00000000000005e6 <FUN_000005e6>:
     5e6:  7179                 addi sp,sp,-48
     5e8:  f422                 sd s0,40(sp)
     5ea:  1800                 addi s0,sp,48
     5ec:  87aa                 mv a5,a0
     5ee:  fcf42e23           sw a5,-36(s0)
     5f2:  fdc42783           lw a5,-36(s0)
     5f6:  0187979b           slliw a5,a5,0x18
     5fa:  fef42623           sw a5,-20(s0)
     5fe:  fdc42783           lw a5,-36(s0)
     602:  0087979b           slliw a5,a5,0x8
     606:  2781                 sext.w a5,a5
     608:  873e                 mv a4,a5
     60a:  00ff07b7           lui a5,0xff0
     60e:  8ff9                 and a5,a5,a4
     610:  fef42423           sw a5,-24(s0)
     614:  fdc42783           lw a5,-36(s0)
     618:  0087d79b           srliw a5,a5,0x8
     61c:  2781                 sext.w a5,a5
     61e:  873e                 mv a4,a5
     620:  67c1                 lui a5,0x10
     622:  f0078793           addi a5,a5,-256 # ff00 <gpio_get_boot_device+0x1b6a>
     626:  8ff9                 and a5,a5,a4
     628:  fef42223           sw a5,-28(s0)
     62c:  fdc42783           lw a5,-36(s0)
     630:  0187d79b           srliw a5,a5,0x18
     634:  fef42023           sw a5,-32(s0)
     638:  fec42703           lw a4,-20(s0)
     63c:  fe842783           lw a5,-24(s0)
     640:  8fd9                 or a5,a5,a4
     642:  0007871b           sext.w a4,a5
     646:  fe442783           lw a5,-28(s0)
     64a:  8fd9                 or a5,a5,a4
     64c:  0007871b           sext.w a4,a5
     650:  fe042783           lw a5,-32(s0)
     654:  8fd9                 or a5,a5,a4
     656:  2781                 sext.w a5,a5
     658:  853e                 mv a0,a5
     65a:  7422                 ld s0,40(sp)
     65c:  6145                 addi sp,sp,48
     65e:  8082                 ret

0000000000000660 <FUN_00000660>:
     660:  7119                 addi sp,sp,-128
     662:  fc86                 sd ra,120(sp)
     664:  f8a2                 sd s0,112(sp)
     666:  0100                 addi s0,sp,128
     668:  87aa                 mv a5,a0
     66a:  f8b43023           sd a1,-128(s0)
     66e:  f8f42623           sw a5,-116(s0)
     672:  f8c42783           lw a5,-116(s0)
     676:  0067d79b           srliw a5,a5,0x6
     67a:  fef42223           sw a5,-28(s0)
     67e:  f8c42783           lw a5,-116(s0)
     682:  03f7f793           andi a5,a5,63
     686:  fef42023           sw a5,-32(s0)
     68a:  f9840793           addi a5,s0,-104
     68e:  fcf43c23           sd a5,-40(s0)
     692:  fe042783           lw a5,-32(s0)
     696:  2781                 sext.w a5,a5
     698:  efe1                 bnez a5,770 <FUN_00000660+0x110>
     69a:  fe042623           sw zero,-20(s0)
     69e:  a831                 j 6ba <FUN_00000660+0x5a>
     6a0:  fec46783           lwu a5,-20(s0)
     6a4:  078a                 slli a5,a5,0x2
     6a6:  ff040713           addi a4,s0,-16
     6aa:  97ba                 add a5,a5,a4
     6ac:  fa07a423           sw zero,-88(a5)
     6b0:  fec42783           lw a5,-20(s0)
     6b4:  2785                 addiw a5,a5,1
     6b6:  fef42623           sw a5,-20(s0)
     6ba:  fec42783           lw a5,-20(s0)
     6be:  0007871b           sext.w a4,a5
     6c2:  47bd                 li a5,15
     6c4:  fce7fee3           bgeu a5,a4,6a0 <FUN_00000660+0x40>
     6c8:  08000793           li a5,128
     6cc:  f8f42c23           sw a5,-104(s0)
     6d0:  f8c42783           lw a5,-116(s0)
     6d4:  01d7d79b           srliw a5,a5,0x1d
     6d8:  2781                 sext.w a5,a5
     6da:  fcf42823           sw a5,-48(s0)
     6de:  f8c42783           lw a5,-116(s0)
     6e2:  0037979b           slliw a5,a5,0x3
     6e6:  2781                 sext.w a5,a5
     6e8:  fcf42a23           sw a5,-44(s0)
     6ec:  fd042783           lw a5,-48(s0)
     6f0:  853e                 mv a0,a5
     6f2:  ef5ff0ef           jal ra,5e6 <FUN_000005e6>
     6f6:  87aa                 mv a5,a0
     6f8:  2781                 sext.w a5,a5
     6fa:  fcf42823           sw a5,-48(s0)
     6fe:  fd442783           lw a5,-44(s0)
     702:  853e                 mv a0,a5
     704:  ee3ff0ef           jal ra,5e6 <FUN_000005e6>
     708:  87aa                 mv a5,a0
     70a:  2781                 sext.w a5,a5
     70c:  fcf42a23           sw a5,-44(s0)
     710:  fe042623           sw zero,-20(s0)
     714:  a82d                 j 74e <FUN_00000660+0xee>
     716:  fec46783           lwu a5,-20(s0)
     71a:  fd843703           ld a4,-40(s0)
     71e:  973e                 add a4,a4,a5
     720:  fe442783           lw a5,-28(s0)
     724:  0067979b           slliw a5,a5,0x6
     728:  2781                 sext.w a5,a5
     72a:  fec42683           lw a3,-20(s0)
     72e:  9fb5                 addw a5,a5,a3
     730:  2781                 sext.w a5,a5
     732:  1782                 slli a5,a5,0x20
     734:  9381                 srli a5,a5,0x20
     736:  f8043683           ld a3,-128(s0)
     73a:  97b6                 add a5,a5,a3
     73c:  00074703           lbu a4,0(a4)
     740:  00e78023           sb a4,0(a5)
     744:  fec42783           lw a5,-20(s0)
     748:  2785                 addiw a5,a5,1
     74a:  fef42623           sw a5,-20(s0)
     74e:  fec42783           lw a5,-20(s0)
     752:  0007871b           sext.w a4,a5
     756:  03f00793           li a5,63
     75a:  fae7fee3           bgeu a5,a4,716 <FUN_00000660+0xb6>
     75e:  fe442783           lw a5,-28(s0)
     762:  2785                 addiw a5,a5,1
     764:  2781                 sext.w a5,a5
     766:  0067979b           slliw a5,a5,0x6
     76a:  fef42423           sw a5,-24(s0)
     76e:  a4f5                 j a5a <FUN_00000660+0x3fa>
     770:  fe042783           lw a5,-32(s0)
     774:  0007871b           sext.w a4,a5
     778:  03700793           li a5,55
     77c:  12e7e963           bltu a5,a4,8ae <FUN_00000660+0x24e>
     780:  fe042623           sw zero,-20(s0)
     784:  a831                 j 7a0 <FUN_00000660+0x140>
     786:  fec46783           lwu a5,-20(s0)
     78a:  078a                 slli a5,a5,0x2
     78c:  ff040713           addi a4,s0,-16
     790:  97ba                 add a5,a5,a4
     792:  fa07a423           sw zero,-88(a5)
     796:  fec42783           lw a5,-20(s0)
     79a:  2785                 addiw a5,a5,1
     79c:  fef42623           sw a5,-20(s0)
     7a0:  fec42783           lw a5,-20(s0)
     7a4:  0007871b           sext.w a4,a5
     7a8:  47bd                 li a5,15
     7aa:  fce7fee3           bgeu a5,a4,786 <FUN_00000660+0x126>
     7ae:  fe042623           sw zero,-20(s0)
     7b2:  a82d                 j 7ec <FUN_00000660+0x18c>
     7b4:  fe442783           lw a5,-28(s0)
     7b8:  0067979b           slliw a5,a5,0x6
     7bc:  2781                 sext.w a5,a5
     7be:  fec42703           lw a4,-20(s0)
     7c2:  9fb9                 addw a5,a5,a4
     7c4:  2781                 sext.w a5,a5
     7c6:  1782                 slli a5,a5,0x20
     7c8:  9381                 srli a5,a5,0x20
     7ca:  f8043703           ld a4,-128(s0)
     7ce:  973e                 add a4,a4,a5
     7d0:  fec46783           lwu a5,-20(s0)
     7d4:  fd843683           ld a3,-40(s0)
     7d8:  97b6                 add a5,a5,a3
     7da:  00074703           lbu a4,0(a4)
     7de:  00e78023           sb a4,0(a5)
     7e2:  fec42783           lw a5,-20(s0)
     7e6:  2785                 addiw a5,a5,1
     7e8:  fef42623           sw a5,-20(s0)
     7ec:  fec42703           lw a4,-20(s0)
     7f0:  fe042783           lw a5,-32(s0)
     7f4:  2701                 sext.w a4,a4
     7f6:  2781                 sext.w a5,a5
     7f8:  faf76ee3           bltu a4,a5,7b4 <FUN_00000660+0x154>
     7fc:  fe046783           lwu a5,-32(s0)
     800:  fd843703           ld a4,-40(s0)
     804:  97ba                 add a5,a5,a4
     806:  f8000713           li a4,-128
     80a:  00e78023           sb a4,0(a5)
     80e:  f8c42783           lw a5,-116(s0)
     812:  01d7d79b           srliw a5,a5,0x1d
     816:  2781                 sext.w a5,a5
     818:  fcf42823           sw a5,-48(s0)
     81c:  f8c42783           lw a5,-116(s0)
     820:  0037979b           slliw a5,a5,0x3
     824:  2781                 sext.w a5,a5
     826:  fcf42a23           sw a5,-44(s0)
     82a:  fd042783           lw a5,-48(s0)
     82e:  853e                 mv a0,a5
     830:  db7ff0ef           jal ra,5e6 <FUN_000005e6>
     834:  87aa                 mv a5,a0
     836:  2781                 sext.w a5,a5
     838:  fcf42823           sw a5,-48(s0)
     83c:  fd442783           lw a5,-44(s0)
     840:  853e                 mv a0,a5
     842:  da5ff0ef           jal ra,5e6 <FUN_000005e6>
     846:  87aa                 mv a5,a0
     848:  2781                 sext.w a5,a5
     84a:  fcf42a23           sw a5,-44(s0)
     84e:  fe042623           sw zero,-20(s0)
     852:  a82d                 j 88c <FUN_00000660+0x22c>
     854:  fec46783           lwu a5,-20(s0)
     858:  fd843703           ld a4,-40(s0)
     85c:  973e                 add a4,a4,a5
     85e:  fe442783           lw a5,-28(s0)
     862:  0067979b           slliw a5,a5,0x6
     866:  2781                 sext.w a5,a5
     868:  fec42683           lw a3,-20(s0)
     86c:  9fb5                 addw a5,a5,a3
     86e:  2781                 sext.w a5,a5
     870:  1782                 slli a5,a5,0x20
     872:  9381                 srli a5,a5,0x20
     874:  f8043683           ld a3,-128(s0)
     878:  97b6                 add a5,a5,a3
     87a:  00074703           lbu a4,0(a4)
     87e:  00e78023           sb a4,0(a5)
     882:  fec42783           lw a5,-20(s0)
     886:  2785                 addiw a5,a5,1
     888:  fef42623           sw a5,-20(s0)
     88c:  fec42783           lw a5,-20(s0)
     890:  0007871b           sext.w a4,a5
     894:  03f00793           li a5,63
     898:  fae7fee3           bgeu a5,a4,854 <FUN_00000660+0x1f4>
     89c:  fe442783           lw a5,-28(s0)
     8a0:  2785                 addiw a5,a5,1
     8a2:  2781                 sext.w a5,a5
     8a4:  0067979b           slliw a5,a5,0x6
     8a8:  fef42423           sw a5,-24(s0)
     8ac:  a27d                 j a5a <FUN_00000660+0x3fa>
     8ae:  fe042623           sw zero,-20(s0)
     8b2:  a831                 j 8ce <FUN_00000660+0x26e>
     8b4:  fec46783           lwu a5,-20(s0)
     8b8:  078a                 slli a5,a5,0x2
     8ba:  ff040713           addi a4,s0,-16
     8be:  97ba                 add a5,a5,a4
     8c0:  fa07a423           sw zero,-88(a5)
     8c4:  fec42783           lw a5,-20(s0)
     8c8:  2785                 addiw a5,a5,1
     8ca:  fef42623           sw a5,-20(s0)
     8ce:  fec42783           lw a5,-20(s0)
     8d2:  0007871b           sext.w a4,a5
     8d6:  47bd                 li a5,15
     8d8:  fce7fee3           bgeu a5,a4,8b4 <FUN_00000660+0x254>
     8dc:  fe042623           sw zero,-20(s0)
     8e0:  a82d                 j 91a <FUN_00000660+0x2ba>
     8e2:  fe442783           lw a5,-28(s0)
     8e6:  0067979b           slliw a5,a5,0x6
     8ea:  2781                 sext.w a5,a5
     8ec:  fec42703           lw a4,-20(s0)
     8f0:  9fb9                 addw a5,a5,a4
     8f2:  2781                 sext.w a5,a5
     8f4:  1782                 slli a5,a5,0x20
     8f6:  9381                 srli a5,a5,0x20
     8f8:  f8043703           ld a4,-128(s0)
     8fc:  973e                 add a4,a4,a5
     8fe:  fec46783           lwu a5,-20(s0)
     902:  fd843683           ld a3,-40(s0)
     906:  97b6                 add a5,a5,a3
     908:  00074703           lbu a4,0(a4)
     90c:  00e78023           sb a4,0(a5)
     910:  fec42783           lw a5,-20(s0)
     914:  2785                 addiw a5,a5,1
     916:  fef42623           sw a5,-20(s0)
     91a:  fec42703           lw a4,-20(s0)
     91e:  fe042783           lw a5,-32(s0)
     922:  2701                 sext.w a4,a4
     924:  2781                 sext.w a5,a5
     926:  faf76ee3           bltu a4,a5,8e2 <FUN_00000660+0x282>
     92a:  fe046783           lwu a5,-32(s0)
     92e:  fd843703           ld a4,-40(s0)
     932:  97ba                 add a5,a5,a4
     934:  f8000713           li a4,-128
     938:  00e78023           sb a4,0(a5)
     93c:  fe042623           sw zero,-20(s0)
     940:  a82d                 j 97a <FUN_00000660+0x31a>
     942:  fec46783           lwu a5,-20(s0)
     946:  fd843703           ld a4,-40(s0)
     94a:  973e                 add a4,a4,a5
     94c:  fe442783           lw a5,-28(s0)
     950:  0067979b           slliw a5,a5,0x6
     954:  2781                 sext.w a5,a5
     956:  fec42683           lw a3,-20(s0)
     95a:  9fb5                 addw a5,a5,a3
     95c:  2781                 sext.w a5,a5
     95e:  1782                 slli a5,a5,0x20
     960:  9381                 srli a5,a5,0x20
     962:  f8043683           ld a3,-128(s0)
     966:  97b6                 add a5,a5,a3
     968:  00074703           lbu a4,0(a4)
     96c:  00e78023           sb a4,0(a5)
     970:  fec42783           lw a5,-20(s0)
     974:  2785                 addiw a5,a5,1
     976:  fef42623           sw a5,-20(s0)
     97a:  fec42783           lw a5,-20(s0)
     97e:  0007871b           sext.w a4,a5
     982:  03f00793           li a5,63
     986:  fae7fee3           bgeu a5,a4,942 <FUN_00000660+0x2e2>
     98a:  fe042623           sw zero,-20(s0)
     98e:  a831                 j 9aa <FUN_00000660+0x34a>
     990:  fec46783           lwu a5,-20(s0)
     994:  078a                 slli a5,a5,0x2
     996:  ff040713           addi a4,s0,-16
     99a:  97ba                 add a5,a5,a4
     99c:  fa07a423           sw zero,-88(a5)
     9a0:  fec42783           lw a5,-20(s0)
     9a4:  2785                 addiw a5,a5,1
     9a6:  fef42623           sw a5,-20(s0)
     9aa:  fec42783           lw a5,-20(s0)
     9ae:  0007871b           sext.w a4,a5
     9b2:  47bd                 li a5,15
     9b4:  fce7fee3           bgeu a5,a4,990 <FUN_00000660+0x330>
     9b8:  f8c42783           lw a5,-116(s0)
     9bc:  01d7d79b           srliw a5,a5,0x1d
     9c0:  2781                 sext.w a5,a5
     9c2:  fcf42823           sw a5,-48(s0)
     9c6:  f8c42783           lw a5,-116(s0)
     9ca:  0037979b           slliw a5,a5,0x3
     9ce:  2781                 sext.w a5,a5
     9d0:  fcf42a23           sw a5,-44(s0)
     9d4:  fd042783           lw a5,-48(s0)
     9d8:  853e                 mv a0,a5
     9da:  c0dff0ef           jal ra,5e6 <FUN_000005e6>
     9de:  87aa                 mv a5,a0
     9e0:  2781                 sext.w a5,a5
     9e2:  fcf42823           sw a5,-48(s0)
     9e6:  fd442783           lw a5,-44(s0)
     9ea:  853e                 mv a0,a5
     9ec:  bfbff0ef           jal ra,5e6 <FUN_000005e6>
     9f0:  87aa                 mv a5,a0
     9f2:  2781                 sext.w a5,a5
     9f4:  fcf42a23           sw a5,-44(s0)
     9f8:  fe042623           sw zero,-20(s0)
     9fc:  a83d                 j a3a <FUN_00000660+0x3da>
     9fe:  fec46783           lwu a5,-20(s0)
     a02:  fd843703           ld a4,-40(s0)
     a06:  973e                 add a4,a4,a5
     a08:  fe442783           lw a5,-28(s0)
     a0c:  2785                 addiw a5,a5,1
     a0e:  2781                 sext.w a5,a5
     a10:  0067979b           slliw a5,a5,0x6
     a14:  2781                 sext.w a5,a5
     a16:  fec42683           lw a3,-20(s0)
     a1a:  9fb5                 addw a5,a5,a3
     a1c:  2781                 sext.w a5,a5
     a1e:  1782                 slli a5,a5,0x20
     a20:  9381                 srli a5,a5,0x20
     a22:  f8043683           ld a3,-128(s0)
     a26:  97b6                 add a5,a5,a3
     a28:  00074703           lbu a4,0(a4)
     a2c:  00e78023           sb a4,0(a5)
     a30:  fec42783           lw a5,-20(s0)
     a34:  2785                 addiw a5,a5,1
     a36:  fef42623           sw a5,-20(s0)
     a3a:  fec42783           lw a5,-20(s0)
     a3e:  0007871b           sext.w a4,a5
     a42:  03f00793           li a5,63
     a46:  fae7fce3           bgeu a5,a4,9fe <FUN_00000660+0x39e>
     a4a:  fe442783           lw a5,-28(s0)
     a4e:  2789                 addiw a5,a5,2
     a50:  2781                 sext.w a5,a5
     a52:  0067979b           slliw a5,a5,0x6
     a56:  fef42423           sw a5,-24(s0)
     a5a:  fe842783           lw a5,-24(s0)
     a5e:  853e                 mv a0,a5
     a60:  70e6                 ld ra,120(sp)
     a62:  7446                 ld s0,112(sp)
     a64:  6109                 addi sp,sp,128
     a66:  8082                 ret

0000000000000a68 <FUN_00000a68>:
     a68:  7139                 addi sp,sp,-64
     a6a:  fc22                 sd s0,56(sp)
     a6c:  0080                 addi s0,sp,64
     a6e:  87aa                 mv a5,a0
     a70:  fcb43823           sd a1,-48(s0)
     a74:  8732                 mv a4,a2
     a76:  fcd43423           sd a3,-56(s0)
     a7a:  fcf42e23           sw a5,-36(s0)
     a7e:  87ba                 mv a5,a4
     a80:  fcf42c23           sw a5,-40(s0)
     a84:  fe042623           sw zero,-20(s0)
     a88:  fe042623           sw zero,-20(s0)
     a8c:  a8a1                 j ae4 <FUN_00000a68+0x7c>
     a8e:  fec42703           lw a4,-20(s0)
     a92:  fd842783           lw a5,-40(s0)
     a96:  2781                 sext.w a5,a5
     a98:  02f77a63           bgeu a4,a5,acc <FUN_00000a68+0x64>
     a9c:  fec42783           lw a5,-20(s0)
     aa0:  fd842703           lw a4,-40(s0)
     aa4:  40f707bb           subw a5,a4,a5
     aa8:  2781                 sext.w a5,a5
     aaa:  37fd                 addiw a5,a5,-1
     aac:  2781                 sext.w a5,a5
     aae:  1782                 slli a5,a5,0x20
     ab0:  9381                 srli a5,a5,0x20
     ab2:  fd043703           ld a4,-48(s0)
     ab6:  973e                 add a4,a4,a5
     ab8:  fec42783           lw a5,-20(s0)
     abc:  fc843683           ld a3,-56(s0)
     ac0:  97b6                 add a5,a5,a3
     ac2:  00074703           lbu a4,0(a4)
     ac6:  00e78023           sb a4,0(a5)
     aca:  a801                 j ada <FUN_00000a68+0x72>
     acc:  fec42783           lw a5,-20(s0)
     ad0:  fc843703           ld a4,-56(s0)
     ad4:  97ba                 add a5,a5,a4
     ad6:  00078023           sb zero,0(a5)
     ada:  fec42783           lw a5,-20(s0)
     ade:  2785                 addiw a5,a5,1
     ae0:  fef42623           sw a5,-20(s0)
     ae4:  fec42703           lw a4,-20(s0)
     ae8:  fdc42783           lw a5,-36(s0)
     aec:  2781                 sext.w a5,a5
     aee:  faf760e3           bltu a4,a5,a8e <FUN_00000a68+0x26>
     af2:  0001                 nop
     af4:  7462                 ld s0,56(sp)
     af6:  6121                 addi sp,sp,64
     af8:  8082                 ret

0000000000000afa <FUN_00000afa>:
     afa:  7179                 addi sp,sp,-48
     afc:  f422                 sd s0,40(sp)
     afe:  1800                 addi s0,sp,48
     b00:  87aa                 mv a5,a0
     b02:  8736                 mv a4,a3
     b04:  fcf42e23           sw a5,-36(s0)
     b08:  87ae                 mv a5,a1
     b0a:  fcf42c23           sw a5,-40(s0)
     b0e:  87b2                 mv a5,a2
     b10:  fcf42a23           sw a5,-44(s0)
     b14:  87ba                 mv a5,a4
     b16:  fcf42823           sw a5,-48(s0)
     b1a:  fdc42783           lw a5,-36(s0)
     b1e:  0007871b           sext.w a4,a5
     b22:  20000793           li a5,512
     b26:  00f71563           bne a4,a5,b30 <FUN_00000afa+0x36>
     b2a:  fe042623           sw zero,-20(s0)
     b2e:  a095                 j b92 <FUN_00000afa+0x98>
     b30:  fdc42783           lw a5,-36(s0)
     b34:  0007871b           sext.w a4,a5
     b38:  40000793           li a5,1024
     b3c:  00f71763           bne a4,a5,b4a <FUN_00000afa+0x50>
     b40:  100007b7           lui a5,0x10000
     b44:  fef42623           sw a5,-20(s0)
     b48:  a0a9                 j b92 <FUN_00000afa+0x98>
     b4a:  fdc42783           lw a5,-36(s0)
     b4e:  8007879b           addiw a5,a5,-2048
     b52:  2781                 sext.w a5,a5
     b54:  e791                 bnez a5,b60 <FUN_00000afa+0x66>
     b56:  200007b7           lui a5,0x20000
     b5a:  fef42623           sw a5,-20(s0)
     b5e:  a815                 j b92 <FUN_00000afa+0x98>
     b60:  fdc42783           lw a5,-36(s0)
     b64:  0007871b           sext.w a4,a5
     b68:  6785                 lui a5,0x1
     b6a:  c0078793           addi a5,a5,-1024 # c00 <FUN_00000bbe+0x42>
     b6e:  00f71763           bne a4,a5,b7c <FUN_00000afa+0x82>
     b72:  300007b7           lui a5,0x30000
     b76:  fef42623           sw a5,-20(s0)
     b7a:  a821                 j b92 <FUN_00000afa+0x98>
     b7c:  fdc42783           lw a5,-36(s0)
     b80:  0007871b           sext.w a4,a5
     b84:  6785                 lui a5,0x1
     b86:  00f71663           bne a4,a5,b92 <FUN_00000afa+0x98>
     b8a:  400007b7           lui a5,0x40000
     b8e:  fef42623           sw a5,-20(s0)
     b92:  fd842783           lw a5,-40(s0)
     b96:  0107979b           slliw a5,a5,0x10
     b9a:  2781                 sext.w a5,a5
     b9c:  873e                 mv a4,a5
     b9e:  000707b7           lui a5,0x70
     ba2:  8ff9                 and a5,a5,a4
     ba4:  0007871b           sext.w a4,a5
     ba8:  fec42783           lw a5,-20(s0)
     bac:  8fd9                 or a5,a5,a4
     bae:  fef42623           sw a5,-20(s0)
     bb2:  fec42783           lw a5,-20(s0)
     bb6:  853e                 mv a0,a5
     bb8:  7422                 ld s0,40(sp)
     bba:  6145                 addi sp,sp,48
     bbc:  8082                 ret

0000000000000bbe <FUN_00000bbe>:
     bbe:  7179                 addi sp,sp,-48
     bc0:  f422                 sd s0,40(sp)
     bc2:  1800                 addi s0,sp,48
     bc4:  87aa                 mv a5,a0
     bc6:  fcf42e23           sw a5,-36(s0)
     bca:  030417b7           lui a5,0x3041
     bce:  80878793           addi a5,a5,-2040 # 3040808 <gpio_get_boot_device+0x30324
     bd2:  439c                 lw a5,0(a5)
     bd4:  2781                 sext.w a5,a5
     bd6:  8bbd                 andi a5,a5,15
     bd8:  fef42423           sw a5,-24(s0)
     bdc:  fdc42783           lw a5,-36(s0)
     be0:  4705                 li a4,1
     be2:  00f717bb           sllw a5,a4,a5
     be6:  2781                 sext.w a5,a5
     be8:  0007871b           sext.w a4,a5
     bec:  fe842783           lw a5,-24(s0)
     bf0:  8ff9                 and a5,a5,a4
     bf2:  fef42423           sw a5,-24(s0)
     bf6:  fe842783           lw a5,-24(s0)
     bfa:  2781                 sext.w a5,a5
     bfc:  c7a1                 beqz a5,c44 <FUN_00000bbe+0x86>
     bfe:  0001                 nop
     c00:  030417b7           lui a5,0x3041
     c04:  80c78793           addi a5,a5,-2036 # 304080c <gpio_get_boot_device+0x30324
     c08:  439c                 lw a5,0(a5)
     c0a:  0007869b           sext.w a3,a5
     c0e:  fdc42783           lw a5,-36(s0)
     c12:  4705                 li a4,1
     c14:  00f717bb           sllw a5,a4,a5
     c18:  2781                 sext.w a5,a5
     c1a:  2781                 sext.w a5,a5
     c1c:  8736                 mv a4,a3
     c1e:  8ff9                 and a5,a5,a4
     c20:  2781                 sext.w a5,a5
     c22:  dff9                 beqz a5,c00 <FUN_00000bbe+0x42>
     c24:  fe042623           sw zero,-20(s0)
     c28:  a031                 j c34 <FUN_00000bbe+0x76>
     c2a:  fec42783           lw a5,-20(s0)
     c2e:  2785                 addiw a5,a5,1
     c30:  fef42623           sw a5,-20(s0)
     c34:  fec42783           lw a5,-20(s0)
     c38:  0007871b           sext.w a4,a5
     c3c:  3e700793           li a5,999
     c40:  fee7f5e3           bgeu a5,a4,c2a <FUN_00000bbe+0x6c>
     c44:  0001                 nop
     c46:  7422                 ld s0,40(sp)
     c48:  6145                 addi sp,sp,48
     c4a:  8082                 ret

0000000000000c4c <FUN_00000c4c>:
     c4c:  7179                 addi sp,sp,-48
     c4e:  f422                 sd s0,40(sp)
     c50:  1800                 addi s0,sp,48
     c52:  87aa                 mv a5,a0
     c54:  fcf42e23           sw a5,-36(s0)
     c58:  030417b7           lui a5,0x3041
     c5c:  80c78793           addi a5,a5,-2036 # 304080c <gpio_get_boot_device+0x30324
     c60:  439c                 lw a5,0(a5)
     c62:  fef42623           sw a5,-20(s0)
     c66:  fdc42783           lw a5,-36(s0)
     c6a:  4705                 li a4,1
     c6c:  00f717bb           sllw a5,a4,a5
     c70:  2781                 sext.w a5,a5
     c72:  0007871b           sext.w a4,a5
     c76:  fec42783           lw a5,-20(s0)
     c7a:  8ff9                 and a5,a5,a4
     c7c:  0007869b           sext.w a3,a5
     c80:  fdc42783           lw a5,-36(s0)
     c84:  4705                 li a4,1
     c86:  00f717bb           sllw a5,a4,a5
     c8a:  2781                 sext.w a5,a5
     c8c:  2781                 sext.w a5,a5
     c8e:  8736                 mv a4,a3
     c90:  02f71463           bne a4,a5,cb8 <FUN_00000c4c+0x6c>
     c94:  fec42783           lw a5,-20(s0)
     c98:  9bc1                 andi a5,a5,-16
     c9a:  fef42623           sw a5,-20(s0)
     c9e:  fdc42783           lw a5,-36(s0)
     ca2:  4705                 li a4,1
     ca4:  00f717bb           sllw a5,a4,a5
     ca8:  2781                 sext.w a5,a5
     caa:  0007871b           sext.w a4,a5
     cae:  fec42783           lw a5,-20(s0)
     cb2:  8fd9                 or a5,a5,a4
     cb4:  fef42623           sw a5,-20(s0)
     cb8:  030417b7           lui a5,0x3041
     cbc:  80c78793           addi a5,a5,-2036 # 304080c <gpio_get_boot_device+0x30324
     cc0:  fec42703           lw a4,-20(s0)
     cc4:  c398                 sw a4,0(a5)
     cc6:  0001                 nop
     cc8:  7422                 ld s0,40(sp)
     cca:  6145                 addi sp,sp,48
     ccc:  8082                 ret

0000000000000cce <sunxi_sha_calc>:
     cce:  7149                 addi sp,sp,-368
     cd0:  f686                 sd ra,360(sp)
     cd2:  f2a2                 sd s0,352(sp)
     cd4:  1a80                 addi s0,sp,368
     cd6:  87aa                 mv a5,a0
     cd8:  eab43023           sd a1,-352(s0)
     cdc:  e8d43c23           sd a3,-360(s0)
     ce0:  eaf42623           sw a5,-340(s0)
     ce4:  87b2                 mv a5,a2
     ce6:  eaf42423           sw a5,-344(s0)
     cea:  87ba                 mv a5,a4
     cec:  e8f42a23           sw a5,-364(s0)
     cf0:  fc042e23           sw zero,-36(s0)
     cf4:  fc042c23           sw zero,-40(s0)
     cf8:  fe042623           sw zero,-20(s0)
     cfc:  fe042423           sw zero,-24(s0)
     d00:  fc043823           sd zero,-48(s0)
     d04:  fc043423           sd zero,-56(s0)
     d08:  fe043023           sd zero,-32(s0)
     d0c:  85fff0ef           jal ra,56a <FUN_0000056a>
     d10:  eb040793           addi a5,s0,-336
     d14:  0b000613           li a2,176
     d18:  4581                 li a1,0
     d1a:  853e                 mv a0,a5
     d1c:  34a090ef           jal ra,a066 <memset>
     d20:  f6040793           addi a5,s0,-160
     d24:  04000613           li a2,64
     d28:  4581                 li a1,0
     d2a:  853e                 mv a0,a5
     d2c:  33a090ef           jal ra,a066 <memset>
     d30:  fa040793           addi a5,s0,-96
     d34:  02800613           li a2,40
     d38:  4581                 li a1,0
     d3a:  853e                 mv a0,a5
     d3c:  32a090ef           jal ra,a066 <memset>
     d40:  fa040793           addi a5,s0,-96
     d44:  07fd                 addi a5,a5,31
     d46:  9b81                 andi a5,a5,-32
     d48:  fcf43823           sd a5,-48(s0)
     d4c:  f6040793           addi a5,s0,-160
     d50:  07fd                 addi a5,a5,31
     d52:  9b81                 andi a5,a5,-32
     d54:  fcf43423           sd a5,-56(s0)
     d58:  ea043783           ld a5,-352(s0)
     d5c:  8bfd                 andi a5,a5,31
     d5e:  c399                 beqz a5,d64 <sunxi_sha_calc+0x96>
     d60:  57fd                 li a5,-1
     d62:  a2c1                 j f22 <sunxi_sha_calc+0x254>
     d64:  eac42783           lw a5,-340(s0)
     d68:  0007871b           sext.w a4,a5
     d6c:  4785                 li a5,1
     d6e:  00f71a63           bne a4,a5,d82 <sunxi_sha_calc+0xb4>
     d72:  47cd                 li a5,19
     d74:  fef43023           sd a5,-32(s0)
     d78:  02000793           li a5,32
     d7c:  fef42623           sw a5,-20(s0)
     d80:  a831                 j d9c <sunxi_sha_calc+0xce>
     d82:  eac42783           lw a5,-340(s0)
     d86:  2781                 sext.w a5,a5
     d88:  eb81                 bnez a5,d98 <sunxi_sha_calc+0xca>
     d8a:  47c5                 li a5,17
     d8c:  fef43023           sd a5,-32(s0)
     d90:  47d1                 li a5,20
     d92:  fef42623           sw a5,-20(s0)
     d96:  a019                 j d9c <sunxi_sha_calc+0xce>
     d98:  57fd                 li a5,-1
     d9a:  a261                 j f22 <sunxi_sha_calc+0x254>
     d9c:  ea842783           lw a5,-344(s0)
     da0:  ea043583           ld a1,-352(s0)
     da4:  853e                 mv a0,a5
     da6:  8bbff0ef           jal ra,660 <FUN_00000660>
     daa:  87aa                 mv a5,a0
     dac:  fcf42e23           sw a5,-36(s0)
     db0:  fdc42783           lw a5,-36(s0)
     db4:  0027d79b           srliw a5,a5,0x2
     db8:  fcf42c23           sw a5,-40(s0)
     dbc:  ea042823           sw zero,-336(s0)
     dc0:  fe043783           ld a5,-32(s0)
     dc4:  2781                 sext.w a5,a5
     dc6:  873e                 mv a4,a5
     dc8:  800007b7           lui a5,0x80000
     dcc:  8fd9                 or a5,a5,a4
     dce:  2781                 sext.w a5,a5
     dd0:  eaf42a23           sw a5,-332(s0)
     dd4:  eb442783           lw a5,-332(s0)
     dd8:  873e                 mv a4,a5
     dda:  080007b7           lui a5,0x8000
     dde:  8fd9                 or a5,a5,a4
     de0:  2781                 sext.w a5,a5
     de2:  eaf42a23           sw a5,-332(s0)
     de6:  ea042c23           sw zero,-328(s0)
     dea:  ea042e23           sw zero,-324(s0)
     dee:  ec042023           sw zero,-320(s0)
     df2:  fd043783           ld a5,-48(s0)
     df6:  2781                 sext.w a5,a5
     df8:  ecf42223           sw a5,-316(s0)
     dfc:  ec042423           sw zero,-312(s0)
     e00:  fd842783           lw a5,-40(s0)
     e04:  ecf42623           sw a5,-308(s0)
     e08:  ea043783           ld a5,-352(s0)
     e0c:  2781                 sext.w a5,a5
     e0e:  ecf42823           sw a5,-304(s0)
     e12:  fd842783           lw a5,-40(s0)
     e16:  ecf42a23           sw a5,-300(s0)
     e1a:  4785                 li a5,1
     e1c:  fef42423           sw a5,-24(s0)
     e20:  a839                 j e3e <sunxi_sha_calc+0x170>
     e22:  fe842783           lw a5,-24(s0)
     e26:  0791                 addi a5,a5,4
     e28:  078e                 slli a5,a5,0x3
     e2a:  ff040713           addi a4,s0,-16
     e2e:  97ba                 add a5,a5,a4
     e30:  ec07a223           sw zero,-316(a5) # 7fffec4 <gpio_get_boot_device+0x7ff1b
     e34:  fe842783           lw a5,-24(s0)
     e38:  2785                 addiw a5,a5,1
     e3a:  fef42423           sw a5,-24(s0)
     e3e:  fe842783           lw a5,-24(s0)
     e42:  0007871b           sext.w a4,a5
     e46:  479d                 li a5,7
     e48:  fce7dde3           bge a5,a4,e22 <sunxi_sha_calc+0x154>
     e4c:  fc843783           ld a5,-56(s0)
     e50:  2781                 sext.w a5,a5
     e52:  f0f42823           sw a5,-240(s0)
     e56:  fec42783           lw a5,-20(s0)
     e5a:  0027d79b           srliw a5,a5,0x2
     e5e:  2781                 sext.w a5,a5
     e60:  f0f42a23           sw a5,-236(s0)
     e64:  4785                 li a5,1
     e66:  fef42423           sw a5,-24(s0)
     e6a:  a839                 j e88 <sunxi_sha_calc+0x1ba>
     e6c:  fe842783           lw a5,-24(s0)
     e70:  07b1                 addi a5,a5,12
     e72:  078e                 slli a5,a5,0x3
     e74:  ff040713           addi a4,s0,-16
     e78:  97ba                 add a5,a5,a4
     e7a:  ec07a223           sw zero,-316(a5)
     e7e:  fe842783           lw a5,-24(s0)
     e82:  2785                 addiw a5,a5,1
     e84:  fef42423           sw a5,-24(s0)
     e88:  fe842783           lw a5,-24(s0)
     e8c:  0007871b           sext.w a4,a5
     e90:  479d                 li a5,7
     e92:  fce7dde3           bge a5,a4,e6c <sunxi_sha_calc+0x19e>
     e96:  f4042823           sw zero,-176(s0)
     e9a:  eb040713           addi a4,s0,-336
     e9e:  030417b7           lui a5,0x3041
     ea2:  80078793           addi a5,a5,-2048 # 3040800 <gpio_get_boot_device+0x30324
     ea6:  2701                 sext.w a4,a4
     ea8:  c398                 sw a4,0(a5)
     eaa:  eb042783           lw a5,-336(s0)
     eae:  4705                 li a4,1
     eb0:  00f717bb           sllw a5,a4,a5
     eb4:  0007871b           sext.w a4,a5
     eb8:  030417b7           lui a5,0x3041
     ebc:  80878793           addi a5,a5,-2040 # 3040808 <gpio_get_boot_device+0x30324
     ec0:  2701                 sext.w a4,a4
     ec2:  c398                 sw a4,0(a5)
     ec4:  030417b7           lui a5,0x3041
     ec8:  81078793           addi a5,a5,-2032 # 3040810 <gpio_get_boot_device+0x30324
     ecc:  4705                 li a4,1
     ece:  c398                 sw a4,0(a5)
     ed0:  eb042783           lw a5,-336(s0)
     ed4:  853e                 mv a0,a5
     ed6:  ce9ff0ef           jal ra,bbe <FUN_00000bbe>
     eda:  fe042423           sw zero,-24(s0)
     ede:  a02d                 j f08 <sunxi_sha_calc+0x23a>
     ee0:  fe842703           lw a4,-24(s0)
     ee4:  fc843783           ld a5,-56(s0)
     ee8:  97ba                 add a5,a5,a4
     eea:  86be                 mv a3,a5
     eec:  fe842783           lw a5,-24(s0)
     ef0:  e9843703           ld a4,-360(s0)
     ef4:  97ba                 add a5,a5,a4
     ef6:  0006c703           lbu a4,0(a3)
     efa:  00e78023           sb a4,0(a5)
     efe:  fe842783           lw a5,-24(s0)
     f02:  2785                 addiw a5,a5,1
     f04:  fef42423           sw a5,-24(s0)
     f08:  fe842703           lw a4,-24(s0)
     f0c:  fec42783           lw a5,-20(s0)
     f10:  2781                 sext.w a5,a5
     f12:  fcf767e3           bltu a4,a5,ee0 <sunxi_sha_calc+0x212>
     f16:  eb042783           lw a5,-336(s0)
     f1a:  853e                 mv a0,a5
     f1c:  d31ff0ef           jal ra,c4c <FUN_00000c4c>
     f20:  4781                 li a5,0
     f22:  853e                 mv a0,a5
     f24:  70b6                 ld ra,360(sp)
     f26:  7416                 ld s0,352(sp)
     f28:  6175                 addi sp,sp,368
     f2a:  8082                 ret

0000000000000f2c <FUN_00000f2c>:
     f2c:  86010113           addi sp,sp,-1952 # 44860 <gpio_get_boot_device+0x364ca>
     f30:  78113c23           sd ra,1944(sp)
     f34:  78813823           sd s0,1936(sp)
     f38:  7a010413           addi s0,sp,1952
     f3c:  88b43023           sd a1,-1920(s0)
     f40:  86d43c23           sd a3,-1928(s0)
     f44:  86ba                 mv a3,a4
     f46:  86f43423           sd a5,-1944(s0)
     f4a:  8742                 mv a4,a6
     f4c:  87143023           sd a7,-1952(s0)
     f50:  87aa                 mv a5,a0
     f52:  88f42623           sw a5,-1908(s0)
     f56:  87b2                 mv a5,a2
     f58:  88f42423           sw a5,-1912(s0)
     f5c:  87b6                 mv a5,a3
     f5e:  86f42a23           sw a5,-1932(s0)
     f62:  87ba                 mv a5,a4
     f64:  86f42823           sw a5,-1936(s0)
     f68:  88c42783           lw a5,-1908(s0)
     f6c:  0037d79b           srliw a5,a5,0x3
     f70:  fef42423           sw a5,-24(s0)
     f74:  88c42783           lw a5,-1908(s0)
     f78:  0057d79b           srliw a5,a5,0x5
     f7c:  fef42223           sw a5,-28(s0)
     f80:  fe042623           sw zero,-20(s0)
     f84:  e2040793           addi a5,s0,-480
     f88:  fcf43c23           sd a5,-40(s0)
     f8c:  c8040793           addi a5,s0,-896
     f90:  fcf43823           sd a5,-48(s0)
     f94:  ae040793           addi a5,s0,-1312
     f98:  fcf43423           sd a5,-56(s0)
     f9c:  94040793           addi a5,s0,-1728
     fa0:  fcf43023           sd a5,-64(s0)
     fa4:  dc6ff0ef           jal ra,56a <FUN_0000056a>
     fa8:  89040793           addi a5,s0,-1904
     fac:  0b000613           li a2,176
     fb0:  4581                 li a1,0
     fb2:  853e                 mv a0,a5
     fb4:  0b2090ef           jal ra,a066 <memset>
     fb8:  fd843783           ld a5,-40(s0)
     fbc:  1a000613           li a2,416
     fc0:  4581                 li a1,0
     fc2:  853e                 mv a0,a5
     fc4:  0a2090ef           jal ra,a066 <memset>
     fc8:  fd043783           ld a5,-48(s0)
     fcc:  1a000613           li a2,416
     fd0:  4581                 li a1,0
     fd2:  853e                 mv a0,a5
     fd4:  092090ef           jal ra,a066 <memset>
     fd8:  fc843783           ld a5,-56(s0)
     fdc:  1a000613           li a2,416
     fe0:  4581                 li a1,0
     fe2:  853e                 mv a0,a5
     fe4:  082090ef           jal ra,a066 <memset>
     fe8:  fc043783           ld a5,-64(s0)
     fec:  1a000613           li a2,416
     ff0:  4581                 li a1,0
     ff2:  853e                 mv a0,a5
     ff4:  072090ef           jal ra,a066 <memset>
     ff8:  fd843783           ld a5,-40(s0)
     ffc:  07fd                 addi a5,a5,31
     ffe:  9b81                 andi a5,a5,-32
    1000:  fcf43c23           sd a5,-40(s0)
    1004:  fd043783           ld a5,-48(s0)
    1008:  07fd                 addi a5,a5,31
    100a:  9b81                 andi a5,a5,-32
    100c:  fcf43823           sd a5,-48(s0)
    1010:  fc843783           ld a5,-56(s0)
    1014:  07fd                 addi a5,a5,31
    1016:  9b81                 andi a5,a5,-32
    1018:  fcf43423           sd a5,-56(s0)
    101c:  fc043783           ld a5,-64(s0)
    1020:  07fd                 addi a5,a5,31
    1022:  9b81                 andi a5,a5,-32
    1024:  fcf43023           sd a5,-64(s0)
    1028:  88c42783           lw a5,-1908(s0)
    102c:  0007871b           sext.w a4,a5
    1030:  20000793           li a5,512
    1034:  02f70b63           beq a4,a5,106a <FUN_00000f2c+0x13e>
    1038:  88c42783           lw a5,-1908(s0)
    103c:  0007871b           sext.w a4,a5
    1040:  40000793           li a5,1024
    1044:  02f70363           beq a4,a5,106a <FUN_00000f2c+0x13e>
    1048:  88c42783           lw a5,-1908(s0)
    104c:  8007879b           addiw a5,a5,-2048
    1050:  2781                 sext.w a5,a5
    1052:  cf81                 beqz a5,106a <FUN_00000f2c+0x13e>
    1054:  88c42783           lw a5,-1908(s0)
    1058:  0007871b           sext.w a4,a5
    105c:  6785                 lui a5,0x1
    105e:  c0078793           addi a5,a5,-1024 # c00 <FUN_00000bbe+0x42>
    1062:  00f70463           beq a4,a5,106a <FUN_00000f2c+0x13e>
    1066:  57fd                 li a5,-1
    1068:  aac9                 j 123a <FUN_00000f2c+0x30e>
    106a:  fd043683           ld a3,-48(s0)
    106e:  87442703           lw a4,-1932(s0)
    1072:  fe842783           lw a5,-24(s0)
    1076:  863a                 mv a2,a4
    1078:  87843583           ld a1,-1928(s0)
    107c:  853e                 mv a0,a5
    107e:  9ebff0ef           jal ra,a68 <FUN_00000a68>
    1082:  fd843683           ld a3,-40(s0)
    1086:  88842703           lw a4,-1912(s0)
    108a:  fe842783           lw a5,-24(s0)
    108e:  863a                 mv a2,a4
    1090:  88043583           ld a1,-1920(s0)
    1094:  853e                 mv a0,a5
    1096:  9d3ff0ef           jal ra,a68 <FUN_00000a68>
    109a:  fc043683           ld a3,-64(s0)
    109e:  fe842703           lw a4,-24(s0)
    10a2:  fe842783           lw a5,-24(s0)
    10a6:  863a                 mv a2,a4
    10a8:  86043583           ld a1,-1952(s0)
    10ac:  853e                 mv a0,a5
    10ae:  9bbff0ef           jal ra,a68 <FUN_00000a68>
    10b2:  88042823           sw zero,-1904(s0)
    10b6:  800007b7           lui a5,0x80000
    10ba:  0207879b           addiw a5,a5,32
    10be:  88f42a23           sw a5,-1900(s0)
    10c2:  89442783           lw a5,-1900(s0)
    10c6:  873e                 mv a4,a5
    10c8:  080007b7           lui a5,0x8000
    10cc:  8fd9                 or a5,a5,a4
    10ce:  2781                 sext.w a5,a5
    10d0:  88f42a23           sw a5,-1900(s0)
    10d4:  88042c23           sw zero,-1896(s0)
    10d8:  88c42783           lw a5,-1908(s0)
    10dc:  4681                 li a3,0
    10de:  0a000613           li a2,160
    10e2:  4581                 li a1,0
    10e4:  853e                 mv a0,a5
    10e6:  a15ff0ef           jal ra,afa <FUN_00000afa>
    10ea:  87aa                 mv a5,a0
    10ec:  2781                 sext.w a5,a5
    10ee:  88f42e23           sw a5,-1892(s0)
    10f2:  fd843783           ld a5,-40(s0)
    10f6:  2781                 sext.w a5,a5
    10f8:  8af42023           sw a5,-1888(s0)
    10fc:  fc043783           ld a5,-64(s0)
    1100:  2781                 sext.w a5,a5
    1102:  8af42223           sw a5,-1884(s0)
    1106:  8a042423           sw zero,-1880(s0)
    110a:  fe442783           lw a5,-28(s0)
    110e:  8af42623           sw a5,-1876(s0)
    1112:  fd043783           ld a5,-48(s0)
    1116:  2781                 sext.w a5,a5
    1118:  8af42823           sw a5,-1872(s0)
    111c:  fe442783           lw a5,-28(s0)
    1120:  8af42a23           sw a5,-1868(s0)
    1124:  4785                 li a5,1
    1126:  fef42623           sw a5,-20(s0)
    112a:  a839                 j 1148 <FUN_00000f2c+0x21c>
    112c:  fec42783           lw a5,-20(s0)
    1130:  0791                 addi a5,a5,4
    1132:  078e                 slli a5,a5,0x3
    1134:  ff040713           addi a4,s0,-16
    1138:  97ba                 add a5,a5,a4
    113a:  8a07a223           sw zero,-1884(a5) # 7fff8a4 <gpio_get_boot_device+0x7ff1
    113e:  fec42783           lw a5,-20(s0)
    1142:  2785                 addiw a5,a5,1
    1144:  fef42623           sw a5,-20(s0)
    1148:  fec42783           lw a5,-20(s0)
    114c:  0007871b           sext.w a4,a5
    1150:  479d                 li a5,7
    1152:  fce7dde3           bge a5,a4,112c <FUN_00000f2c+0x200>
    1156:  fc843783           ld a5,-56(s0)
    115a:  2781                 sext.w a5,a5
    115c:  8ef42823           sw a5,-1808(s0)
    1160:  fe442783           lw a5,-28(s0)
    1164:  8ef42a23           sw a5,-1804(s0)
    1168:  4785                 li a5,1
    116a:  fef42623           sw a5,-20(s0)
    116e:  a839                 j 118c <FUN_00000f2c+0x260>
    1170:  fec42783           lw a5,-20(s0)
    1174:  07b1                 addi a5,a5,12
    1176:  078e                 slli a5,a5,0x3
    1178:  ff040713           addi a4,s0,-16
    117c:  97ba                 add a5,a5,a4
    117e:  8a07a223           sw zero,-1884(a5)
    1182:  fec42783           lw a5,-20(s0)
    1186:  2785                 addiw a5,a5,1
    1188:  fef42623           sw a5,-20(s0)
    118c:  fec42783           lw a5,-20(s0)
    1190:  0007871b           sext.w a4,a5
    1194:  479d                 li a5,7
    1196:  fce7dde3           bge a5,a4,1170 <FUN_00000f2c+0x244>
    119a:  92042823           sw zero,-1744(s0)
    119e:  89040713           addi a4,s0,-1904
    11a2:  030417b7           lui a5,0x3041
    11a6:  80078793           addi a5,a5,-2048 # 3040800 <gpio_get_boot_device+0x30324
    11aa:  2701                 sext.w a4,a4
    11ac:  c398                 sw a4,0(a5)
    11ae:  89042783           lw a5,-1904(s0)
    11b2:  4705                 li a4,1
    11b4:  00f717bb           sllw a5,a4,a5
    11b8:  0007871b           sext.w a4,a5
    11bc:  030417b7           lui a5,0x3041
    11c0:  80878793           addi a5,a5,-2040 # 3040808 <gpio_get_boot_device+0x30324
    11c4:  2701                 sext.w a4,a4
    11c6:  c398                 sw a4,0(a5)
    11c8:  030417b7           lui a5,0x3041
    11cc:  81078793           addi a5,a5,-2032 # 3040810 <gpio_get_boot_device+0x30324
    11d0:  4705                 li a4,1
    11d2:  c398                 sw a4,0(a5)
    11d4:  89042783           lw a5,-1904(s0)
    11d8:  853e                 mv a0,a5
    11da:  9e5ff0ef           jal ra,bbe <FUN_00000bbe>
    11de:  fe042623           sw zero,-20(s0)
    11e2:  a83d                 j 1220 <FUN_00000f2c+0x2f4>
    11e4:  fec42783           lw a5,-20(s0)
    11e8:  87042703           lw a4,-1936(s0)
    11ec:  40f707bb           subw a5,a4,a5
    11f0:  2781                 sext.w a5,a5
    11f2:  37fd                 addiw a5,a5,-1
    11f4:  2781                 sext.w a5,a5
    11f6:  02079713           slli a4,a5,0x20
    11fa:  9301                 srli a4,a4,0x20
    11fc:  fc843783           ld a5,-56(s0)
    1200:  97ba                 add a5,a5,a4
    1202:  86be                 mv a3,a5
    1204:  fec42783           lw a5,-20(s0)
    1208:  86843703           ld a4,-1944(s0)
    120c:  97ba                 add a5,a5,a4
    120e:  0006c703           lbu a4,0(a3)
    1212:  00e78023           sb a4,0(a5)
    1216:  fec42783           lw a5,-20(s0)
    121a:  2785                 addiw a5,a5,1
    121c:  fef42623           sw a5,-20(s0)
    1220:  fec42703           lw a4,-20(s0)
    1224:  87042783           lw a5,-1936(s0)
    1228:  2781                 sext.w a5,a5
    122a:  faf76de3           bltu a4,a5,11e4 <FUN_00000f2c+0x2b8>
    122e:  89042783           lw a5,-1904(s0)
    1232:  853e                 mv a0,a5
    1234:  a19ff0ef           jal ra,c4c <FUN_00000c4c>
    1238:  4781                 li a5,0
    123a:  853e                 mv a0,a5
    123c:  79813083           ld ra,1944(sp)
    1240:  79013403           ld s0,1936(sp)
    1244:  7a010113           addi sp,sp,1952
    1248:  8082                 ret

000000000000124a <FUN_0000124a>:
    124a:  7169                 addi sp,sp,-304
    124c:  f606                 sd ra,296(sp)
    124e:  f222                 sd s0,288(sp)
    1250:  1a00                 addi s0,sp,304
    1252:  eca43c23           sd a0,-296(s0)
    1256:  fe043023           sd zero,-32(s0)
    125a:  fc042e23           sw zero,-36(s0)
    125e:  ee840793           addi a5,s0,-280
    1262:  07fd                 addi a5,a5,31
    1264:  9b81                 andi a5,a5,-32
    1266:  fef43023           sd a5,-32(s0)
    126a:  47a1                 li a5,8
    126c:  fcf42e23           sw a5,-36(s0)
    1270:  f2840793           addi a5,s0,-216
    1274:  0b000613           li a2,176
    1278:  4581                 li a1,0
    127a:  853e                 mv a0,a5
    127c:  5eb080ef           jal ra,a066 <memset>
    1280:  ee840793           addi a5,s0,-280
    1284:  04000613           li a2,64
    1288:  4581                 li a1,0
    128a:  853e                 mv a0,a5
    128c:  5db080ef           jal ra,a066 <memset>
    1290:  f2042423           sw zero,-216(s0)
    1294:  800007b7           lui a5,0x80000
    1298:  0307879b           addiw a5,a5,48
    129c:  f2f42623           sw a5,-212(s0)
    12a0:  fdc42783           lw a5,-36(s0)
    12a4:  f4f42223           sw a5,-188(s0)
    12a8:  f4042423           sw zero,-184(s0)
    12ac:  f4042623           sw zero,-180(s0)
    12b0:  4785                 li a5,1
    12b2:  fef42623           sw a5,-20(s0)
    12b6:  a839                 j 12d4 <FUN_0000124a+0x8a>
    12b8:  fec42783           lw a5,-20(s0)
    12bc:  0791                 addi a5,a5,4
    12be:  078e                 slli a5,a5,0x3
    12c0:  ff040713           addi a4,s0,-16
    12c4:  97ba                 add a5,a5,a4
    12c6:  f207ae23           sw zero,-196(a5) # ffffffff7fffff3c <gpio_get_boot_devic
    12ca:  fec42783           lw a5,-20(s0)
    12ce:  2785                 addiw a5,a5,1
    12d0:  fef42623           sw a5,-20(s0)
    12d4:  fec42783           lw a5,-20(s0)
    12d8:  0007871b           sext.w a4,a5
    12dc:  479d                 li a5,7
    12de:  fce7dde3           bge a5,a4,12b8 <FUN_0000124a+0x6e>
    12e2:  fe043783           ld a5,-32(s0)
    12e6:  2781                 sext.w a5,a5
    12e8:  f8f42423           sw a5,-120(s0)
    12ec:  fdc42783           lw a5,-36(s0)
    12f0:  f8f42623           sw a5,-116(s0)
    12f4:  4785                 li a5,1
    12f6:  fef42623           sw a5,-20(s0)
    12fa:  a839                 j 1318 <FUN_0000124a+0xce>
    12fc:  fec42783           lw a5,-20(s0)
    1300:  07b1                 addi a5,a5,12
    1302:  078e                 slli a5,a5,0x3
    1304:  ff040713           addi a4,s0,-16
    1308:  97ba                 add a5,a5,a4
    130a:  f207ae23           sw zero,-196(a5)
    130e:  fec42783           lw a5,-20(s0)
    1312:  2785                 addiw a5,a5,1
    1314:  fef42623           sw a5,-20(s0)
    1318:  fec42783           lw a5,-20(s0)
    131c:  0007871b           sext.w a4,a5
    1320:  479d                 li a5,7
    1322:  fce7dde3           bge a5,a4,12fc <FUN_0000124a+0xb2>
    1326:  fc042423           sw zero,-56(s0)
    132a:  a40ff0ef           jal ra,56a <FUN_0000056a>
    132e:  f2840713           addi a4,s0,-216
    1332:  030417b7           lui a5,0x3041
    1336:  80078793           addi a5,a5,-2048 # 3040800 <gpio_get_boot_device+0x30324
    133a:  2701                 sext.w a4,a4
    133c:  c398                 sw a4,0(a5)
    133e:  f2842783           lw a5,-216(s0)
    1342:  4705                 li a4,1
    1344:  00f717bb           sllw a5,a4,a5
    1348:  0007871b           sext.w a4,a5
    134c:  030417b7           lui a5,0x3041
    1350:  80878793           addi a5,a5,-2040 # 3040808 <gpio_get_boot_device+0x30324
    1354:  2701                 sext.w a4,a4
    1356:  c398                 sw a4,0(a5)
    1358:  030417b7           lui a5,0x3041
    135c:  81078793           addi a5,a5,-2032 # 3040810 <gpio_get_boot_device+0x30324
    1360:  4705                 li a4,1
    1362:  c398                 sw a4,0(a5)
    1364:  f2842783           lw a5,-216(s0)
    1368:  853e                 mv a0,a5
    136a:  855ff0ef           jal ra,bbe <FUN_00000bbe>
    136e:  f2842783           lw a5,-216(s0)
    1372:  853e                 mv a0,a5
    1374:  8d9ff0ef           jal ra,c4c <FUN_00000c4c>
    1378:  fe043783           ld a5,-32(s0)
    137c:  02000613           li a2,32
    1380:  85be                 mv a1,a5
    1382:  ed843503           ld a0,-296(s0)
    1386:  3e7080ef           jal ra,9f6c <FUN_00009f6c>
    138a:  4781                 li a5,0
    138c:  853e                 mv a0,a5
    138e:  70b2                 ld ra,296(sp)
    1390:  7412                 ld s0,288(sp)
    1392:  6155                 addi sp,sp,304
    1394:  8082                 ret

0000000000001396 <FUN_00001396>:
    1396:  7139                 addi sp,sp,-64
    1398:  fc06                 sd ra,56(sp)
    139a:  f822                 sd s0,48(sp)
    139c:  f426                 sd s1,40(sp)
    139e:  0080                 addi s0,sp,64
    13a0:  fca43423           sd a0,-56(s0)
    13a4:  87ae                 mv a5,a1
    13a6:  fcf42223           sw a5,-60(s0)
    13aa:  fc042e23           sw zero,-36(s0)
    13ae:  fc042c23           sw zero,-40(s0)
    13b2:  fc442783           lw a5,-60(s0)
    13b6:  863e                 mv a2,a5
    13b8:  4581                 li a1,0
    13ba:  fc843503           ld a0,-56(s0)
    13be:  4a9080ef           jal ra,a066 <memset>
    13c2:  fc042c23           sw zero,-40(s0)
    13c6:  fc042e23           sw zero,-36(s0)
    13ca:  a83d                 j 1408 <FUN_00001396+0x72>
    13cc:  fdc42783           lw a5,-36(s0)
    13d0:  0707879b           addiw a5,a5,112
    13d4:  2781                 sext.w a5,a5
    13d6:  0007869b           sext.w a3,a5
    13da:  fd846783           lwu a5,-40(s0)
    13de:  078a                 slli a5,a5,0x2
    13e0:  fc843703           ld a4,-56(s0)
    13e4:  00f704b3           add s1,a4,a5
    13e8:  8536                 mv a0,a3
    13ea:  17d060ef           jal ra,7d66 <sid_readl>
    13ee:  87aa                 mv a5,a0
    13f0:  2781                 sext.w a5,a5
    13f2:  c09c                 sw a5,0(s1)
    13f4:  fdc42783           lw a5,-36(s0)
    13f8:  2791                 addiw a5,a5,4
    13fa:  fcf42e23           sw a5,-36(s0)
    13fe:  fd842783           lw a5,-40(s0)
    1402:  2785                 addiw a5,a5,1
    1404:  fcf42c23           sw a5,-40(s0)
    1408:  fdc42703           lw a4,-36(s0)
    140c:  fc442783           lw a5,-60(s0)
    1410:  2781                 sext.w a5,a5
    1412:  faf76de3           bltu a4,a5,13cc <FUN_00001396+0x36>
    1416:  4781                 li a5,0
    1418:  853e                 mv a0,a5
    141a:  70e2                 ld ra,56(sp)
    141c:  7442                 ld s0,48(sp)
    141e:  74a2                 ld s1,40(sp)
    1420:  6121                 addi sp,sp,64
    1422:  8082                 ret

0000000000001424 <FUN_00001424>:
    1424:  7179                 addi sp,sp,-48
    1426:  f422                 sd s0,40(sp)
    1428:  1800                 addi s0,sp,48
    142a:  87aa                 mv a5,a0
    142c:  fcf42e23           sw a5,-36(s0)
    1430:  fe042623           sw zero,-20(s0)
    1434:  fe042423           sw zero,-24(s0)
    1438:  0001                 nop
    143a:  030067b7           lui a5,0x3006
    143e:  04078793           addi a5,a5,64 # 3006040 <gpio_get_boot_device+0x2ff7caa>
    1442:  439c                 lw a5,0(a5)
    1444:  2781                 sext.w a5,a5
    1446:  8ba1                 andi a5,a5,8
    1448:  2781                 sext.w a5,a5
    144a:  fbe5                 bnez a5,143a <FUN_00001424+0x16>
    144c:  030067b7           lui a5,0x3006
    1450:  04078793           addi a5,a5,64 # 3006040 <gpio_get_boot_device+0x2ff7caa>
    1454:  439c                 lw a5,0(a5)
    1456:  fef42623           sw a5,-20(s0)
    145a:  fec42703           lw a4,-20(s0)
    145e:  fe0107b7           lui a5,0xfe010
    1462:  17f1                 addi a5,a5,-4
    1464:  8ff9                 and a5,a5,a4
    1466:  fef42623           sw a5,-20(s0)
    146a:  fdc42783           lw a5,-36(s0)
    146e:  0107979b           slliw a5,a5,0x10
    1472:  0007871b           sext.w a4,a5
    1476:  fec42783           lw a5,-20(s0)
    147a:  8fd9                 or a5,a5,a4
    147c:  fef42623           sw a5,-20(s0)
    1480:  030067b7           lui a5,0x3006
    1484:  04078793           addi a5,a5,64 # 3006040 <gpio_get_boot_device+0x2ff7caa>
    1488:  fec42703           lw a4,-20(s0)
    148c:  c398                 sw a4,0(a5)
    148e:  fec42703           lw a4,-20(s0)
    1492:  77c1                 lui a5,0xffff0
    1494:  0fc78793           addi a5,a5,252 # ffffffffffff00fc <gpio_get_boot_device+
    1498:  8ff9                 and a5,a5,a4
    149a:  fef42623           sw a5,-20(s0)
    149e:  fec42703           lw a4,-20(s0)
    14a2:  67ad                 lui a5,0xb
    14a4:  c0278793           addi a5,a5,-1022 # ac02 <FUN_0000ab08+0xfa>
    14a8:  8fd9                 or a5,a5,a4
    14aa:  fef42623           sw a5,-20(s0)
    14ae:  030067b7           lui a5,0x3006
    14b2:  04078793           addi a5,a5,64 # 3006040 <gpio_get_boot_device+0x2ff7caa>
    14b6:  fec42703           lw a4,-20(s0)
    14ba:  c398                 sw a4,0(a5)
    14bc:  0001                 nop
    14be:  030067b7           lui a5,0x3006
    14c2:  04078793           addi a5,a5,64 # 3006040 <gpio_get_boot_device+0x2ff7caa>
    14c6:  439c                 lw a5,0(a5)
    14c8:  2781                 sext.w a5,a5
    14ca:  8b89                 andi a5,a5,2
    14cc:  2781                 sext.w a5,a5
    14ce:  fbe5                 bnez a5,14be <FUN_00001424+0x9a>
    14d0:  fec42703           lw a4,-20(s0)
    14d4:  fe0007b7           lui a5,0xfe000
    14d8:  0fc78793           addi a5,a5,252 # fffffffffe0000fc <gpio_get_boot_device+
    14dc:  8ff9                 and a5,a5,a4
    14de:  fef42623           sw a5,-20(s0)
    14e2:  030067b7           lui a5,0x3006
    14e6:  04078793           addi a5,a5,64 # 3006040 <gpio_get_boot_device+0x2ff7caa>
    14ea:  fec42703           lw a4,-20(s0)
    14ee:  c398                 sw a4,0(a5)
    14f0:  030067b7           lui a5,0x3006
    14f4:  06078793           addi a5,a5,96 # 3006060 <gpio_get_boot_device+0x2ff7cca>
    14f8:  439c                 lw a5,0(a5)
    14fa:  fef42423           sw a5,-24(s0)
    14fe:  fe842783           lw a5,-24(s0)
    1502:  853e                 mv a0,a5
    1504:  7422                 ld s0,40(sp)
    1506:  6145                 addi sp,sp,48
    1508:  8082                 ret

000000000000150a <FUN_0000150a>:
    150a:  7139                 addi sp,sp,-64
    150c:  fc06                 sd ra,56(sp)
    150e:  f822                 sd s0,48(sp)
    1510:  f426                 sd s1,40(sp)
    1512:  0080                 addi s0,sp,64
    1514:  fca43423           sd a0,-56(s0)
    1518:  87ae                 mv a5,a1
    151a:  fcf42223           sw a5,-60(s0)
    151e:  fc042e23           sw zero,-36(s0)
    1522:  fc042c23           sw zero,-40(s0)
    1526:  fc442783           lw a5,-60(s0)
    152a:  863e                 mv a2,a5
    152c:  4581                 li a1,0
    152e:  fc843503           ld a0,-56(s0)
    1532:  335080ef           jal ra,a066 <memset>
    1536:  fc042c23           sw zero,-40(s0)
    153a:  fc042e23           sw zero,-36(s0)
    153e:  a83d                 j 157c <FUN_0000150a+0x72>
    1540:  fdc42783           lw a5,-36(s0)
    1544:  0707879b           addiw a5,a5,112
    1548:  2781                 sext.w a5,a5
    154a:  0007869b           sext.w a3,a5
    154e:  fd846783           lwu a5,-40(s0)
    1552:  078a                 slli a5,a5,0x2
    1554:  fc843703           ld a4,-56(s0)
    1558:  00f704b3           add s1,a4,a5
    155c:  8536                 mv a0,a3
    155e:  ec7ff0ef           jal ra,1424 <FUN_00001424>
    1562:  87aa                 mv a5,a0
    1564:  2781                 sext.w a5,a5
    1566:  c09c                 sw a5,0(s1)
    1568:  fdc42783           lw a5,-36(s0)
    156c:  2791                 addiw a5,a5,4
    156e:  fcf42e23           sw a5,-36(s0)
    1572:  fd842783           lw a5,-40(s0)
    1576:  2785                 addiw a5,a5,1
    1578:  fcf42c23           sw a5,-40(s0)
    157c:  fdc42703           lw a4,-36(s0)
    1580:  fc442783           lw a5,-60(s0)
    1584:  2781                 sext.w a5,a5
    1586:  faf76de3           bltu a4,a5,1540 <FUN_0000150a+0x36>
    158a:  4781                 li a5,0
    158c:  853e                 mv a0,a5
    158e:  70e2                 ld ra,56(sp)
    1590:  7442                 ld s0,48(sp)
    1592:  74a2                 ld s1,40(sp)
    1594:  6121                 addi sp,sp,64
    1596:  8082                 ret

0000000000001598 <FUN_00001598>:
    1598:  7139                 addi sp,sp,-64
    159a:  fc22                 sd s0,56(sp)
    159c:  0080                 addi s0,sp,64
    159e:  fca43c23           sd a0,-40(s0)
    15a2:  87ae                 mv a5,a1
    15a4:  fcc43423           sd a2,-56(s0)
    15a8:  fcf42a23           sw a5,-44(s0)
    15ac:  fe042623           sw zero,-20(s0)
    15b0:  fd843783           ld a5,-40(s0)
    15b4:  0007c783           lbu a5,0(a5)
    15b8:  873e                 mv a4,a5
    15ba:  03000793           li a5,48
    15be:  04f71b63           bne a4,a5,1614 <FUN_00001598+0x7c>
    15c2:  fd843783           ld a5,-40(s0)
    15c6:  0785                 addi a5,a5,1
    15c8:  0007c783           lbu a5,0(a5)
    15cc:  fef42623           sw a5,-20(s0)
    15d0:  fec42783           lw a5,-20(s0)
    15d4:  2789                 addiw a5,a5,2
    15d6:  fef42623           sw a5,-20(s0)
    15da:  fec42783           lw a5,-20(s0)
    15de:  0007871b           sext.w a4,a5
    15e2:  07f00793           li a5,127
    15e6:  00e7ea63           bltu a5,a4,15fa <FUN_00001598+0x62>
    15ea:  fec42703           lw a4,-20(s0)
    15ee:  fd442783           lw a5,-44(s0)
    15f2:  2701                 sext.w a4,a4
    15f4:  2781                 sext.w a5,a5
    15f6:  00f76463           bltu a4,a5,15fe <FUN_00001598+0x66>
    15fa:  57fd                 li a5,-1
    15fc:  a829                 j 1616 <FUN_00001598+0x7e>
    15fe:  fec46783           lwu a5,-20(s0)
    1602:  fd843703           ld a4,-40(s0)
    1606:  973e                 add a4,a4,a5
    1608:  fc843783           ld a5,-56(s0)
    160c:  e398                 sd a4,0(a5)
    160e:  fec42783           lw a5,-20(s0)
    1612:  a011                 j 1616 <FUN_00001598+0x7e>
    1614:  57fd                 li a5,-1
    1616:  853e                 mv a0,a5
    1618:  7462                 ld s0,56(sp)
    161a:  6121                 addi sp,sp,64
    161c:  8082                 ret

000000000000161e <FUN_0000161e>:
    161e:  7179                 addi sp,sp,-48
    1620:  f406                 sd ra,40(sp)
    1622:  f022                 sd s0,32(sp)
    1624:  1800                 addi s0,sp,48
    1626:  87aa                 mv a5,a0
    1628:  feb43023           sd a1,-32(s0)
    162c:  8732                 mv a4,a2
    162e:  fcd43c23           sd a3,-40(s0)
    1632:  fef42623           sw a5,-20(s0)
    1636:  87ba                 mv a5,a4
    1638:  fef42423           sw a5,-24(s0)
    163c:  fe842783           lw a5,-24(s0)
    1640:  863e                 mv a2,a5
    1642:  4581                 li a1,0
    1644:  fe043503           ld a0,-32(s0)
    1648:  0a3080ef           jal ra,9eea <memset>
    164c:  fec42783           lw a5,-20(s0)
    1650:  0007871b           sext.w a4,a5
    1654:  07f00793           li a5,127
    1658:  00e7ef63           bltu a5,a4,1676 <FUN_0000161e+0x58>
    165c:  fec42783           lw a5,-20(s0)
    1660:  0ff7f713           andi a4,a5,255
    1664:  fe043783           ld a5,-32(s0)
    1668:  00e78023           sb a4,0(a5)
    166c:  fd843783           ld a5,-40(s0)
    1670:  4705                 li a4,1
    1672:  c398                 sw a4,0(a5)
    1674:  a8d5                 j 1768 <FUN_0000161e+0x14a>
    1676:  fec42783           lw a5,-20(s0)
    167a:  0007871b           sext.w a4,a5
    167e:  0ff00793           li a5,255
    1682:  02e7e663           bltu a5,a4,16ae <FUN_0000161e+0x90>
    1686:  fe043783           ld a5,-32(s0)
    168a:  f8100713           li a4,-127
    168e:  00e78023           sb a4,0(a5)
    1692:  fe043783           ld a5,-32(s0)
    1696:  0785                 addi a5,a5,1
    1698:  fec42703           lw a4,-20(s0)
    169c:  0ff77713           andi a4,a4,255
    16a0:  00e78023           sb a4,0(a5)
    16a4:  fd843783           ld a5,-40(s0)
    16a8:  4709                 li a4,2
    16aa:  c398                 sw a4,0(a5)
    16ac:  a875                 j 1768 <FUN_0000161e+0x14a>
    16ae:  fec42783           lw a5,-20(s0)
    16b2:  0007871b           sext.w a4,a5
    16b6:  67c1                 lui a5,0x10
    16b8:  04f77363           bgeu a4,a5,16fe <FUN_0000161e+0xe0>
    16bc:  fe043783           ld a5,-32(s0)
    16c0:  f8200713           li a4,-126
    16c4:  00e78023           sb a4,0(a5) # 10000 <gpio_get_boot_device+0x1c6a>
    16c8:  fec42783           lw a5,-20(s0)
    16cc:  0087d79b           srliw a5,a5,0x8
    16d0:  0007871b           sext.w a4,a5
    16d4:  fe043783           ld a5,-32(s0)
    16d8:  0785                 addi a5,a5,1
    16da:  0ff77713           andi a4,a4,255
    16de:  00e78023           sb a4,0(a5)
    16e2:  fe043783           ld a5,-32(s0)
    16e6:  0789                 addi a5,a5,2
    16e8:  fec42703           lw a4,-20(s0)
    16ec:  0ff77713           andi a4,a4,255
    16f0:  00e78023           sb a4,0(a5)
    16f4:  fd843783           ld a5,-40(s0)
    16f8:  470d                 li a4,3
    16fa:  c398                 sw a4,0(a5)
    16fc:  a0b5                 j 1768 <FUN_0000161e+0x14a>
    16fe:  fec42783           lw a5,-20(s0)
    1702:  0007871b           sext.w a4,a5
    1706:  010007b7           lui a5,0x1000
    170a:  04f77f63           bgeu a4,a5,1768 <FUN_0000161e+0x14a>
    170e:  fe043783           ld a5,-32(s0)
    1712:  f8300713           li a4,-125
    1716:  00e78023           sb a4,0(a5) # 1000000 <gpio_get_boot_device+0xff1c6a>
    171a:  fec42783           lw a5,-20(s0)
    171e:  0107d79b           srliw a5,a5,0x10
    1722:  0007871b           sext.w a4,a5
    1726:  fe043783           ld a5,-32(s0)
    172a:  0785                 addi a5,a5,1
    172c:  0ff77713           andi a4,a4,255
    1730:  00e78023           sb a4,0(a5)
    1734:  fec42783           lw a5,-20(s0)
    1738:  0087d79b           srliw a5,a5,0x8
    173c:  0007871b           sext.w a4,a5
    1740:  fe043783           ld a5,-32(s0)
    1744:  0789                 addi a5,a5,2
    1746:  0ff77713           andi a4,a4,255
    174a:  00e78023           sb a4,0(a5)
    174e:  fe043783           ld a5,-32(s0)
    1752:  078d                 addi a5,a5,3
    1754:  fec42703           lw a4,-20(s0)
    1758:  0ff77713           andi a4,a4,255
    175c:  00e78023           sb a4,0(a5)
    1760:  fd843783           ld a5,-40(s0)
    1764:  4711                 li a4,4
    1766:  c398                 sw a4,0(a5)
    1768:  0001                 nop
    176a:  70a2                 ld ra,40(sp)
    176c:  7402                 ld s0,32(sp)
    176e:  6145                 addi sp,sp,48
    1770:  8082                 ret

0000000000001772 <FUN_00001772>:
    1772:  711d                 addi sp,sp,-96
    1774:  ec86                 sd ra,88(sp)
    1776:  e8a2                 sd s0,80(sp)
    1778:  1080                 addi s0,sp,96
    177a:  fca43423           sd a0,-56(s0)
    177e:  fcb43023           sd a1,-64(s0)
    1782:  fac43c23           sd a2,-72(s0)
    1786:  fad43823           sd a3,-80(s0)
    178a:  87ba                 mv a5,a4
    178c:  faf42623           sw a5,-84(s0)
    1790:  fc843783           ld a5,-56(s0)
    1794:  fef43423           sd a5,-24(s0)
    1798:  fe042223           sw zero,-28(s0)
    179c:  fe042023           sw zero,-32(s0)
    17a0:  fc042e23           sw zero,-36(s0)
    17a4:  fc043783           ld a5,-64(s0)
    17a8:  cb89                 beqz a5,17ba <FUN_00001772+0x48>
    17aa:  fac42783           lw a5,-84(s0)
    17ae:  863e                 mv a2,a5
    17b0:  4581                 li a1,0
    17b2:  fc043503           ld a0,-64(s0)
    17b6:  0b1080ef           jal ra,a066 <memset>
    17ba:  fe843783           ld a5,-24(s0)
    17be:  0785                 addi a5,a5,1
    17c0:  0007c783           lbu a5,0(a5)
    17c4:  0187979b           slliw a5,a5,0x18
    17c8:  4187d79b           sraiw a5,a5,0x18
    17cc:  0607cc63           bltz a5,1844 <FUN_00001772+0xd2>
    17d0:  fe843783           ld a5,-24(s0)
    17d4:  0785                 addi a5,a5,1
    17d6:  0007c783           lbu a5,0(a5)
    17da:  fef42223           sw a5,-28(s0)
    17de:  fe442783           lw a5,-28(s0)
    17e2:  2789                 addiw a5,a5,2
    17e4:  0007871b           sext.w a4,a5
    17e8:  fb043783           ld a5,-80(s0)
    17ec:  c398                 sw a4,0(a5)
    17ee:  fe442783           lw a5,-28(s0)
    17f2:  8b85                 andi a5,a5,1
    17f4:  0ff7f793           andi a5,a5,255
    17f8:  cf99                 beqz a5,1816 <FUN_00001772+0xa4>
    17fa:  fe843783           ld a5,-24(s0)
    17fe:  0789                 addi a5,a5,2
    1800:  0007c783           lbu a5,0(a5)
    1804:  eb89                 bnez a5,1816 <FUN_00001772+0xa4>
    1806:  4785                 li a5,1
    1808:  fef42023           sw a5,-32(s0)
    180c:  fe442783           lw a5,-28(s0)
    1810:  37fd                 addiw a5,a5,-1
    1812:  fef42223           sw a5,-28(s0)
    1816:  fb843783           ld a5,-72(s0)
    181a:  fe442703           lw a4,-28(s0)
    181e:  c398                 sw a4,0(a5)
    1820:  fe843783           ld a5,-24(s0)
    1824:  0789                 addi a5,a5,2
    1826:  fef43423           sd a5,-24(s0)
    182a:  fe042783           lw a5,-32(s0)
    182e:  2781                 sext.w a5,a5
    1830:  c791                 beqz a5,183c <FUN_00001772+0xca>
    1832:  fe843783           ld a5,-24(s0)
    1836:  0785                 addi a5,a5,1
    1838:  fef43423           sd a5,-24(s0)
    183c:  4785                 li a5,1
    183e:  fcf42e23           sw a5,-36(s0)
    1842:  aa39                 j 1960 <FUN_00001772+0x1ee>
    1844:  fe843783           ld a5,-24(s0)
    1848:  0785                 addi a5,a5,1
    184a:  0007c783           lbu a5,0(a5)
    184e:  873e                 mv a4,a5
    1850:  08100793           li a5,129
    1854:  06f71c63           bne a4,a5,18cc <FUN_00001772+0x15a>
    1858:  fe843783           ld a5,-24(s0)
    185c:  0789                 addi a5,a5,2
    185e:  0007c783           lbu a5,0(a5)
    1862:  fef42223           sw a5,-28(s0)
    1866:  fe442783           lw a5,-28(s0)
    186a:  278d                 addiw a5,a5,3
    186c:  0007871b           sext.w a4,a5
    1870:  fb043783           ld a5,-80(s0)
    1874:  c398                 sw a4,0(a5)
    1876:  fe442783           lw a5,-28(s0)
    187a:  8b85                 andi a5,a5,1
    187c:  0ff7f793           andi a5,a5,255
    1880:  cf99                 beqz a5,189e <FUN_00001772+0x12c>
    1882:  fe843783           ld a5,-24(s0)
    1886:  078d                 addi a5,a5,3
    1888:  0007c783           lbu a5,0(a5)
    188c:  eb89                 bnez a5,189e <FUN_00001772+0x12c>
    188e:  4785                 li a5,1
    1890:  fef42023           sw a5,-32(s0)
    1894:  fe442783           lw a5,-28(s0)
    1898:  37fd                 addiw a5,a5,-1
    189a:  fef42223           sw a5,-28(s0)
    189e:  fb843783           ld a5,-72(s0)
    18a2:  fe442703           lw a4,-28(s0)
    18a6:  c398                 sw a4,0(a5)
    18a8:  fe843783           ld a5,-24(s0)
    18ac:  078d                 addi a5,a5,3
    18ae:  fef43423           sd a5,-24(s0)
    18b2:  fe042783           lw a5,-32(s0)
    18b6:  2781                 sext.w a5,a5
    18b8:  c791                 beqz a5,18c4 <FUN_00001772+0x152>
    18ba:  fe843783           ld a5,-24(s0)
    18be:  0785                 addi a5,a5,1
    18c0:  fef43423           sd a5,-24(s0)
    18c4:  4789                 li a5,2
    18c6:  fcf42e23           sw a5,-36(s0)
    18ca:  a859                 j 1960 <FUN_00001772+0x1ee>
    18cc:  fe843783           ld a5,-24(s0)
    18d0:  0785                 addi a5,a5,1
    18d2:  0007c783           lbu a5,0(a5)
    18d6:  873e                 mv a4,a5
    18d8:  08200793           li a5,130
    18dc:  08f71263           bne a4,a5,1960 <FUN_00001772+0x1ee>
    18e0:  fe843783           ld a5,-24(s0)
    18e4:  0789                 addi a5,a5,2
    18e6:  0007c783           lbu a5,0(a5)
    18ea:  2781                 sext.w a5,a5
    18ec:  0087979b           slliw a5,a5,0x8
    18f0:  0007871b           sext.w a4,a5
    18f4:  fe843783           ld a5,-24(s0)
    18f8:  078d                 addi a5,a5,3
    18fa:  0007c783           lbu a5,0(a5)
    18fe:  2781                 sext.w a5,a5
    1900:  8fd9                 or a5,a5,a4
    1902:  2781                 sext.w a5,a5
    1904:  fef42223           sw a5,-28(s0)
    1908:  fe442783           lw a5,-28(s0)
    190c:  2791                 addiw a5,a5,4
    190e:  0007871b           sext.w a4,a5
    1912:  fb043783           ld a5,-80(s0)
    1916:  c398                 sw a4,0(a5)
    1918:  fe442783           lw a5,-28(s0)
    191c:  8b85                 andi a5,a5,1
    191e:  0ff7f793           andi a5,a5,255
    1922:  cb89                 beqz a5,1934 <FUN_00001772+0x1c2>
    1924:  4785                 li a5,1
    1926:  fef42023           sw a5,-32(s0)
    192a:  fe442783           lw a5,-28(s0)
    192e:  37fd                 addiw a5,a5,-1
    1930:  fef42223           sw a5,-28(s0)
    1934:  fb843783           ld a5,-72(s0)
    1938:  fe442703           lw a4,-28(s0)
    193c:  c398                 sw a4,0(a5)
    193e:  fe843783           ld a5,-24(s0)
    1942:  0791                 addi a5,a5,4
    1944:  fef43423           sd a5,-24(s0)
    1948:  fe042783           lw a5,-32(s0)
    194c:  2781                 sext.w a5,a5
    194e:  c791                 beqz a5,195a <FUN_00001772+0x1e8>
    1950:  fe843783           ld a5,-24(s0)
    1954:  0785                 addi a5,a5,1
    1956:  fef43423           sd a5,-24(s0)
    195a:  478d                 li a5,3
    195c:  fcf42e23           sw a5,-36(s0)
    1960:  fc043783           ld a5,-64(s0)
    1964:  c795                 beqz a5,1990 <FUN_00001772+0x21e>
    1966:  fe442703           lw a4,-28(s0)
    196a:  fac42783           lw a5,-84(s0)
    196e:  2701                 sext.w a4,a4
    1970:  2781                 sext.w a5,a5
    1972:  00e7f663           bgeu a5,a4,197e <FUN_00001772+0x20c>
    1976:  fac42783           lw a5,-84(s0)
    197a:  fef42223           sw a5,-28(s0)
    197e:  fe442783           lw a5,-28(s0)
    1982:  863e                 mv a2,a5
    1984:  fe843583           ld a1,-24(s0)
    1988:  fc043503           ld a0,-64(s0)
    198c:  5ae080ef           jal ra,9f3a <FUN_00009f3a>
    1990:  fdc42783           lw a5,-36(s0)
    1994:  853e                 mv a0,a5
    1996:  60e6                 ld ra,88(sp)
    1998:  6446                 ld s0,80(sp)
    199a:  6125                 addi sp,sp,96
    199c:  8082                 ret

000000000000199e <FUN_0000199e>:
    199e:  715d                 addi sp,sp,-80
    19a0:  e486                 sd ra,72(sp)
    19a2:  e0a2                 sd s0,64(sp)
    19a4:  0880                 addi s0,sp,80
    19a6:  fca43423           sd a0,-56(s0)
    19aa:  87ae                 mv a5,a1
    19ac:  fac43c23           sd a2,-72(s0)
    19b0:  fcf42223           sw a5,-60(s0)
    19b4:  fc843783           ld a5,-56(s0)
    19b8:  fef43423           sd a5,-24(s0)
    19bc:  fc843783           ld a5,-56(s0)
    19c0:  fef43023           sd a5,-32(s0)
    19c4:  fc042e23           sw zero,-36(s0)
    19c8:  fc042c23           sw zero,-40(s0)
    19cc:  fe843783           ld a5,-24(s0)
    19d0:  0785                 addi a5,a5,1
    19d2:  fef43423           sd a5,-24(s0)
    19d6:  fe843783           ld a5,-24(s0)
    19da:  0785                 addi a5,a5,1
    19dc:  fef43423           sd a5,-24(s0)
    19e0:  fb843783           ld a5,-72(s0)
    19e4:  fdc40693           addi a3,s0,-36
    19e8:  fd840613           addi a2,s0,-40
    19ec:  4711                 li a4,4
    19ee:  85be                 mv a1,a5
    19f0:  fe843503           ld a0,-24(s0)
    19f4:  d7fff0ef           jal ra,1772 <FUN_00001772>
    19f8:  fdc42783           lw a5,-36(s0)
    19fc:  1782                 slli a5,a5,0x20
    19fe:  9381                 srli a5,a5,0x20
    1a00:  fe843703           ld a4,-24(s0)
    1a04:  97ba                 add a5,a5,a4
    1a06:  fef43423           sd a5,-24(s0)
    1a0a:  fb843783           ld a5,-72(s0)
    1a0e:  0791                 addi a5,a5,4
    1a10:  fdc40693           addi a3,s0,-36
    1a14:  fd840613           addi a2,s0,-40
    1a18:  4711                 li a4,4
    1a1a:  85be                 mv a1,a5
    1a1c:  fe843503           ld a0,-24(s0)
    1a20:  d53ff0ef           jal ra,1772 <FUN_00001772>
    1a24:  fdc42783           lw a5,-36(s0)
    1a28:  1782                 slli a5,a5,0x20
    1a2a:  9381                 srli a5,a5,0x20
    1a2c:  fe843703           ld a4,-24(s0)
    1a30:  97ba                 add a5,a5,a4
    1a32:  fef43423           sd a5,-24(s0)
    1a36:  fe843783           ld a5,-24(s0)
    1a3a:  0017c703           lbu a4,1(a5)
    1a3e:  fb843783           ld a5,-72(s0)
    1a42:  00e78e23           sb a4,28(a5)
    1a46:  fb843783           ld a5,-72(s0)
    1a4a:  00878713           addi a4,a5,8
    1a4e:  fe843783           ld a5,-24(s0)
    1a52:  00178693           addi a3,a5,1
    1a56:  fb843783           ld a5,-72(s0)
    1a5a:  01c7c783           lbu a5,28(a5)
    1a5e:  2781                 sext.w a5,a5
    1a60:  863e                 mv a2,a5
    1a62:  85b6                 mv a1,a3
    1a64:  853a                 mv a0,a4
    1a66:  4d4080ef           jal ra,9f3a <FUN_00009f3a>
    1a6a:  fe843783           ld a5,-24(s0)
    1a6e:  0785                 addi a5,a5,1
    1a70:  0007c783           lbu a5,0(a5)
    1a74:  873e                 mv a4,a5
    1a76:  fe843783           ld a5,-24(s0)
    1a7a:  97ba                 add a5,a5,a4
    1a7c:  fef43423           sd a5,-24(s0)
    1a80:  fe843783           ld a5,-24(s0)
    1a84:  0789                 addi a5,a5,2
    1a86:  fef43423           sd a5,-24(s0)
    1a8a:  fe843783           ld a5,-24(s0)
    1a8e:  fef43023           sd a5,-32(s0)
    1a92:  fc042e23           sw zero,-36(s0)
    1a96:  fe043683           ld a3,-32(s0)
    1a9a:  fdc42783           lw a5,-36(s0)
    1a9e:  fc442703           lw a4,-60(s0)
    1aa2:  40f707bb           subw a5,a4,a5
    1aa6:  2781                 sext.w a5,a5
    1aa8:  fe040713           addi a4,s0,-32
    1aac:  863a                 mv a2,a4
    1aae:  85be                 mv a1,a5
    1ab0:  8536                 mv a0,a3
    1ab2:  ae7ff0ef           jal ra,1598 <FUN_00001598>
    1ab6:  87aa                 mv a5,a0
    1ab8:  0007871b           sext.w a4,a5
    1abc:  fdc42783           lw a5,-36(s0)
    1ac0:  9fb9                 addw a5,a5,a4
    1ac2:  2781                 sext.w a5,a5
    1ac4:  fcf42e23           sw a5,-36(s0)
    1ac8:  fe043683           ld a3,-32(s0)
    1acc:  fdc42783           lw a5,-36(s0)
    1ad0:  fc442703           lw a4,-60(s0)
    1ad4:  40f707bb           subw a5,a4,a5
    1ad8:  2781                 sext.w a5,a5
    1ada:  fe040713           addi a4,s0,-32
    1ade:  863a                 mv a2,a4
    1ae0:  85be                 mv a1,a5
    1ae2:  8536                 mv a0,a3
    1ae4:  ab5ff0ef           jal ra,1598 <FUN_00001598>
    1ae8:  87aa                 mv a5,a0
    1aea:  0007871b           sext.w a4,a5
    1aee:  fdc42783           lw a5,-36(s0)
    1af2:  9fb9                 addw a5,a5,a4
    1af4:  2781                 sext.w a5,a5
    1af6:  fcf42e23           sw a5,-36(s0)
    1afa:  fe043683           ld a3,-32(s0)
    1afe:  fdc42783           lw a5,-36(s0)
    1b02:  fc442703           lw a4,-60(s0)
    1b06:  40f707bb           subw a5,a4,a5
    1b0a:  2781                 sext.w a5,a5
    1b0c:  fe040713           addi a4,s0,-32
    1b10:  863a                 mv a2,a4
    1b12:  85be                 mv a1,a5
    1b14:  8536                 mv a0,a3
    1b16:  a83ff0ef           jal ra,1598 <FUN_00001598>
    1b1a:  87aa                 mv a5,a0
    1b1c:  0007871b           sext.w a4,a5
    1b20:  fdc42783           lw a5,-36(s0)
    1b24:  9fb9                 addw a5,a5,a4
    1b26:  2781                 sext.w a5,a5
    1b28:  fcf42e23           sw a5,-36(s0)
    1b2c:  fe043783           ld a5,-32(s0)
    1b30:  fef43423           sd a5,-24(s0)
    1b34:  fe843783           ld a5,-24(s0)
    1b38:  0791                 addi a5,a5,4
    1b3a:  fef43423           sd a5,-24(s0)
    1b3e:  fb843783           ld a5,-72(s0)
    1b42:  01d78713           addi a4,a5,29
    1b46:  fe843783           ld a5,-24(s0)
    1b4a:  00278693           addi a3,a5,2
    1b4e:  fe843783           ld a5,-24(s0)
    1b52:  0785                 addi a5,a5,1
    1b54:  0007c783           lbu a5,0(a5)
    1b58:  2781                 sext.w a5,a5
    1b5a:  863e                 mv a2,a5
    1b5c:  85b6                 mv a1,a3
    1b5e:  853a                 mv a0,a4
    1b60:  3da080ef           jal ra,9f3a <FUN_00009f3a>
    1b64:  fe843783           ld a5,-24(s0)
    1b68:  0785                 addi a5,a5,1
    1b6a:  0007c783           lbu a5,0(a5)
    1b6e:  873e                 mv a4,a5
    1b70:  fe843783           ld a5,-24(s0)
    1b74:  97ba                 add a5,a5,a4
    1b76:  fef43423           sd a5,-24(s0)
    1b7a:  fe843783           ld a5,-24(s0)
    1b7e:  0789                 addi a5,a5,2
    1b80:  fef43423           sd a5,-24(s0)
    1b84:  fd840693           addi a3,s0,-40
    1b88:  fd840793           addi a5,s0,-40
    1b8c:  4701                 li a4,0
    1b8e:  863e                 mv a2,a5
    1b90:  4581                 li a1,0
    1b92:  fe843503           ld a0,-24(s0)
    1b96:  bddff0ef           jal ra,1772 <FUN_00001772>
    1b9a:  87aa                 mv a5,a0
    1b9c:  2781                 sext.w a5,a5
    1b9e:  fcf42e23           sw a5,-36(s0)
    1ba2:  fdc42783           lw a5,-36(s0)
    1ba6:  1782                 slli a5,a5,0x20
    1ba8:  9381                 srli a5,a5,0x20
    1baa:  fe843703           ld a4,-24(s0)
    1bae:  97ba                 add a5,a5,a4
    1bb0:  fef43423           sd a5,-24(s0)
    1bb4:  fe843783           ld a5,-24(s0)
    1bb8:  0785                 addi a5,a5,1
    1bba:  fef43423           sd a5,-24(s0)
    1bbe:  fb843783           ld a5,-72(s0)
    1bc2:  02d78593           addi a1,a5,45
    1bc6:  fb843783           ld a5,-72(s0)
    1bca:  1c078793           addi a5,a5,448
    1bce:  fdc40693           addi a3,s0,-36
    1bd2:  19000713           li a4,400
    1bd6:  863e                 mv a2,a5
    1bd8:  fe843503           ld a0,-24(s0)
    1bdc:  b97ff0ef           jal ra,1772 <FUN_00001772>
    1be0:  fdc42783           lw a5,-36(s0)
    1be4:  1782                 slli a5,a5,0x20
    1be6:  9381                 srli a5,a5,0x20
    1be8:  fe843703           ld a4,-24(s0)
    1bec:  97ba                 add a5,a5,a4
    1bee:  fef43423           sd a5,-24(s0)
    1bf2:  fb843783           ld a5,-72(s0)
    1bf6:  1c478593           addi a1,a5,452
    1bfa:  fb843783           ld a5,-72(s0)
    1bfe:  35478793           addi a5,a5,852
    1c02:  fdc40693           addi a3,s0,-36
    1c06:  19000713           li a4,400
    1c0a:  863e                 mv a2,a5
    1c0c:  fe843503           ld a0,-24(s0)
    1c10:  b63ff0ef           jal ra,1772 <FUN_00001772>
    1c14:  fdc42783           lw a5,-36(s0)
    1c18:  1782                 slli a5,a5,0x20
    1c1a:  9381                 srli a5,a5,0x20
    1c1c:  fe843703           ld a4,-24(s0)
    1c20:  97ba                 add a5,a5,a4
    1c22:  fef43423           sd a5,-24(s0)
    1c26:  fe843703           ld a4,-24(s0)
    1c2a:  fc843783           ld a5,-56(s0)
    1c2e:  40f707b3           sub a5,a4,a5
    1c32:  2781                 sext.w a5,a5
    1c34:  853e                 mv a0,a5
    1c36:  60a6                 ld ra,72(sp)
    1c38:  6406                 ld s0,64(sp)
    1c3a:  6161                 addi sp,sp,80
    1c3c:  8082                 ret

0000000000001c3e <FUN_00001c3e>:
    1c3e:  7139                 addi sp,sp,-64
    1c40:  fc06                 sd ra,56(sp)
    1c42:  f822                 sd s0,48(sp)
    1c44:  0080                 addi s0,sp,64
    1c46:  fca43c23           sd a0,-40(s0)
    1c4a:  87ae                 mv a5,a1
    1c4c:  fcc43423           sd a2,-56(s0)
    1c50:  fcf42a23           sw a5,-44(s0)
    1c54:  fd843783           ld a5,-40(s0)
    1c58:  fef43423           sd a5,-24(s0)
    1c5c:  fe843783           ld a5,-24(s0)
    1c60:  0789                 addi a5,a5,2
    1c62:  fef43423           sd a5,-24(s0)
    1c66:  fe843783           ld a5,-24(s0)
    1c6a:  0789                 addi a5,a5,2
    1c6c:  fef43423           sd a5,-24(s0)
    1c70:  fe843783           ld a5,-24(s0)
    1c74:  0789                 addi a5,a5,2
    1c76:  fef43423           sd a5,-24(s0)
    1c7a:  fc843783           ld a5,-56(s0)
    1c7e:  35878793           addi a5,a5,856
    1c82:  02000613           li a2,32
    1c86:  fe843583           ld a1,-24(s0)
    1c8a:  853e                 mv a0,a5
    1c8c:  2ae080ef           jal ra,9f3a <FUN_00009f3a>
    1c90:  fe843783           ld a5,-24(s0)
    1c94:  02078793           addi a5,a5,32
    1c98:  fef43423           sd a5,-24(s0)
    1c9c:  fe843703           ld a4,-24(s0)
    1ca0:  fd843783           ld a5,-40(s0)
    1ca4:  40f707b3           sub a5,a4,a5
    1ca8:  2781                 sext.w a5,a5
    1caa:  853e                 mv a0,a5
    1cac:  70e2                 ld ra,56(sp)
    1cae:  7442                 ld s0,48(sp)
    1cb0:  6121                 addi sp,sp,64
    1cb2:  8082                 ret

0000000000001cb4 <FUN_00001cb4>:
    1cb4:  711d                 addi sp,sp,-96
    1cb6:  ec86                 sd ra,88(sp)
    1cb8:  e8a2                 sd s0,80(sp)
    1cba:  1080                 addi s0,sp,96
    1cbc:  faa43c23           sd a0,-72(s0)
    1cc0:  87ae                 mv a5,a1
    1cc2:  fac43423           sd a2,-88(s0)
    1cc6:  faf42a23           sw a5,-76(s0)
    1cca:  fb843783           ld a5,-72(s0)
    1cce:  fef43023           sd a5,-32(s0)
    1cd2:  fc042e23           sw zero,-36(s0)
    1cd6:  fc042c23           sw zero,-40(s0)
    1cda:  fe042623           sw zero,-20(s0)
    1cde:  fc042a23           sw zero,-44(s0)
    1ce2:  fc840793           addi a5,s0,-56
    1ce6:  4621                 li a2,8
    1ce8:  4581                 li a1,0
    1cea:  853e                 mv a0,a5
    1cec:  37a080ef           jal ra,a066 <memset>
    1cf0:  fe043783           ld a5,-32(s0)
    1cf4:  0007c783           lbu a5,0(a5)
    1cf8:  873e                 mv a4,a5
    1cfa:  0a300793           li a5,163
    1cfe:  00f70463           beq a4,a5,1d06 <FUN_00001cb4+0x52>
    1d02:  57fd                 li a5,-1
    1d04:  a211                 j 1e08 <FUN_00001cb4+0x154>
    1d06:  fe043783           ld a5,-32(s0)
    1d0a:  0785                 addi a5,a5,1
    1d0c:  0007c783           lbu a5,0(a5)
    1d10:  fcf42e23           sw a5,-36(s0)
    1d14:  fe043783           ld a5,-32(s0)
    1d18:  0789                 addi a5,a5,2
    1d1a:  fef43023           sd a5,-32(s0)
    1d1e:  fe043783           ld a5,-32(s0)
    1d22:  0007c783           lbu a5,0(a5)
    1d26:  873e                 mv a4,a5
    1d28:  03000793           li a5,48
    1d2c:  00f70463           beq a4,a5,1d34 <FUN_00001cb4+0x80>
    1d30:  57fd                 li a5,-1
    1d32:  a8d9                 j 1e08 <FUN_00001cb4+0x154>
    1d34:  fe043783           ld a5,-32(s0)
    1d38:  0785                 addi a5,a5,1
    1d3a:  0007c783           lbu a5,0(a5)
    1d3e:  fcf42c23           sw a5,-40(s0)
    1d42:  fe043783           ld a5,-32(s0)
    1d46:  0789                 addi a5,a5,2
    1d48:  fef43023           sd a5,-32(s0)
    1d4c:  fe043783           ld a5,-32(s0)
    1d50:  0007c783           lbu a5,0(a5)
    1d54:  873e                 mv a4,a5
    1d56:  4789                 li a5,2
    1d58:  00f70463           beq a4,a5,1d60 <FUN_00001cb4+0xac>
    1d5c:  57fd                 li a5,-1
    1d5e:  a06d                 j 1e08 <FUN_00001cb4+0x154>
    1d60:  fe043783           ld a5,-32(s0)
    1d64:  0789                 addi a5,a5,2
    1d66:  fef43023           sd a5,-32(s0)
    1d6a:  fa843783           ld a5,-88(s0)
    1d6e:  35878793           addi a5,a5,856
    1d72:  02000613           li a2,32
    1d76:  fe043583           ld a1,-32(s0)
    1d7a:  853e                 mv a0,a5
    1d7c:  1be080ef           jal ra,9f3a <FUN_00009f3a>
    1d80:  fe043783           ld a5,-32(s0)
    1d84:  02078793           addi a5,a5,32
    1d88:  fef43023           sd a5,-32(s0)
    1d8c:  fe043783           ld a5,-32(s0)
    1d90:  0007c783           lbu a5,0(a5)
    1d94:  873e                 mv a4,a5
    1d96:  03000793           li a5,48
    1d9a:  00f70463           beq a4,a5,1da2 <FUN_00001cb4+0xee>
    1d9e:  57fd                 li a5,-1
    1da0:  a0a5                 j 1e08 <FUN_00001cb4+0x154>
    1da2:  fe043783           ld a5,-32(s0)
    1da6:  0785                 addi a5,a5,1
    1da8:  0007c783           lbu a5,0(a5)
    1dac:  fef42623           sw a5,-20(s0)
    1db0:  fec42783           lw a5,-20(s0)
    1db4:  37f9                 addiw a5,a5,-2
    1db6:  fef42623           sw a5,-20(s0)
    1dba:  fe043783           ld a5,-32(s0)
    1dbe:  0789                 addi a5,a5,2
    1dc0:  fef43023           sd a5,-32(s0)
    1dc4:  fec42703           lw a4,-20(s0)
    1dc8:  fc840793           addi a5,s0,-56
    1dcc:  863a                 mv a2,a4
    1dce:  fe043583           ld a1,-32(s0)
    1dd2:  853e                 mv a0,a5
    1dd4:  166080ef           jal ra,9f3a <FUN_00009f3a>
    1dd8:  fc842783           lw a5,-56(s0)
    1ddc:  873e                 mv a4,a5
    1dde:  4785                 li a5,1
    1de0:  00f71963           bne a4,a5,1df2 <FUN_00001cb4+0x13e>
    1de4:  fcc42703           lw a4,-52(s0)
    1de8:  fa843783           ld a5,-88(s0)
    1dec:  3ce7ac23           sw a4,984(a5)
    1df0:  a029                 j 1dfa <FUN_00001cb4+0x146>
    1df2:  fa843783           ld a5,-88(s0)
    1df6:  3c07ac23           sw zero,984(a5)
    1dfa:  fe043703           ld a4,-32(s0)
    1dfe:  fb843783           ld a5,-72(s0)
    1e02:  40f707b3           sub a5,a4,a5
    1e06:  2781                 sext.w a5,a5
    1e08:  853e                 mv a0,a5
    1e0a:  60e6                 ld ra,88(sp)
    1e0c:  6446                 ld s0,80(sp)
    1e0e:  6125                 addi sp,sp,96
    1e10:  8082                 ret

0000000000001e12 <FUN_00001e12>:
    1e12:  7139                 addi sp,sp,-64
    1e14:  fc06                 sd ra,56(sp)
    1e16:  f822                 sd s0,48(sp)
    1e18:  0080                 addi s0,sp,64
    1e1a:  fca43c23           sd a0,-40(s0)
    1e1e:  87ae                 mv a5,a1
    1e20:  fcc43423           sd a2,-56(s0)
    1e24:  fcf42a23           sw a5,-44(s0)
    1e28:  fd843783           ld a5,-40(s0)
    1e2c:  fef43423           sd a5,-24(s0)
    1e30:  fe042223           sw zero,-28(s0)
    1e34:  fe042023           sw zero,-32(s0)
    1e38:  fe040693           addi a3,s0,-32
    1e3c:  fe040793           addi a5,s0,-32
    1e40:  4701                 li a4,0
    1e42:  863e                 mv a2,a5
    1e44:  4581                 li a1,0
    1e46:  fe843503           ld a0,-24(s0)
    1e4a:  929ff0ef           jal ra,1772 <FUN_00001772>
    1e4e:  87aa                 mv a5,a0
    1e50:  2781                 sext.w a5,a5
    1e52:  fef42223           sw a5,-28(s0)
    1e56:  fe442783           lw a5,-28(s0)
    1e5a:  1782                 slli a5,a5,0x20
    1e5c:  9381                 srli a5,a5,0x20
    1e5e:  fe843703           ld a4,-24(s0)
    1e62:  97ba                 add a5,a5,a4
    1e64:  fef43423           sd a5,-24(s0)
    1e68:  fe843783           ld a5,-24(s0)
    1e6c:  0785                 addi a5,a5,1
    1e6e:  fef43423           sd a5,-24(s0)
    1e72:  fe843783           ld a5,-24(s0)
    1e76:  0007c783           lbu a5,0(a5)
    1e7a:  873e                 mv a4,a5
    1e7c:  03000793           li a5,48
    1e80:  00f70463           beq a4,a5,1e88 <FUN_00001e12+0x76>
    1e84:  57fd                 li a5,-1
    1e86:  a849                 j 1f18 <FUN_00001e12+0x106>
    1e88:  fc843783           ld a5,-56(s0)
    1e8c:  3dc78713           addi a4,a5,988
    1e90:  fe843783           ld a5,-24(s0)
    1e94:  00278693           addi a3,a5,2
    1e98:  fe843783           ld a5,-24(s0)
    1e9c:  0785                 addi a5,a5,1
    1e9e:  0007c783           lbu a5,0(a5)
    1ea2:  2781                 sext.w a5,a5
    1ea4:  863e                 mv a2,a5
    1ea6:  85b6                 mv a1,a3
    1ea8:  853a                 mv a0,a4
    1eaa:  090080ef           jal ra,9f3a <FUN_00009f3a>
    1eae:  fe843783           ld a5,-24(s0)
    1eb2:  0785                 addi a5,a5,1
    1eb4:  0007c783           lbu a5,0(a5)
    1eb8:  873e                 mv a4,a5
    1eba:  fe843783           ld a5,-24(s0)
    1ebe:  97ba                 add a5,a5,a4
    1ec0:  fef43423           sd a5,-24(s0)
    1ec4:  fe843783           ld a5,-24(s0)
    1ec8:  0789                 addi a5,a5,2
    1eca:  fef43423           sd a5,-24(s0)
    1ece:  fe843783           ld a5,-24(s0)
    1ed2:  0007c783           lbu a5,0(a5)
    1ed6:  873e                 mv a4,a5
    1ed8:  478d                 li a5,3
    1eda:  00f70463           beq a4,a5,1ee2 <FUN_00001e12+0xd0>
    1ede:  57fd                 li a5,-1
    1ee0:  a825                 j 1f18 <FUN_00001e12+0x106>
    1ee2:  fc843783           ld a5,-56(s0)
    1ee6:  3ec78593           addi a1,a5,1004
    1eea:  fc843783           ld a5,-56(s0)
    1eee:  57c78793           addi a5,a5,1404
    1ef2:  fe440693           addi a3,s0,-28
    1ef6:  19000713           li a4,400
    1efa:  863e                 mv a2,a5
    1efc:  fe843503           ld a0,-24(s0)
    1f00:  873ff0ef           jal ra,1772 <FUN_00001772>
    1f04:  fe442783           lw a5,-28(s0)
    1f08:  1782                 slli a5,a5,0x20
    1f0a:  9381                 srli a5,a5,0x20
    1f0c:  fe843703           ld a4,-24(s0)
    1f10:  97ba                 add a5,a5,a4
    1f12:  fef43423           sd a5,-24(s0)
    1f16:  4781                 li a5,0
    1f18:  853e                 mv a0,a5
    1f1a:  70e2                 ld ra,56(sp)
    1f1c:  7442                 ld s0,48(sp)
    1f1e:  6121                 addi sp,sp,64
    1f20:  8082                 ret

0000000000001f22 <FUN_00001f22>:
    1f22:  7119                 addi sp,sp,-128
    1f24:  fc86                 sd ra,120(sp)
    1f26:  f8a2                 sd s0,112(sp)
    1f28:  0100                 addi s0,sp,128
    1f2a:  f8a43c23           sd a0,-104(s0)
    1f2e:  f8b43823           sd a1,-112(s0)
    1f32:  87b2                 mv a5,a2
    1f34:  f8f42623           sw a5,-116(s0)
    1f38:  fe042623           sw zero,-20(s0)
    1f3c:  fe043023           sd zero,-32(s0)
    1f40:  fc042e23           sw zero,-36(s0)
    1f44:  fc043823           sd zero,-48(s0)
    1f48:  fc042623           sw zero,-52(s0)
    1f4c:  fc043023           sd zero,-64(s0)
    1f50:  fa042e23           sw zero,-68(s0)
    1f54:  f9043783           ld a5,-112(s0)
    1f58:  faf43823           sd a5,-80(s0)
    1f5c:  fa042623           sw zero,-84(s0)
    1f60:  fb043783           ld a5,-80(s0)
    1f64:  0789                 addi a5,a5,2
    1f66:  0007c783           lbu a5,0(a5)
    1f6a:  2781                 sext.w a5,a5
    1f6c:  0087979b           slliw a5,a5,0x8
    1f70:  0007871b           sext.w a4,a5
    1f74:  fb043783           ld a5,-80(s0)
    1f78:  078d                 addi a5,a5,3
    1f7a:  0007c783           lbu a5,0(a5)
    1f7e:  2781                 sext.w a5,a5
    1f80:  8fd9                 or a5,a5,a4
    1f82:  2781                 sext.w a5,a5
    1f84:  fef42623           sw a5,-20(s0)
    1f88:  fb043783           ld a5,-80(s0)
    1f8c:  0791                 addi a5,a5,4
    1f8e:  faf43823           sd a5,-80(s0)
    1f92:  fb043783           ld a5,-80(s0)
    1f96:  0789                 addi a5,a5,2
    1f98:  0007c783           lbu a5,0(a5)
    1f9c:  2781                 sext.w a5,a5
    1f9e:  0087979b           slliw a5,a5,0x8
    1fa2:  0007871b           sext.w a4,a5
    1fa6:  fb043783           ld a5,-80(s0)
    1faa:  078d                 addi a5,a5,3
    1fac:  0007c783           lbu a5,0(a5)
    1fb0:  2781                 sext.w a5,a5
    1fb2:  8fd9                 or a5,a5,a4
    1fb4:  2781                 sext.w a5,a5
    1fb6:  fcf42e23           sw a5,-36(s0)
    1fba:  fb043783           ld a5,-80(s0)
    1fbe:  0007871b           sext.w a4,a5
    1fc2:  f9843783           ld a5,-104(s0)
    1fc6:  58e7a023           sw a4,1408(a5)
    1fca:  f9843783           ld a5,-104(s0)
    1fce:  fdc42703           lw a4,-36(s0)
    1fd2:  58e7a223           sw a4,1412(a5)
    1fd6:  fb043783           ld a5,-80(s0)
    1fda:  0791                 addi a5,a5,4
    1fdc:  faf43823           sd a5,-80(s0)
    1fe0:  fb043783           ld a5,-80(s0)
    1fe4:  fef43023           sd a5,-32(s0)
    1fe8:  fdc46783           lwu a5,-36(s0)
    1fec:  fb043703           ld a4,-80(s0)
    1ff0:  97ba                 add a5,a5,a4
    1ff2:  faf43823           sd a5,-80(s0)
    1ff6:  fb043783           ld a5,-80(s0)
    1ffa:  0007c783           lbu a5,0(a5)
    1ffe:  873e                 mv a4,a5
    2000:  478d                 li a5,3
    2002:  00f70463           beq a4,a5,200a <FUN_00001f22+0xe8>
    2006:  57fd                 li a5,-1
    2008:  a871                 j 20a4 <FUN_00001f22+0x182>
    200a:  fec42703           lw a4,-20(s0)
    200e:  fdc42783           lw a5,-36(s0)
    2012:  40f707bb           subw a5,a4,a5
    2016:  2781                 sext.w a5,a5
    2018:  37f1                 addiw a5,a5,-4
    201a:  faf42e23           sw a5,-68(s0)
    201e:  fb043783           ld a5,-80(s0)
    2022:  fcf43023           sd a5,-64(s0)
    2026:  fdc42783           lw a5,-36(s0)
    202a:  f9843603           ld a2,-104(s0)
    202e:  85be                 mv a1,a5
    2030:  fe043503           ld a0,-32(s0)
    2034:  96bff0ef           jal ra,199e <FUN_0000199e>
    2038:  87aa                 mv a5,a0
    203a:  faf42623           sw a5,-84(s0)
    203e:  fac42783           lw a5,-84(s0)
    2042:  fe043703           ld a4,-32(s0)
    2046:  97ba                 add a5,a5,a4
    2048:  fcf43823           sd a5,-48(s0)
    204c:  fac42783           lw a5,-84(s0)
    2050:  fdc42703           lw a4,-36(s0)
    2054:  40f707bb           subw a5,a4,a5
    2058:  fcf42623           sw a5,-52(s0)
    205c:  7a5050ef           jal ra,8000 <brom_config_bit_10>
    2060:  87aa                 mv a5,a0
    2062:  873e                 mv a4,a5
    2064:  4785                 li a5,1
    2066:  00f71c63           bne a4,a5,207e <FUN_00001f22+0x15c>
    206a:  fcc42783           lw a5,-52(s0)
    206e:  f9843603           ld a2,-104(s0)
    2072:  85be                 mv a1,a5
    2074:  fd043503           ld a0,-48(s0)
    2078:  bc7ff0ef           jal ra,1c3e <FUN_00001c3e>
    207c:  a811                 j 2090 <FUN_00001f22+0x16e>
    207e:  fcc42783           lw a5,-52(s0)
    2082:  f9843603           ld a2,-104(s0)
    2086:  85be                 mv a1,a5
    2088:  fd043503           ld a0,-48(s0)
    208c:  c29ff0ef           jal ra,1cb4 <FUN_00001cb4>
    2090:  fbc42783           lw a5,-68(s0)
    2094:  f9843603           ld a2,-104(s0)
    2098:  85be                 mv a1,a5
    209a:  fc043503           ld a0,-64(s0)
    209e:  d75ff0ef           jal ra,1e12 <FUN_00001e12>
    20a2:  4781                 li a5,0
    20a4:  853e                 mv a0,a5
    20a6:  70e6                 ld ra,120(sp)
    20a8:  7446                 ld s0,112(sp)
    20aa:  6109                 addi sp,sp,128
    20ac:  8082                 ret

00000000000020ae <FUN_000020ae>:
    20ae:  7139                 addi sp,sp,-64
    20b0:  fc06                 sd ra,56(sp)
    20b2:  f822                 sd s0,48(sp)
    20b4:  0080                 addi s0,sp,64
    20b6:  fca43c23           sd a0,-40(s0)
    20ba:  87ae                 mv a5,a1
    20bc:  fcc43423           sd a2,-56(s0)
    20c0:  fcf42a23           sw a5,-44(s0)
    20c4:  fe042623           sw zero,-20(s0)
    20c8:  5a000613           li a2,1440
    20cc:  4581                 li a1,0
    20ce:  fc843503           ld a0,-56(s0)
    20d2:  795070ef           jal ra,a066 <memset>
    20d6:  fc843783           ld a5,-56(s0)
    20da:  fd843703           ld a4,-40(s0)
    20de:  e798                 sd a4,8(a5)
    20e0:  fc843783           ld a5,-56(s0)
    20e4:  fd442703           lw a4,-44(s0)
    20e8:  cb98                 sw a4,16(a5)
    20ea:  fc843783           ld a5,-56(s0)
    20ee:  01478713           addi a4,a5,20
    20f2:  fc843783           ld a5,-56(s0)
    20f6:  6794                 ld a3,8(a5)
    20f8:  fc843783           ld a5,-56(s0)
    20fc:  4b9c                 lw a5,16(a5)
    20fe:  863e                 mv a2,a5
    2100:  85b6                 mv a1,a3
    2102:  853a                 mv a0,a4
    2104:  e1fff0ef           jal ra,1f22 <FUN_00001f22>
    2108:  87aa                 mv a5,a0
    210a:  fef42623           sw a5,-20(s0)
    210e:  fc843783           ld a5,-56(s0)
    2112:  4705                 li a4,1
    2114:  c398                 sw a4,0(a5)
    2116:  fec42783           lw a5,-20(s0)
    211a:  853e                 mv a0,a5
    211c:  70e2                 ld ra,56(sp)
    211e:  7442                 ld s0,48(sp)
    2120:  6121                 addi sp,sp,64
    2122:  8082                 ret

0000000000002124 <FUN_00002124>:
    2124:  1101                 addi sp,sp,-32
    2126:  ec06                 sd ra,24(sp)
    2128:  e822                 sd s0,16(sp)
    212a:  1000                 addi s0,sp,32
    212c:  fea43423           sd a0,-24(s0)
    2130:  fe843783           ld a5,-24(s0)
    2134:  0007a023           sw zero,0(a5)
    2138:  5a000613           li a2,1440
    213c:  4581                 li a1,0
    213e:  fe843503           ld a0,-24(s0)
    2142:  725070ef           jal ra,a066 <memset>
    2146:  4781                 li a5,0
    2148:  853e                 mv a0,a5
    214a:  60e2                 ld ra,24(sp)
    214c:  6442                 ld s0,16(sp)
    214e:  6105                 addi sp,sp,32
    2150:  8082                 ret

0000000000002152 <FUN_00002152>:
    2152:  7139                 addi sp,sp,-64
    2154:  fc06                 sd ra,56(sp)
    2156:  f822                 sd s0,48(sp)
    2158:  0080                 addi s0,sp,64
    215a:  fca43c23           sd a0,-40(s0)
    215e:  fcb43823           sd a1,-48(s0)
    2162:  87b2                 mv a5,a2
    2164:  fcf42623           sw a5,-52(s0)
    2168:  08000793           li a5,128
    216c:  fef42623           sw a5,-20(s0)
    2170:  fcc42703           lw a4,-52(s0)
    2174:  fec42783           lw a5,-20(s0)
    2178:  2701                 sext.w a4,a4
    217a:  2781                 sext.w a5,a5
    217c:  00f77463           bgeu a4,a5,2184 <FUN_00002152+0x32>
    2180:  57fd                 li a5,-1
    2182:  a831                 j 219e <FUN_00002152+0x4c>
    2184:  fd843783           ld a5,-40(s0)
    2188:  36c78793           addi a5,a5,876
    218c:  fec42703           lw a4,-20(s0)
    2190:  863a                 mv a2,a4
    2192:  85be                 mv a1,a5
    2194:  fd043503           ld a0,-48(s0)
    2198:  5a3070ef           jal ra,9f3a <FUN_00009f3a>
    219c:  4781                 li a5,0
    219e:  853e                 mv a0,a5
    21a0:  70e2                 ld ra,56(sp)
    21a2:  7442                 ld s0,48(sp)
    21a4:  6121                 addi sp,sp,64
    21a6:  8082                 ret

00000000000021a8 <ALIGN>:
    21a8:  7179                 addi sp,sp,-48
    21aa:  f422                 sd s0,40(sp)
    21ac:  1800                 addi s0,sp,48
    21ae:  fca43c23           sd a0,-40(s0)
    21b2:  87ae                 mv a5,a1
    21b4:  fcf42a23           sw a5,-44(s0)
    21b8:  fe043423           sd zero,-24(s0)
    21bc:  fd442783           lw a5,-44(s0)
    21c0:  37fd                 addiw a5,a5,-1
    21c2:  2781                 sext.w a5,a5
    21c4:  02079713           slli a4,a5,0x20
    21c8:  9301                 srli a4,a4,0x20
    21ca:  fd843783           ld a5,-40(s0)
    21ce:  973e                 add a4,a4,a5
    21d0:  fd442783           lw a5,-44(s0)
    21d4:  40f007bb           negw a5,a5
    21d8:  2781                 sext.w a5,a5
    21da:  1782                 slli a5,a5,0x20
    21dc:  9381                 srli a5,a5,0x20
    21de:  8ff9                 and a5,a5,a4
    21e0:  fef43423           sd a5,-24(s0)
    21e4:  fe843783           ld a5,-24(s0)
    21e8:  853e                 mv a0,a5
    21ea:  7422                 ld s0,40(sp)
    21ec:  6145                 addi sp,sp,48
    21ee:  8082                 ret

00000000000021f0 <FUN_000021f0>:
    21f0:  7179                 addi sp,sp,-48
    21f2:  f422                 sd s0,40(sp)
    21f4:  1800                 addi s0,sp,48
    21f6:  fca43c23           sd a0,-40(s0)
    21fa:  87ae                 mv a5,a1
    21fc:  fcf42a23           sw a5,-44(s0)
    2200:  fe042623           sw zero,-20(s0)
    2204:  fd843783           ld a5,-40(s0)
    2208:  439c                 lw a5,0(a5)
    220a:  fef42423           sw a5,-24(s0)
    220e:  4785                 li a5,1
    2210:  fef42623           sw a5,-20(s0)
    2214:  a02d                 j 223e <FUN_000021f0+0x4e>
    2216:  fec42783           lw a5,-20(s0)
    221a:  078a                 slli a5,a5,0x2
    221c:  fd843703           ld a4,-40(s0)
    2220:  97ba                 add a5,a5,a4
    2222:  4398                 lw a4,0(a5)
    2224:  fe842783           lw a5,-24(s0)
    2228:  2781                 sext.w a5,a5
    222a:  00e79863           bne a5,a4,223a <FUN_000021f0+0x4a>
    222e:  fec42783           lw a5,-20(s0)
    2232:  2785                 addiw a5,a5,1
    2234:  fef42623           sw a5,-20(s0)
    2238:  a019                 j 223e <FUN_000021f0+0x4e>
    223a:  4785                 li a5,1
    223c:  a809                 j 224e <FUN_000021f0+0x5e>
    223e:  fec42703           lw a4,-20(s0)
    2242:  fd442783           lw a5,-44(s0)
    2246:  2781                 sext.w a5,a5
    2248:  fcf767e3           bltu a4,a5,2216 <FUN_000021f0+0x26>
    224c:  4781                 li a5,0
    224e:  853e                 mv a0,a5
    2250:  7422                 ld s0,40(sp)
    2252:  6145                 addi sp,sp,48
    2254:  8082                 ret

0000000000002256 <FUN_00002256>:
    2256:  c7010113           addi sp,sp,-912
    225a:  38113423           sd ra,904(sp)
    225e:  38813023           sd s0,896(sp)
    2262:  0f00                 addi s0,sp,912
    2264:  c8a43423           sd a0,-888(s0)
    2268:  c8b43023           sd a1,-896(s0)
    226c:  87b2                 mv a5,a2
    226e:  8736                 mv a4,a3
    2270:  c6f42e23           sw a5,-900(s0)
    2274:  87ba                 mv a5,a4
    2276:  c6f42c23           sw a5,-904(s0)
    227a:  fe042623           sw zero,-20(s0)
    227e:  fe043023           sd zero,-32(s0)
    2282:  c8843783           ld a5,-888(s0)
    2286:  1d47a783           lw a5,468(a5)
    228a:  fcf42e23           sw a5,-36(s0)
    228e:  fc042c23           sw zero,-40(s0)
    2292:  c7c42783           lw a5,-900(s0)
    2296:  0007871b           sext.w a4,a5
    229a:  47fd                 li a5,31
    229c:  00e7f563           bgeu a5,a4,22a6 <FUN_00002256+0x50>
    22a0:  c8043783           ld a5,-896(s0)
    22a4:  e399                 bnez a5,22aa <FUN_00002256+0x54>
    22a6:  57fd                 li a5,-1
    22a8:  a0dd                 j 238e <FUN_00002256+0x138>
    22aa:  c9840793           addi a5,s0,-872
    22ae:  02000593           li a1,32
    22b2:  853e                 mv a0,a5
    22b4:  ef5ff0ef           jal ra,21a8 <ALIGN>
    22b8:  87aa                 mv a5,a0
    22ba:  fef43023           sd a5,-32(s0)
    22be:  c8843783           ld a5,-888(s0)
    22c2:  04178713           addi a4,a5,65
    22c6:  c8843783           ld a5,-888(s0)
    22ca:  1d47a783           lw a5,468(a5)
    22ce:  863e                 mv a2,a5
    22d0:  85ba                 mv a1,a4
    22d2:  fe043503           ld a0,-32(s0)
    22d6:  465070ef           jal ra,9f3a <FUN_00009f3a>
    22da:  fdc46703           lwu a4,-36(s0)
    22de:  fe043783           ld a5,-32(s0)
    22e2:  97ba                 add a5,a5,a4
    22e4:  86be                 mv a3,a5
    22e6:  c8843783           ld a5,-888(s0)
    22ea:  1d878713           addi a4,a5,472
    22ee:  c8843783           ld a5,-888(s0)
    22f2:  3687a783           lw a5,872(a5)
    22f6:  863e                 mv a2,a5
    22f8:  85ba                 mv a1,a4
    22fa:  8536                 mv a0,a3
    22fc:  43f070ef           jal ra,9f3a <FUN_00009f3a>
    2300:  c8843783           ld a5,-888(s0)
    2304:  3687a783           lw a5,872(a5)
    2308:  fdc42703           lw a4,-36(s0)
    230c:  9fb9                 addw a5,a5,a4
    230e:  2781                 sext.w a5,a5
    2310:  fcf42c23           sw a5,-40(s0)
    2314:  fdc42783           lw a5,-36(s0)
    2318:  0017979b           slliw a5,a5,0x1
    231c:  0007871b           sext.w a4,a5
    2320:  fd842783           lw a5,-40(s0)
    2324:  00f77463           bgeu a4,a5,232c <FUN_00002256+0xd6>
    2328:  57fd                 li a5,-1
    232a:  a095                 j 238e <FUN_00002256+0x138>
    232c:  fd842703           lw a4,-40(s0)
    2330:  fe043783           ld a5,-32(s0)
    2334:  97ba                 add a5,a5,a4
    2336:  86be                 mv a3,a5
    2338:  fdc42783           lw a5,-36(s0)
    233c:  0017979b           slliw a5,a5,0x1
    2340:  0007871b           sext.w a4,a5
    2344:  fd842783           lw a5,-40(s0)
    2348:  40f707bb           subw a5,a4,a5
    234c:  2781                 sext.w a5,a5
    234e:  863e                 mv a2,a5
    2350:  09100593           li a1,145
    2354:  8536                 mv a0,a3
    2356:  511070ef           jal ra,a066 <memset>
    235a:  fdc42783           lw a5,-36(s0)
    235e:  0017979b           slliw a5,a5,0x1
    2362:  2781                 sext.w a5,a5
    2364:  c7c42703           lw a4,-900(s0)
    2368:  c8043683           ld a3,-896(s0)
    236c:  863e                 mv a2,a5
    236e:  fe043583           ld a1,-32(s0)
    2372:  4505                 li a0,1
    2374:  95bfe0ef           jal ra,cce <sunxi_sha_calc>
    2378:  87aa                 mv a5,a0
    237a:  fef42623           sw a5,-20(s0)
    237e:  fec42783           lw a5,-20(s0)
    2382:  2781                 sext.w a5,a5
    2384:  0007d463           bgez a5,238c <FUN_00002256+0x136>
    2388:  57fd                 li a5,-1
    238a:  a011                 j 238e <FUN_00002256+0x138>
    238c:  4781                 li a5,0
    238e:  853e                 mv a0,a5
    2390:  38813083           ld ra,904(sp)
    2394:  38013403           ld s0,896(sp)
    2398:  39010113           addi sp,sp,912
    239c:  8082                 ret

000000000000239e <FUN_0000239e>:
    239e:  711d                 addi sp,sp,-96
    23a0:  ec86                 sd ra,88(sp)
    23a2:  e8a2                 sd s0,80(sp)
    23a4:  1080                 addi s0,sp,96
    23a6:  faa43423           sd a0,-88(s0)
    23aa:  87ae                 mv a5,a1
    23ac:  faf42223           sw a5,-92(s0)
    23b0:  fbc40793           addi a5,s0,-68
    23b4:  fef43423           sd a5,-24(s0)
    23b8:  fc040793           addi a5,s0,-64
    23bc:  853e                 mv a0,a5
    23be:  e8dfe0ef           jal ra,124a <FUN_0000124a>
    23c2:  fc044783           lbu a5,-64(s0)
    23c6:  873e                 mv a4,a5
    23c8:  47f5                 li a5,29
    23ca:  02f777bb           remuw a5,a4,a5
    23ce:  0ff7f793           andi a5,a5,255
    23d2:  873e                 mv a4,a5
    23d4:  fc040793           addi a5,s0,-64
    23d8:  97ba                 add a5,a5,a4
    23da:  fef43023           sd a5,-32(s0)
    23de:  fe043783           ld a5,-32(s0)
    23e2:  0007c703           lbu a4,0(a5)
    23e6:  fe843783           ld a5,-24(s0)
    23ea:  00e78023           sb a4,0(a5)
    23ee:  fe843783           ld a5,-24(s0)
    23f2:  0785                 addi a5,a5,1
    23f4:  fe043703           ld a4,-32(s0)
    23f8:  00174703           lbu a4,1(a4)
    23fc:  00e78023           sb a4,0(a5)
    2400:  fe843783           ld a5,-24(s0)
    2404:  0789                 addi a5,a5,2
    2406:  fe043703           ld a4,-32(s0)
    240a:  00274703           lbu a4,2(a4)
    240e:  00e78023           sb a4,0(a5)
    2412:  fe843783           ld a5,-24(s0)
    2416:  078d                 addi a5,a5,3
    2418:  fe043703           ld a4,-32(s0)
    241c:  00374703           lbu a4,3(a4)
    2420:  00e78023           sb a4,0(a5)
    2424:  fbc42783           lw a5,-68(s0)
    2428:  873e                 mv a4,a5
    242a:  3e800793           li a5,1000
    242e:  02f777bb           remuw a5,a4,a5
    2432:  2781                 sext.w a5,a5
    2434:  3e87879b           addiw a5,a5,1000
    2438:  2781                 sext.w a5,a5
    243a:  faf42e23           sw a5,-68(s0)
    243e:  fbc42783           lw a5,-68(s0)
    2442:  1782                 slli a5,a5,0x20
    2444:  9381                 srli a5,a5,0x20
    2446:  853e                 mv a0,a5
    2448:  53d070ef           jal ra,a184 <udelay>
    244c:  fa442783           lw a5,-92(s0)
    2450:  85be                 mv a1,a5
    2452:  fa843503           ld a0,-88(s0)
    2456:  8b4ff0ef           jal ra,150a <FUN_0000150a>
    245a:  0001                 nop
    245c:  60e6                 ld ra,88(sp)
    245e:  6446                 ld s0,80(sp)
    2460:  6125                 addi sp,sp,96
    2462:  8082                 ret

0000000000002464 <FUN_00002464>:
    2464:  7159                 addi sp,sp,-112
    2466:  f486                 sd ra,104(sp)
    2468:  f0a2                 sd s0,96(sp)
    246a:  1880                 addi s0,sp,112
    246c:  f8a43c23           sd a0,-104(s0)
    2470:  02000793           li a5,32
    2474:  fef42423           sw a5,-24(s0)
    2478:  fe842783           lw a5,-24(s0)
    247c:  0027d79b           srliw a5,a5,0x2
    2480:  fef42223           sw a5,-28(s0)
    2484:  fe042623           sw zero,-20(s0)
    2488:  fc040793           addi a5,s0,-64
    248c:  02000613           li a2,32
    2490:  4581                 li a1,0
    2492:  853e                 mv a0,a5
    2494:  3d3070ef           jal ra,a066 <memset>
    2498:  fc040793           addi a5,s0,-64
    249c:  02000593           li a1,32
    24a0:  853e                 mv a0,a5
    24a2:  ef5fe0ef           jal ra,1396 <FUN_00001396>
    24a6:  fe442703           lw a4,-28(s0)
    24aa:  fc040793           addi a5,s0,-64
    24ae:  85ba                 mv a1,a4
    24b0:  853e                 mv a0,a5
    24b2:  d3fff0ef           jal ra,21f0 <FUN_000021f0>
    24b6:  87aa                 mv a5,a0
    24b8:  fef42623           sw a5,-20(s0)
    24bc:  fec42783           lw a5,-20(s0)
    24c0:  2781                 sext.w a5,a5
    24c2:  eba9                 bnez a5,2514 <FUN_00002464+0xb0>
    24c4:  3cd050ef           jal ra,8090 <brom_config_bit_12>
    24c8:  87aa                 mv a5,a0
    24ca:  cf85                 beqz a5,2502 <FUN_00002464+0x9e>
    24cc:  fc040793           addi a5,s0,-64
    24d0:  02000613           li a2,32
    24d4:  4581                 li a1,0
    24d6:  853e                 mv a0,a5
    24d8:  38f070ef           jal ra,a066 <memset>
    24dc:  fe442703           lw a4,-28(s0)
    24e0:  fc040793           addi a5,s0,-64
    24e4:  85ba                 mv a1,a4
    24e6:  853e                 mv a0,a5
    24e8:  eb7ff0ef           jal ra,239e <FUN_0000239e>
    24ec:  fe442703           lw a4,-28(s0)
    24f0:  fc040793           addi a5,s0,-64
    24f4:  85ba                 mv a1,a4
    24f6:  853e                 mv a0,a5
    24f8:  cf9ff0ef           jal ra,21f0 <FUN_000021f0>
    24fc:  87aa                 mv a5,a0
    24fe:  fef42623           sw a5,-20(s0)
    2502:  fec42783           lw a5,-20(s0)
    2506:  2781                 sext.w a5,a5
    2508:  e791                 bnez a5,2514 <FUN_00002464+0xb0>
    250a:  4525                 li a0,9
    250c:  cb1fd0ef           jal ra,1bc <FUN_000001bc>
    2510:  4789                 li a5,2
    2512:  a889                 j 2564 <FUN_00002464+0x100>
    2514:  fe842703           lw a4,-24(s0)
    2518:  fa040793           addi a5,s0,-96
    251c:  4681                 li a3,0
    251e:  863a                 mv a2,a4
    2520:  85be                 mv a1,a5
    2522:  f9843503           ld a0,-104(s0)
    2526:  d31ff0ef           jal ra,2256 <FUN_00002256>
    252a:  fe842683           lw a3,-24(s0)
    252e:  fc040713           addi a4,s0,-64
    2532:  fa040793           addi a5,s0,-96
    2536:  8636                 mv a2,a3
    2538:  85ba                 mv a1,a4
    253a:  853e                 mv a0,a5
    253c:  367070ef           jal ra,a0a2 <FUN_0000a0a2>
    2540:  87aa                 mv a5,a0
    2542:  fef42623           sw a5,-20(s0)
    2546:  fec42783           lw a5,-20(s0)
    254a:  2781                 sext.w a5,a5
    254c:  c781                 beqz a5,2554 <FUN_00002464+0xf0>
    254e:  4529                 li a0,10
    2550:  c6dfd0ef           jal ra,1bc <FUN_000001bc>
    2554:  fec42783           lw a5,-20(s0)
    2558:  2781                 sext.w a5,a5
    255a:  0017b793           seqz a5,a5
    255e:  0ff7f793           andi a5,a5,255
    2562:  2781                 sext.w a5,a5
    2564:  853e                 mv a0,a5
    2566:  70a6                 ld ra,104(sp)
    2568:  7406                 ld s0,96(sp)
    256a:  6165                 addi sp,sp,112
    256c:  8082                 ret

000000000000256e <FUN_0000256e>:
    256e:  81010113           addi sp,sp,-2032
    2572:  7e113423           sd ra,2024(sp)
    2576:  7e813023           sd s0,2016(sp)
    257a:  7f010413           addi s0,sp,2032
    257e:  b6010113           addi sp,sp,-1184
    2582:  77fd                 lui a5,0xfffff
    2584:  ff040713           addi a4,s0,-16
    2588:  97ba                 add a5,a5,a4
    258a:  38a7b423           sd a0,904(a5) # fffffffffffff388 <gpio_get_boot_device+0
    258e:  fe043423           sd zero,-24(s0)
    2592:  02000793           li a5,32
    2596:  fef42223           sw a5,-28(s0)
    259a:  fe042023           sw zero,-32(s0)
    259e:  77fd                 lui a5,0xfffff
    25a0:  3d078793           addi a5,a5,976 # fffffffffffff3d0 <gpio_get_boot_device+
    25a4:  ff040713           addi a4,s0,-16
    25a8:  973e                 add a4,a4,a5
    25aa:  6785                 lui a5,0x1
    25ac:  c2078613           addi a2,a5,-992 # c20 <FUN_00000bbe+0x62>
    25b0:  4581                 li a1,0
    25b2:  853a                 mv a0,a4
    25b4:  2b3070ef           jal ra,a066 <memset>
    25b8:  77fd                 lui a5,0xfffff
    25ba:  3b078793           addi a5,a5,944 # fffffffffffff3b0 <gpio_get_boot_device+
    25be:  ff040713           addi a4,s0,-16
    25c2:  97ba                 add a5,a5,a4
    25c4:  02000613           li a2,32
    25c8:  4581                 li a1,0
    25ca:  853e                 mv a0,a5
    25cc:  29b070ef           jal ra,a066 <memset>
    25d0:  77fd                 lui a5,0xfffff
    25d2:  39078793           addi a5,a5,912 # fffffffffffff390 <gpio_get_boot_device+
    25d6:  ff040713           addi a4,s0,-16
    25da:  97ba                 add a5,a5,a4
    25dc:  02000613           li a2,32
    25e0:  4581                 li a1,0
    25e2:  853e                 mv a0,a5
    25e4:  283070ef           jal ra,a066 <memset>
    25e8:  77fd                 lui a5,0xfffff
    25ea:  3d078793           addi a5,a5,976 # fffffffffffff3d0 <gpio_get_boot_device+
    25ee:  ff040713           addi a4,s0,-16
    25f2:  97ba                 add a5,a5,a4
    25f4:  02000593           li a1,32
    25f8:  853e                 mv a0,a5
    25fa:  bafff0ef           jal ra,21a8 <ALIGN>
    25fe:  87aa                 mv a5,a0
    2600:  fef43423           sd a5,-24(s0)
    2604:  77fd                 lui a5,0xfffff
    2606:  ff040713           addi a4,s0,-16
    260a:  97ba                 add a5,a5,a4
    260c:  3887b783           ld a5,904(a5) # fffffffffffff388 <gpio_get_boot_device+0
    2610:  5987a783           lw a5,1432(a5)
    2614:  873e                 mv a4,a5
    2616:  6785                 lui a5,0x1
    2618:  c0078793           addi a5,a5,-1024 # c00 <FUN_00000bbe+0x42>
    261c:  00f71463           bne a4,a5,2624 <FUN_0000256e+0xb6>
    2620:  4781                 li a5,0
    2622:  a231                 j 272e <FUN_0000256e+0x1c0>
    2624:  77fd                 lui a5,0xfffff
    2626:  ff040713           addi a4,s0,-16
    262a:  97ba                 add a5,a5,a4
    262c:  3887b783           ld a5,904(a5) # fffffffffffff388 <gpio_get_boot_device+0
    2630:  5947a783           lw a5,1428(a5)
    2634:  1782                 slli a5,a5,0x20
    2636:  9381                 srli a5,a5,0x20
    2638:  873e                 mv a4,a5
    263a:  77fd                 lui a5,0xfffff
    263c:  ff040693           addi a3,s0,-16
    2640:  97b6                 add a5,a5,a3
    2642:  3887b783           ld a5,904(a5) # fffffffffffff388 <gpio_get_boot_device+0
    2646:  5987a783           lw a5,1432(a5)
    264a:  863e                 mv a2,a5
    264c:  85ba                 mv a1,a4
    264e:  fe843503           ld a0,-24(s0)
    2652:  0e9070ef           jal ra,9f3a <FUN_00009f3a>
    2656:  77fd                 lui a5,0xfffff
    2658:  ff040713           addi a4,s0,-16
    265c:  97ba                 add a5,a5,a4
    265e:  3887b783           ld a5,904(a5) # fffffffffffff388 <gpio_get_boot_device+0
    2662:  5987a603           lw a2,1432(a5)
    2666:  77fd                 lui a5,0xfffff
    2668:  3b078793           addi a5,a5,944 # fffffffffffff3b0 <gpio_get_boot_device+
    266c:  ff040713           addi a4,s0,-16
    2670:  97ba                 add a5,a5,a4
    2672:  02000713           li a4,32
    2676:  86be                 mv a3,a5
    2678:  fe843583           ld a1,-24(s0)
    267c:  4505                 li a0,1
    267e:  e50fe0ef           jal ra,cce <sunxi_sha_calc>
    2682:  77fd                 lui a5,0xfffff
    2684:  ff040713           addi a4,s0,-16
    2688:  97ba                 add a5,a5,a4
    268a:  3887b783           ld a5,904(a5) # fffffffffffff388 <gpio_get_boot_device+0
    268e:  1d878593           addi a1,a5,472
    2692:  77fd                 lui a5,0xfffff
    2694:  ff040713           addi a4,s0,-16
    2698:  97ba                 add a5,a5,a4
    269a:  3887b783           ld a5,904(a5) # fffffffffffff388 <gpio_get_boot_device+0
    269e:  3687a603           lw a2,872(a5)
    26a2:  77fd                 lui a5,0xfffff
    26a4:  ff040713           addi a4,s0,-16
    26a8:  97ba                 add a5,a5,a4
    26aa:  3887b783           ld a5,904(a5) # fffffffffffff388 <gpio_get_boot_device+0
    26ae:  40078693           addi a3,a5,1024
    26b2:  77fd                 lui a5,0xfffff
    26b4:  ff040713           addi a4,s0,-16
    26b8:  97ba                 add a5,a5,a4
    26ba:  3887b783           ld a5,904(a5) # fffffffffffff388 <gpio_get_boot_device+0
    26be:  5907a703           lw a4,1424(a5)
    26c2:  77fd                 lui a5,0xfffff
    26c4:  ff040513           addi a0,s0,-16
    26c8:  97aa                 add a5,a5,a0
    26ca:  3887b783           ld a5,904(a5) # fffffffffffff388 <gpio_get_boot_device+0
    26ce:  04178813           addi a6,a5,65
    26d2:  fe442503           lw a0,-28(s0)
    26d6:  77fd                 lui a5,0xfffff
    26d8:  39078793           addi a5,a5,912 # fffffffffffff390 <gpio_get_boot_device+
    26dc:  ff040893           addi a7,s0,-16
    26e0:  97c6                 add a5,a5,a7
    26e2:  88c2                 mv a7,a6
    26e4:  882a                 mv a6,a0
    26e6:  6505                 lui a0,0x1
    26e8:  80050513           addi a0,a0,-2048 # 800 <FUN_00000660+0x1a0>
    26ec:  841fe0ef           jal ra,f2c <FUN_00000f2c>
    26f0:  77fd                 lui a5,0xfffff
    26f2:  39078793           addi a5,a5,912 # fffffffffffff390 <gpio_get_boot_device+
    26f6:  ff040713           addi a4,s0,-16
    26fa:  973e                 add a4,a4,a5
    26fc:  77fd                 lui a5,0xfffff
    26fe:  3b078793           addi a5,a5,944 # fffffffffffff3b0 <gpio_get_boot_device+
    2702:  ff040693           addi a3,s0,-16
    2706:  97b6                 add a5,a5,a3
    2708:  02000613           li a2,32
    270c:  85ba                 mv a1,a4
    270e:  853e                 mv a0,a5
    2710:  193070ef           jal ra,a0a2 <FUN_0000a0a2>
    2714:  87aa                 mv a5,a0
    2716:  fef42023           sw a5,-32(s0)
    271a:  fe042783           lw a5,-32(s0)
    271e:  2781                 sext.w a5,a5
    2720:  c791                 beqz a5,272c <FUN_0000256e+0x1be>
    2722:  4545                 li a0,17
    2724:  a99fd0ef           jal ra,1bc <FUN_000001bc>
    2728:  4781                 li a5,0
    272a:  a011                 j 272e <FUN_0000256e+0x1c0>
    272c:  4785                 li a5,1
    272e:  853e                 mv a0,a5
    2730:  4a010113           addi sp,sp,1184
    2734:  7e813083           ld ra,2024(sp)
    2738:  7e013403           ld s0,2016(sp)
    273c:  7f010113           addi sp,sp,2032
    2740:  8082                 ret

0000000000002742 <FUN_00002742>:
    2742:  7179                 addi sp,sp,-48
    2744:  f406                 sd ra,40(sp)
    2746:  f022                 sd s0,32(sp)
    2748:  1800                 addi s0,sp,48
    274a:  fca43c23           sd a0,-40(s0)
    274e:  fe042623           sw zero,-20(s0)
    2752:  fe042423           sw zero,-24(s0)
    2756:  fd843503           ld a0,-40(s0)
    275a:  d0bff0ef           jal ra,2464 <FUN_00002464>
    275e:  87aa                 mv a5,a0
    2760:  fef42623           sw a5,-20(s0)
    2764:  fec42783           lw a5,-20(s0)
    2768:  2781                 sext.w a5,a5
    276a:  e399                 bnez a5,2770 <FUN_00002742+0x2e>
    276c:  4781                 li a5,0
    276e:  a01d                 j 2794 <FUN_00002742+0x52>
    2770:  fd843503           ld a0,-40(s0)
    2774:  dfbff0ef           jal ra,256e <FUN_0000256e>
    2778:  87aa                 mv a5,a0
    277a:  fef42423           sw a5,-24(s0)
    277e:  fec42783           lw a5,-20(s0)
    2782:  2781                 sext.w a5,a5
    2784:  c799                 beqz a5,2792 <FUN_00002742+0x50>
    2786:  fe842783           lw a5,-24(s0)
    278a:  2781                 sext.w a5,a5
    278c:  c399                 beqz a5,2792 <FUN_00002742+0x50>
    278e:  4785                 li a5,1
    2790:  a011                 j 2794 <FUN_00002742+0x52>
    2792:  4781                 li a5,0
    2794:  853e                 mv a0,a5
    2796:  70a2                 ld ra,40(sp)
    2798:  7402                 ld s0,32(sp)
    279a:  6145                 addi sp,sp,48
    279c:  8082                 ret

000000000000279e <FUN_0000279e>:
    279e:  714d                 addi sp,sp,-336
    27a0:  e686                 sd ra,328(sp)
    27a2:  e2a2                 sd s0,320(sp)
    27a4:  0a80                 addi s0,sp,336
    27a6:  eca43423           sd a0,-312(s0)
    27aa:  ecb43023           sd a1,-320(s0)
    27ae:  87b2                 mv a5,a2
    27b0:  eaf42e23           sw a5,-324(s0)
    27b4:  fe042623           sw zero,-20(s0)
    27b8:  ec043783           ld a5,-320(s0)
    27bc:  8bfd                 andi a5,a5,31
    27be:  c399                 beqz a5,27c4 <FUN_0000279e+0x26>
    27c0:  57fd                 li a5,-1
    27c2:  a895                 j 2836 <FUN_0000279e+0x98>
    27c4:  f6040793           addi a5,s0,-160
    27c8:  08800613           li a2,136
    27cc:  4581                 li a1,0
    27ce:  853e                 mv a0,a5
    27d0:  097070ef           jal ra,a066 <memset>
    27d4:  ed840793           addi a5,s0,-296
    27d8:  08800613           li a2,136
    27dc:  4581                 li a1,0
    27de:  853e                 mv a0,a5
    27e0:  087070ef           jal ra,a066 <memset>
    27e4:  f6040793           addi a5,s0,-160
    27e8:  08000613           li a2,128
    27ec:  85be                 mv a1,a5
    27ee:  ec843503           ld a0,-312(s0)
    27f2:  961ff0ef           jal ra,2152 <FUN_00002152>
    27f6:  ed840693           addi a3,s0,-296
    27fa:  ebc42783           lw a5,-324(s0)
    27fe:  08800713           li a4,136
    2802:  863e                 mv a2,a5
    2804:  ec043583           ld a1,-320(s0)
    2808:  4505                 li a0,1
    280a:  cc4fe0ef           jal ra,cce <sunxi_sha_calc>
    280e:  ed840713           addi a4,s0,-296
    2812:  f6040793           addi a5,s0,-160
    2816:  02000613           li a2,32
    281a:  85ba                 mv a1,a4
    281c:  853e                 mv a0,a5
    281e:  085070ef           jal ra,a0a2 <FUN_0000a0a2>
    2822:  87aa                 mv a5,a0
    2824:  fef42623           sw a5,-20(s0)
    2828:  fec42783           lw a5,-20(s0)
    282c:  2781                 sext.w a5,a5
    282e:  e399                 bnez a5,2834 <FUN_0000279e+0x96>
    2830:  4785                 li a5,1
    2832:  a011                 j 2836 <FUN_0000279e+0x98>
    2834:  4781                 li a5,0
    2836:  853e                 mv a0,a5
    2838:  60b6                 ld ra,328(sp)
    283a:  6416                 ld s0,320(sp)
    283c:  6171                 addi sp,sp,336
    283e:  8082                 ret

0000000000002840 <FUN_00002840>:
    2840:  1101                 addi sp,sp,-32
    2842:  ec06                 sd ra,24(sp)
    2844:  e822                 sd s0,16(sp)
    2846:  1000                 addi s0,sp,32
    2848:  fe042223           sw zero,-28(s0)
    284c:  4785                 li a5,1
    284e:  fef42023           sw a5,-32(s0)
    2852:  fe042783           lw a5,-32(s0)
    2856:  fef42623           sw a5,-20(s0)
    285a:  a885                 j 28ca <FUN_00002840+0x8a>
    285c:  fec42783           lw a5,-20(s0)
    2860:  0337879b           addiw a5,a5,51
    2864:  2781                 sext.w a5,a5
    2866:  0027979b           slliw a5,a5,0x2
    286a:  2781                 sext.w a5,a5
    286c:  853e                 mv a0,a5
    286e:  4f8050ef           jal ra,7d66 <sid_readl>
    2872:  87aa                 mv a5,a0
    2874:  fef42423           sw a5,-24(s0)
    2878:  fe842783           lw a5,-24(s0)
    287c:  2781                 sext.w a5,a5
    287e:  c3a9                 beqz a5,28c0 <FUN_00002840+0x80>
    2880:  a821                 j 2898 <FUN_00002840+0x58>
    2882:  fe442783           lw a5,-28(s0)
    2886:  2785                 addiw a5,a5,1
    2888:  fef42223           sw a5,-28(s0)
    288c:  fe842783           lw a5,-24(s0)
    2890:  0017d79b           srliw a5,a5,0x1
    2894:  fef42423           sw a5,-24(s0)
    2898:  fe842783           lw a5,-24(s0)
    289c:  2781                 sext.w a5,a5
    289e:  f3f5                 bnez a5,2882 <FUN_00002840+0x42>
    28a0:  fec42703           lw a4,-20(s0)
    28a4:  080007b7           lui a5,0x8000
    28a8:  37fd                 addiw a5,a5,-1
    28aa:  9fb9                 addw a5,a5,a4
    28ac:  2781                 sext.w a5,a5
    28ae:  0057979b           slliw a5,a5,0x5
    28b2:  2781                 sext.w a5,a5
    28b4:  fe442703           lw a4,-28(s0)
    28b8:  9fb9                 addw a5,a5,a4
    28ba:  fef42423           sw a5,-24(s0)
    28be:  a811                 j 28d2 <FUN_00002840+0x92>
    28c0:  fec42783           lw a5,-20(s0)
    28c4:  37fd                 addiw a5,a5,-1
    28c6:  fef42623           sw a5,-20(s0)
    28ca:  fec42783           lw a5,-20(s0)
    28ce:  2781                 sext.w a5,a5
    28d0:  f7d1                 bnez a5,285c <FUN_00002840+0x1c>
    28d2:  fe842783           lw a5,-24(s0)
    28d6:  853e                 mv a0,a5
    28d8:  60e2                 ld ra,24(sp)
    28da:  6442                 ld s0,16(sp)
    28dc:  6105                 addi sp,sp,32
    28de:  8082                 ret

00000000000028e0 <FUN_000028e0>:
    28e0:  7179                 addi sp,sp,-48
    28e2:  f406                 sd ra,40(sp)
    28e4:  f022                 sd s0,32(sp)
    28e6:  1800                 addi s0,sp,48
    28e8:  fca43c23           sd a0,-40(s0)
    28ec:  fe042623           sw zero,-20(s0)
    28f0:  fe042423           sw zero,-24(s0)
    28f4:  fd843783           ld a5,-40(s0)
    28f8:  e399                 bnez a5,28fe <FUN_000028e0+0x1e>
    28fa:  57fd                 li a5,-1
    28fc:  a0b1                 j 2948 <FUN_000028e0+0x68>
    28fe:  fd843783           ld a5,-40(s0)
    2902:  3ec7a783           lw a5,1004(a5) # 80003ec <gpio_get_boot_device+0x7ff2056
    2906:  fef42423           sw a5,-24(s0)
    290a:  fe842783           lw a5,-24(s0)
    290e:  0007871b           sext.w a4,a5
    2912:  47fd                 li a5,31
    2914:  00e7f763           bgeu a5,a4,2922 <FUN_000028e0+0x42>
    2918:  4549                 li a0,18
    291a:  8a3fd0ef           jal ra,1bc <FUN_000001bc>
    291e:  57fd                 li a5,-1
    2920:  a025                 j 2948 <FUN_000028e0+0x68>
    2922:  f1fff0ef           jal ra,2840 <FUN_00002840>
    2926:  87aa                 mv a5,a0
    2928:  fef42623           sw a5,-20(s0)
    292c:  fe842703           lw a4,-24(s0)
    2930:  fec42783           lw a5,-20(s0)
    2934:  2701                 sext.w a4,a4
    2936:  2781                 sext.w a5,a5
    2938:  00f76463           bltu a4,a5,2940 <FUN_000028e0+0x60>
    293c:  4781                 li a5,0
    293e:  a029                 j 2948 <FUN_000028e0+0x68>
    2940:  454d                 li a0,19
    2942:  87bfd0ef           jal ra,1bc <FUN_000001bc>
    2946:  57fd                 li a5,-1
    2948:  853e                 mv a0,a5
    294a:  70a2                 ld ra,40(sp)
    294c:  7402                 ld s0,32(sp)
    294e:  6145                 addi sp,sp,48
    2950:  8082                 ret

0000000000002952 <boot_verify_image>:
    2952:  9d010113           addi sp,sp,-1584
    2956:  62113423           sd ra,1576(sp)
    295a:  62813023           sd s0,1568(sp)
    295e:  63010413           addi s0,sp,1584
    2962:  9ca43c23           sd a0,-1576(s0)
    2966:  87ae                 mv a5,a1
    2968:  9cf42a23           sw a5,-1580(s0)
    296c:  fe042623           sw zero,-20(s0)
    2970:  fa043423           sd zero,-88(s0)
    2974:  fa042223           sw zero,-92(s0)
    2978:  fe042423           sw zero,-24(s0)
    297c:  4521                 li a0,8
    297e:  8edfd0ef           jal ra,26a <FUN_0000026a>
    2982:  4505                 li a0,1
    2984:  88bfd0ef           jal ra,20e <FUN_0000020e>
    2988:  fb040793           addi a5,s0,-80
    298c:  03800613           li a2,56
    2990:  4581                 li a1,0
    2992:  853e                 mv a0,a5
    2994:  6d2070ef           jal ra,a066 <memset>
    2998:  a0040793           addi a5,s0,-1536
    299c:  5a000613           li a2,1440
    29a0:  4581                 li a1,0
    29a2:  853e                 mv a0,a5
    29a4:  6c2070ef           jal ra,a066 <memset>
    29a8:  9e040793           addi a5,s0,-1568
    29ac:  02000613           li a2,32
    29b0:  4581                 li a1,0
    29b2:  853e                 mv a0,a5
    29b4:  6b2070ef           jal ra,a066 <memset>
    29b8:  4509                 li a0,2
    29ba:  855fd0ef           jal ra,20e <FUN_0000020e>
    29be:  fb040793           addi a5,s0,-80
    29c2:  85be                 mv a1,a5
    29c4:  9d843503           ld a0,-1576(s0)
    29c8:  8fffd0ef           jal ra,2c6 <FUN_000002c6>
    29cc:  87aa                 mv a5,a0
    29ce:  fef42623           sw a5,-20(s0)
    29d2:  fec42783           lw a5,-20(s0)
    29d6:  2781                 sext.w a5,a5
    29d8:  0007d663           bgez a5,29e4 <boot_verify_image+0x92>
    29dc:  4505                 li a0,1
    29de:  fdefd0ef           jal ra,1bc <FUN_000001bc>
    29e2:  aa95                 j 2b56 <boot_verify_image+0x204>
    29e4:  4515                 li a0,5
    29e6:  829fd0ef           jal ra,20e <FUN_0000020e>
    29ea:  9e040713           addi a4,s0,-1568
    29ee:  fa440693           addi a3,s0,-92
    29f2:  fa840793           addi a5,s0,-88
    29f6:  fb040513           addi a0,s0,-80
    29fa:  863e                 mv a2,a5
    29fc:  67c1                 lui a5,0x10
    29fe:  10178593           addi a1,a5,257 # 10101 <gpio_get_boot_device+0x1d6b>
    2a02:  94dfd0ef           jal ra,34e <FUN_0000034e>
    2a06:  87aa                 mv a5,a0
    2a08:  fef42623           sw a5,-20(s0)
    2a0c:  fec42783           lw a5,-20(s0)
    2a10:  2781                 sext.w a5,a5
    2a12:  0007d663           bgez a5,2a1e <boot_verify_image+0xcc>
    2a16:  450d                 li a0,3
    2a18:  fa4fd0ef           jal ra,1bc <FUN_000001bc>
    2a1c:  aa2d                 j 2b56 <boot_verify_image+0x204>
    2a1e:  4519                 li a0,6
    2a20:  feefd0ef           jal ra,20e <FUN_0000020e>
    2a24:  fa843783           ld a5,-88(s0)
    2a28:  fa442703           lw a4,-92(s0)
    2a2c:  a0040693           addi a3,s0,-1536
    2a30:  8636                 mv a2,a3
    2a32:  85ba                 mv a1,a4
    2a34:  853e                 mv a0,a5
    2a36:  e78ff0ef           jal ra,20ae <FUN_000020ae>
    2a3a:  87aa                 mv a5,a0
    2a3c:  fef42623           sw a5,-20(s0)
    2a40:  fec42783           lw a5,-20(s0)
    2a44:  2781                 sext.w a5,a5
    2a46:  0007d663           bgez a5,2a52 <boot_verify_image+0x100>
    2a4a:  4511                 li a0,4
    2a4c:  f70fd0ef           jal ra,1bc <FUN_000001bc>
    2a50:  a219                 j 2b56 <boot_verify_image+0x204>
    2a52:  451d                 li a0,7
    2a54:  fbafd0ef           jal ra,20e <FUN_0000020e>
    2a58:  a0040793           addi a5,s0,-1536
    2a5c:  853e                 mv a0,a5
    2a5e:  ce5ff0ef           jal ra,2742 <FUN_00002742>
    2a62:  87aa                 mv a5,a0
    2a64:  fef42623           sw a5,-20(s0)
    2a68:  fec42783           lw a5,-20(s0)
    2a6c:  2781                 sext.w a5,a5
    2a6e:  0ef05163           blez a5,2b50 <boot_verify_image+0x1fe>
    2a72:  4521                 li a0,8
    2a74:  f9afd0ef           jal ra,20e <FUN_0000020e>
    2a78:  588050ef           jal ra,8000 <brom_config_bit_10>
    2a7c:  87aa                 mv a5,a0
    2a7e:  873e                 mv a4,a5
    2a80:  4785                 li a5,1
    2a82:  00f70f63           beq a4,a5,2aa0 <boot_verify_image+0x14e>
    2a86:  a0040793           addi a5,s0,-1536
    2a8a:  853e                 mv a0,a5
    2a8c:  e55ff0ef           jal ra,28e0 <FUN_000028e0>
    2a90:  87aa                 mv a5,a0
    2a92:  fef42623           sw a5,-20(s0)
    2a96:  fec42783           lw a5,-20(s0)
    2a9a:  2781                 sext.w a5,a5
    2a9c:  0a07cc63           bltz a5,2b54 <boot_verify_image+0x202>
    2aa0:  451d                 li a0,7
    2aa2:  f6cfd0ef           jal ra,20e <FUN_0000020e>
    2aa6:  9e040713           addi a4,s0,-1568
    2aaa:  fa440693           addi a3,s0,-92
    2aae:  fa840793           addi a5,s0,-88
    2ab2:  fb040513           addi a0,s0,-80
    2ab6:  863e                 mv a2,a5
    2ab8:  67c1                 lui a5,0x10
    2aba:  20278593           addi a1,a5,514 # 10202 <gpio_get_boot_device+0x1e6c>
    2abe:  891fd0ef           jal ra,34e <FUN_0000034e>
    2ac2:  87aa                 mv a5,a0
    2ac4:  fef42623           sw a5,-20(s0)
    2ac8:  fec42783           lw a5,-20(s0)
    2acc:  2781                 sext.w a5,a5
    2ace:  0007d663           bgez a5,2ada <boot_verify_image+0x188>
    2ad2:  4515                 li a0,5
    2ad4:  ee8fd0ef           jal ra,1bc <FUN_000001bc>
    2ad8:  a8bd                 j 2b56 <boot_verify_image+0x204>
    2ada:  4529                 li a0,10
    2adc:  f32fd0ef           jal ra,20e <FUN_0000020e>
    2ae0:  fa843703           ld a4,-88(s0)
    2ae4:  fa442683           lw a3,-92(s0)
    2ae8:  a0040793           addi a5,s0,-1536
    2aec:  8636                 mv a2,a3
    2aee:  85ba                 mv a1,a4
    2af0:  853e                 mv a0,a5
    2af2:  cadff0ef           jal ra,279e <FUN_0000279e>
    2af6:  87aa                 mv a5,a0
    2af8:  fef42623           sw a5,-20(s0)
    2afc:  fec42783           lw a5,-20(s0)
    2b00:  2781                 sext.w a5,a5
    2b02:  00f04663           bgtz a5,2b0e <boot_verify_image+0x1bc>
    2b06:  4551                 li a0,20
    2b08:  eb4fd0ef           jal ra,1bc <FUN_000001bc>
    2b0c:  a0a9                 j 2b56 <boot_verify_image+0x204>
    2b0e:  9e040713           addi a4,s0,-1568
    2b12:  fb040793           addi a5,s0,-80
    2b16:  85ba                 mv a1,a4
    2b18:  853e                 mv a0,a5
    2b1a:  965fd0ef           jal ra,47e <FUN_0000047e>
    2b1e:  452d                 li a0,11
    2b20:  eeefd0ef           jal ra,20e <FUN_0000020e>
    2b24:  9e040793           addi a5,s0,-1568
    2b28:  853e                 mv a0,a5
    2b2a:  a0dfd0ef           jal ra,536 <FUN_00000536>
    2b2e:  87aa                 mv a5,a0
    2b30:  fef42423           sw a5,-24(s0)
    2b34:  9d442783           lw a5,-1580(s0)
    2b38:  2781                 sext.w a5,a5
    2b3a:  cb89                 beqz a5,2b4c <boot_verify_image+0x1fa>
    2b3c:  fe842783           lw a5,-24(s0)
    2b40:  0fc00593           li a1,252
    2b44:  853e                 mv a0,a5
    2b46:  05e070ef           jal ra,9ba4 <boot_finish>
    2b4a:  a031                 j 2b56 <boot_verify_image+0x204>
    2b4c:  4785                 li a5,1
    2b4e:  a029                 j 2b58 <boot_verify_image+0x206>
    2b50:  0001                 nop
    2b52:  a011                 j 2b56 <boot_verify_image+0x204>
    2b54:  0001                 nop
    2b56:  4781                 li a5,0
    2b58:  853e                 mv a0,a5
    2b5a:  62813083           ld ra,1576(sp)
    2b5e:  62013403           ld s0,1568(sp)
    2b62:  63010113           addi sp,sp,1584
    2b66:  8082                 ret

0000000000002b68 <boot_from_sdc0>:
    2b68:  1101                 addi sp,sp,-32
    2b6a:  ec06                 sd ra,24(sp)
    2b6c:  e822                 sd s0,16(sp)
    2b6e:  1000                 addi s0,sp,32
    2b70:  fe042623           sw zero,-20(s0)
    2b74:  4b0050ef           jal ra,8024 <brom_config_bit_15>
    2b78:  87aa                 mv a5,a0
    2b7a:  e78d                 bnez a5,2ba4 <boot_from_sdc0+0x3c>
    2b7c:  4581                 li a1,0
    2b7e:  4505                 li a0,1
    2b80:  681060ef           jal ra,9a00 <debug_syscon>
    2b84:  4585                 li a1,1
    2b86:  4501                 li a0,0
    2b88:  6bc050ef           jal ra,8244 <debug_state_save>
    2b8c:  4501                 li a0,0
    2b8e:  31c010ef           jal ra,3eaa <boot_from_sd>
    2b92:  87aa                 mv a5,a0
    2b94:  fef42623           sw a5,-20(s0)
    2b98:  fec42783           lw a5,-20(s0)
    2b9c:  2781                 sext.w a5,a5
    2b9e:  eb89                 bnez a5,2bb0 <boot_from_sdc0+0x48>
    2ba0:  4781                 li a5,0
    2ba2:  a801                 j 2bb2 <boot_from_sdc0+0x4a>
    2ba4:  4581                 li a1,0
    2ba6:  4535                 li a0,13
    2ba8:  69c050ef           jal ra,8244 <debug_state_save>
    2bac:  71b060ef           jal ra,9ac6 <gpio_enable_jtag_pf>
    2bb0:  57fd                 li a5,-1
    2bb2:  853e                 mv a0,a5
    2bb4:  60e2                 ld ra,24(sp)
    2bb6:  6442                 ld s0,16(sp)
    2bb8:  6105                 addi sp,sp,32
    2bba:  8082                 ret

0000000000002bbc <boot_from_sdc2>:
    2bbc:  7179                 addi sp,sp,-48
    2bbe:  f406                 sd ra,40(sp)
    2bc0:  f022                 sd s0,32(sp)
    2bc2:  1800                 addi s0,sp,48
    2bc4:  87aa                 mv a5,a0
    2bc6:  fcf42e23           sw a5,-36(s0)
    2bca:  fe042623           sw zero,-20(s0)
    2bce:  fdc42783           lw a5,-36(s0)
    2bd2:  0007871b           sext.w a4,a5
    2bd6:  4789                 li a5,2
    2bd8:  04f71a63           bne a4,a5,2c2c <boot_from_sdc2+0x70>
    2bdc:  4581                 li a1,0
    2bde:  4509                 li a0,2
    2be0:  621060ef           jal ra,9a00 <debug_syscon>
    2be4:  4589                 li a1,2
    2be6:  4501                 li a0,0
    2be8:  65c050ef           jal ra,8244 <debug_state_save>
    2bec:  4509                 li a0,2
    2bee:  2bc010ef           jal ra,3eaa <boot_from_sd>
    2bf2:  87aa                 mv a5,a0
    2bf4:  fef42623           sw a5,-20(s0)
    2bf8:  fec42783           lw a5,-20(s0)
    2bfc:  2781                 sext.w a5,a5
    2bfe:  e399                 bnez a5,2c04 <boot_from_sdc2+0x48>
    2c00:  4781                 li a5,0
    2c02:  a8b5                 j 2c7e <boot_from_sdc2+0xc2>
    2c04:  4581                 li a1,0
    2c06:  450d                 li a0,3
    2c08:  5f9060ef           jal ra,9a00 <debug_syscon>
    2c0c:  458d                 li a1,3
    2c0e:  4501                 li a0,0
    2c10:  634050ef           jal ra,8244 <debug_state_save>
    2c14:  4509                 li a0,2
    2c16:  36c010ef           jal ra,3f82 <boot_from_emmc>
    2c1a:  87aa                 mv a5,a0
    2c1c:  fef42623           sw a5,-20(s0)
    2c20:  fec42783           lw a5,-20(s0)
    2c24:  2781                 sext.w a5,a5
    2c26:  ebb9                 bnez a5,2c7c <boot_from_sdc2+0xc0>
    2c28:  4781                 li a5,0
    2c2a:  a891                 j 2c7e <boot_from_sdc2+0xc2>
    2c2c:  4581                 li a1,0
    2c2e:  450d                 li a0,3
    2c30:  5d1060ef           jal ra,9a00 <debug_syscon>
    2c34:  458d                 li a1,3
    2c36:  4501                 li a0,0
    2c38:  60c050ef           jal ra,8244 <debug_state_save>
    2c3c:  4509                 li a0,2
    2c3e:  344010ef           jal ra,3f82 <boot_from_emmc>
    2c42:  87aa                 mv a5,a0
    2c44:  fef42623           sw a5,-20(s0)
    2c48:  fec42783           lw a5,-20(s0)
    2c4c:  2781                 sext.w a5,a5
    2c4e:  e399                 bnez a5,2c54 <boot_from_sdc2+0x98>
    2c50:  4781                 li a5,0
    2c52:  a035                 j 2c7e <boot_from_sdc2+0xc2>
    2c54:  4581                 li a1,0
    2c56:  4509                 li a0,2
    2c58:  5a9060ef           jal ra,9a00 <debug_syscon>
    2c5c:  4589                 li a1,2
    2c5e:  4501                 li a0,0
    2c60:  5e4050ef           jal ra,8244 <debug_state_save>
    2c64:  4509                 li a0,2
    2c66:  244010ef           jal ra,3eaa <boot_from_sd>
    2c6a:  87aa                 mv a5,a0
    2c6c:  fef42623           sw a5,-20(s0)
    2c70:  fec42783           lw a5,-20(s0)
    2c74:  2781                 sext.w a5,a5
    2c76:  e399                 bnez a5,2c7c <boot_from_sdc2+0xc0>
    2c78:  4781                 li a5,0
    2c7a:  a011                 j 2c7e <boot_from_sdc2+0xc2>
    2c7c:  57fd                 li a5,-1
    2c7e:  853e                 mv a0,a5
    2c80:  70a2                 ld ra,40(sp)
    2c82:  7402                 ld s0,32(sp)
    2c84:  6145                 addi sp,sp,48
    2c86:  8082                 ret

0000000000002c88 <FUN_00002c88>:
    2c88:  7179                 addi sp,sp,-48
    2c8a:  f406                 sd ra,40(sp)
    2c8c:  f022                 sd s0,32(sp)
    2c8e:  1800                 addi s0,sp,48
    2c90:  87aa                 mv a5,a0
    2c92:  fcf42e23           sw a5,-36(s0)
    2c96:  fe042623           sw zero,-20(s0)
    2c9a:  fdc42783           lw a5,-36(s0)
    2c9e:  0007871b           sext.w a4,a5
    2ca2:  478d                 li a5,3
    2ca4:  02f71663           bne a4,a5,2cd0 <FUN_00002c88+0x48>
    2ca8:  4581                 li a1,0
    2caa:  4515                 li a0,5
    2cac:  555060ef           jal ra,9a00 <debug_syscon>
    2cb0:  4595                 li a1,5
    2cb2:  4501                 li a0,0
    2cb4:  590050ef           jal ra,8244 <debug_state_save>
    2cb8:  4501                 li a0,0
    2cba:  062050ef           jal ra,7d1c <FUN_00007d1c>
    2cbe:  87aa                 mv a5,a0
    2cc0:  fef42623           sw a5,-20(s0)
    2cc4:  fec42783           lw a5,-20(s0)
    2cc8:  2781                 sext.w a5,a5
    2cca:  e399                 bnez a5,2cd0 <FUN_00002c88+0x48>
    2ccc:  4781                 li a5,0
    2cce:  a011                 j 2cd2 <FUN_00002c88+0x4a>
    2cd0:  57fd                 li a5,-1
    2cd2:  853e                 mv a0,a5
    2cd4:  70a2                 ld ra,40(sp)
    2cd6:  7402                 ld s0,32(sp)
    2cd8:  6145                 addi sp,sp,48
    2cda:  8082                 ret

0000000000002cdc <FUN_00002cdc>:
    2cdc:  7179                 addi sp,sp,-48
    2cde:  f406                 sd ra,40(sp)
    2ce0:  f022                 sd s0,32(sp)
    2ce2:  1800                 addi s0,sp,48
    2ce4:  87aa                 mv a5,a0
    2ce6:  872e                 mv a4,a1
    2ce8:  fcf42e23           sw a5,-36(s0)
    2cec:  87ba                 mv a5,a4
    2cee:  fcf42c23           sw a5,-40(s0)
    2cf2:  fe042623           sw zero,-20(s0)
    2cf6:  fdc42783           lw a5,-36(s0)
    2cfa:  0007871b           sext.w a4,a5
    2cfe:  4791                 li a5,4
    2d00:  02f71b63           bne a4,a5,2d36 <FUN_00002cdc+0x5a>
    2d04:  4581                 li a1,0
    2d06:  4519                 li a0,6
    2d08:  4f9060ef           jal ra,9a00 <debug_syscon>
    2d0c:  4599                 li a1,6
    2d0e:  4501                 li a0,0
    2d10:  534050ef           jal ra,8244 <debug_state_save>
    2d14:  fd842703           lw a4,-40(s0)
    2d18:  fdc42783           lw a5,-36(s0)
    2d1c:  85ba                 mv a1,a4
    2d1e:  853e                 mv a0,a5
    2d20:  7f4000ef           jal ra,3514 <FUN_00003514>
    2d24:  87aa                 mv a5,a0
    2d26:  fef42623           sw a5,-20(s0)
    2d2a:  fec42783           lw a5,-20(s0)
    2d2e:  2781                 sext.w a5,a5
    2d30:  e399                 bnez a5,2d36 <FUN_00002cdc+0x5a>
    2d32:  4781                 li a5,0
    2d34:  a011                 j 2d38 <FUN_00002cdc+0x5c>
    2d36:  57fd                 li a5,-1
    2d38:  853e                 mv a0,a5
    2d3a:  70a2                 ld ra,40(sp)
    2d3c:  7402                 ld s0,32(sp)
    2d3e:  6145                 addi sp,sp,48
    2d40:  8082                 ret

0000000000002d42 <try_boot_process>:
    2d42:  7179                 addi sp,sp,-48
    2d44:  f406                 sd ra,40(sp)
    2d46:  f022                 sd s0,32(sp)
    2d48:  1800                 addi s0,sp,48
    2d4a:  87aa                 mv a5,a0
    2d4c:  fcf42e23           sw a5,-36(s0)
    2d50:  fe042623           sw zero,-20(s0)
    2d54:  4581                 li a1,0
    2d56:  451d                 li a0,7
    2d58:  4ec050ef           jal ra,8244 <debug_state_save>
    2d5c:  fdc42783           lw a5,-36(s0)
    2d60:  0007871b           sext.w a4,a5
    2d64:  478d                 li a5,3
    2d66:  00f70c63           beq a4,a5,2d7e <try_boot_process+0x3c>
    2d6a:  450d                 li a0,3
    2d6c:  f1dff0ef           jal ra,2c88 <FUN_00002c88>
    2d70:  87aa                 mv a5,a0
    2d72:  fef42623           sw a5,-20(s0)
    2d76:  fec42783           lw a5,-20(s0)
    2d7a:  2781                 sext.w a5,a5
    2d7c:  cfb9                 beqz a5,2dda <try_boot_process+0x98>
    2d7e:  fdc42783           lw a5,-36(s0)
    2d82:  0007871b           sext.w a4,a5
    2d86:  4791                 li a5,4
    2d88:  02f70063           beq a4,a5,2da8 <try_boot_process+0x66>
    2d8c:  00eff7b7           lui a5,0xeff
    2d90:  80078593           addi a1,a5,-2048 # efe800 <gpio_get_boot_device+0xef046a
    2d94:  4511                 li a0,4
    2d96:  f47ff0ef           jal ra,2cdc <FUN_00002cdc>
    2d9a:  87aa                 mv a5,a0
    2d9c:  fef42623           sw a5,-20(s0)
    2da0:  fec42783           lw a5,-20(s0)
    2da4:  2781                 sext.w a5,a5
    2da6:  cf85                 beqz a5,2dde <try_boot_process+0x9c>
    2da8:  fdc42783           lw a5,-36(s0)
    2dac:  0007871b           sext.w a4,a5
    2db0:  4789                 li a5,2
    2db2:  04f70963           beq a4,a5,2e04 <try_boot_process+0xc2>
    2db6:  fdc42783           lw a5,-36(s0)
    2dba:  0007871b           sext.w a4,a5
    2dbe:  4795                 li a5,5
    2dc0:  04f70263           beq a4,a5,2e04 <try_boot_process+0xc2>
    2dc4:  4509                 li a0,2
    2dc6:  df7ff0ef           jal ra,2bbc <boot_from_sdc2>
    2dca:  87aa                 mv a5,a0
    2dcc:  fef42623           sw a5,-20(s0)
    2dd0:  fec42783           lw a5,-20(s0)
    2dd4:  2781                 sext.w a5,a5
    2dd6:  e79d                 bnez a5,2e04 <try_boot_process+0xc2>
    2dd8:  a021                 j 2de0 <try_boot_process+0x9e>
    2dda:  0001                 nop
    2ddc:  a011                 j 2de0 <try_boot_process+0x9e>
    2dde:  0001                 nop
    2de0:  000487b7           lui a5,0x48
    2de4:  e107a783           lw a5,-496(a5) # 47e10 <gpio_get_boot_device+0x39a7a>
    2de8:  c799                 beqz a5,2df6 <try_boot_process+0xb4>
    2dea:  4585                 li a1,1
    2dec:  00020537           lui a0,0x20
    2df0:  b63ff0ef           jal ra,2952 <boot_verify_image>
    2df4:  a809                 j 2e06 <try_boot_process+0xc4>
    2df6:  0fc00593           li a1,252
    2dfa:  00020537           lui a0,0x20
    2dfe:  5a7060ef           jal ra,9ba4 <boot_finish>
    2e02:  a011                 j 2e06 <try_boot_process+0xc4>
    2e04:  0001                 nop
    2e06:  4501                 li a0,0
    2e08:  543060ef           jal ra,9b4a <fel_boot>
    2e0c:  0001                 nop
    2e0e:  70a2                 ld ra,40(sp)
    2e10:  7402                 ld s0,32(sp)
    2e12:  6145                 addi sp,sp,48
    2e14:  8082                 ret

0000000000002e16 <sid_boot_process>:
    2e16:  7179                 addi sp,sp,-48
    2e18:  f406                 sd ra,40(sp)
    2e1a:  f022                 sd s0,32(sp)
    2e1c:  1800                 addi s0,sp,48
    2e1e:  87aa                 mv a5,a0
    2e20:  fcf42e23           sw a5,-36(s0)
    2e24:  fe042623           sw zero,-20(s0)
    2e28:  4581                 li a1,0
    2e2a:  4519                 li a0,6
    2e2c:  418050ef           jal ra,8244 <debug_state_save>
    2e30:  d39ff0ef           jal ra,2b68 <boot_from_sdc0>
    2e34:  87aa                 mv a5,a0
    2e36:  fef42623           sw a5,-20(s0)
    2e3a:  fec42783           lw a5,-20(s0)
    2e3e:  2781                 sext.w a5,a5
    2e40:  cfd9                 beqz a5,2ede <sid_boot_process+0xc8>
    2e42:  fdc42783           lw a5,-36(s0)
    2e46:  0007871b           sext.w a4,a5
    2e4a:  4799                 li a5,6
    2e4c:  08e7e163           bltu a5,a4,2ece <sid_boot_process+0xb8>
    2e50:  fdc46783           lwu a5,-36(s0)
    2e54:  00279713           slli a4,a5,0x2
    2e58:  67b9                 lui a5,0xe
    2e5a:  3f078793           addi a5,a5,1008 # e3f0 <gpio_get_boot_device+0x5a>
    2e5e:  97ba                 add a5,a5,a4
    2e60:  439c                 lw a5,0(a5)
    2e62:  8782                 jr a5
    2e64:  0ff00513           li a0,255
    2e68:  edbff0ef           jal ra,2d42 <try_boot_process>
    2e6c:  a885                 j 2edc <sid_boot_process+0xc6>
    2e6e:  4515                 li a0,5
    2e70:  d4dff0ef           jal ra,2bbc <boot_from_sdc2>
    2e74:  87aa                 mv a5,a0
    2e76:  fef42623           sw a5,-20(s0)
    2e7a:  fec42783           lw a5,-20(s0)
    2e7e:  2781                 sext.w a5,a5
    2e80:  eba9                 bnez a5,2ed2 <sid_boot_process+0xbc>
    2e82:  a08d                 j 2ee4 <sid_boot_process+0xce>
    2e84:  4509                 li a0,2
    2e86:  d37ff0ef           jal ra,2bbc <boot_from_sdc2>
    2e8a:  87aa                 mv a5,a0
    2e8c:  fef42623           sw a5,-20(s0)
    2e90:  fec42783           lw a5,-20(s0)
    2e94:  2781                 sext.w a5,a5
    2e96:  e3a1                 bnez a5,2ed6 <sid_boot_process+0xc0>
    2e98:  a0b1                 j 2ee4 <sid_boot_process+0xce>
    2e9a:  450d                 li a0,3
    2e9c:  dedff0ef           jal ra,2c88 <FUN_00002c88>
    2ea0:  87aa                 mv a5,a0
    2ea2:  fef42623           sw a5,-20(s0)
    2ea6:  fec42783           lw a5,-20(s0)
    2eaa:  2781                 sext.w a5,a5
    2eac:  e79d                 bnez a5,2eda <sid_boot_process+0xc4>
    2eae:  a81d                 j 2ee4 <sid_boot_process+0xce>
    2eb0:  00eff7b7           lui a5,0xeff
    2eb4:  80078593           addi a1,a5,-2048 # efe800 <gpio_get_boot_device+0xef046a
    2eb8:  4511                 li a0,4
    2eba:  e23ff0ef           jal ra,2cdc <FUN_00002cdc>
    2ebe:  87aa                 mv a5,a0
    2ec0:  fef42623           sw a5,-20(s0)
    2ec4:  fec42783           lw a5,-20(s0)
    2ec8:  2781                 sext.w a5,a5
    2eca:  cf81                 beqz a5,2ee2 <sid_boot_process+0xcc>
    2ecc:  a801                 j 2edc <sid_boot_process+0xc6>
    2ece:  0001                 nop
    2ed0:  a81d                 j 2f06 <sid_boot_process+0xf0>
    2ed2:  0001                 nop
    2ed4:  a80d                 j 2f06 <sid_boot_process+0xf0>
    2ed6:  0001                 nop
    2ed8:  a03d                 j 2f06 <sid_boot_process+0xf0>
    2eda:  0001                 nop
    2edc:  a02d                 j 2f06 <sid_boot_process+0xf0>
    2ede:  0001                 nop
    2ee0:  a011                 j 2ee4 <sid_boot_process+0xce>
    2ee2:  0001                 nop
    2ee4:  000487b7           lui a5,0x48
    2ee8:  e107a783           lw a5,-496(a5) # 47e10 <gpio_get_boot_device+0x39a7a>
    2eec:  c799                 beqz a5,2efa <sid_boot_process+0xe4>
    2eee:  4585                 li a1,1
    2ef0:  00020537           lui a0,0x20
    2ef4:  a5fff0ef           jal ra,2952 <boot_verify_image>
    2ef8:  a039                 j 2f06 <sid_boot_process+0xf0>
    2efa:  0fc00593           li a1,252
    2efe:  00020537           lui a0,0x20
    2f02:  4a3060ef           jal ra,9ba4 <boot_finish>
    2f06:  4501                 li a0,0
    2f08:  443060ef           jal ra,9b4a <fel_boot>
    2f0c:  0001                 nop
    2f0e:  70a2                 ld ra,40(sp)
    2f10:  7402                 ld s0,32(sp)
    2f12:  6145                 addi sp,sp,48
    2f14:  8082                 ret

0000000000002f16 <gpio_boot_process>:
    2f16:  7179                 addi sp,sp,-48
    2f18:  f406                 sd ra,40(sp)
    2f1a:  f022                 sd s0,32(sp)
    2f1c:  1800                 addi s0,sp,48
    2f1e:  87aa                 mv a5,a0
    2f20:  fcf42e23           sw a5,-36(s0)
    2f24:  fe042423           sw zero,-24(s0)
    2f28:  fe042623           sw zero,-20(s0)
    2f2c:  4581                 li a1,0
    2f2e:  4515                 li a0,5
    2f30:  314050ef           jal ra,8244 <debug_state_save>
    2f34:  fdc42783           lw a5,-36(s0)
    2f38:  2781                 sext.w a5,a5
    2f3a:  cb99                 beqz a5,2f50 <gpio_boot_process+0x3a>
    2f3c:  c2dff0ef           jal ra,2b68 <boot_from_sdc0>
    2f40:  87aa                 mv a5,a0
    2f42:  fef42423           sw a5,-24(s0)
    2f46:  fe842783           lw a5,-24(s0)
    2f4a:  2781                 sext.w a5,a5
    2f4c:  e781                 bnez a5,2f54 <gpio_boot_process+0x3e>
    2f4e:  a0f5                 j 303a <gpio_boot_process+0x124>
    2f50:  377060ef           jal ra,9ac6 <gpio_enable_jtag_pf>
    2f54:  fdc42783           lw a5,-36(s0)
    2f58:  0007871b           sext.w a4,a5
    2f5c:  4785                 li a5,1
    2f5e:  06f70e63           beq a4,a5,2fda <gpio_boot_process+0xc4>
    2f62:  fdc42783           lw a5,-36(s0)
    2f66:  2781                 sext.w a5,a5
    2f68:  cf8d                 beqz a5,2fa2 <gpio_boot_process+0x8c>
    2f6a:  fdc42783           lw a5,-36(s0)
    2f6e:  0007871b           sext.w a4,a5
    2f72:  4789                 li a5,2
    2f74:  08f70163           beq a4,a5,2ff6 <gpio_boot_process+0xe0>
    2f78:  fdc42783           lw a5,-36(s0)
    2f7c:  0007871b           sext.w a4,a5
    2f80:  478d                 li a5,3
    2f82:  08f71c63           bne a4,a5,301a <gpio_boot_process+0x104>
    2f86:  4509                 li a0,2
    2f88:  c35ff0ef           jal ra,2bbc <boot_from_sdc2>
    2f8c:  87aa                 mv a5,a0
    2f8e:  fef42423           sw a5,-24(s0)
    2f92:  fe842783           lw a5,-24(s0)
    2f96:  2781                 sext.w a5,a5
    2f98:  cbc1                 beqz a5,3028 <gpio_boot_process+0x112>
    2f9a:  4789                 li a5,2
    2f9c:  fef42623           sw a5,-20(s0)
    2fa0:  a8b5                 j 301c <gpio_boot_process+0x106>
    2fa2:  450d                 li a0,3
    2fa4:  ce5ff0ef           jal ra,2c88 <FUN_00002c88>
    2fa8:  87aa                 mv a5,a0
    2faa:  fef42423           sw a5,-24(s0)
    2fae:  fe842783           lw a5,-24(s0)
    2fb2:  2781                 sext.w a5,a5
    2fb4:  cfa5                 beqz a5,302c <gpio_boot_process+0x116>
    2fb6:  00eff7b7           lui a5,0xeff
    2fba:  80078593           addi a1,a5,-2048 # efe800 <gpio_get_boot_device+0xef046a
    2fbe:  4511                 li a0,4
    2fc0:  d1dff0ef           jal ra,2cdc <FUN_00002cdc>
    2fc4:  87aa                 mv a5,a0
    2fc6:  fef42423           sw a5,-24(s0)
    2fca:  fe842783           lw a5,-24(s0)
    2fce:  2781                 sext.w a5,a5
    2fd0:  c3a5                 beqz a5,3030 <gpio_boot_process+0x11a>
    2fd2:  478d                 li a5,3
    2fd4:  fef42623           sw a5,-20(s0)
    2fd8:  a091                 j 301c <gpio_boot_process+0x106>
    2fda:  450d                 li a0,3
    2fdc:  cadff0ef           jal ra,2c88 <FUN_00002c88>
    2fe0:  87aa                 mv a5,a0
    2fe2:  fef42423           sw a5,-24(s0)
    2fe6:  fe842783           lw a5,-24(s0)
    2fea:  2781                 sext.w a5,a5
    2fec:  c7a1                 beqz a5,3034 <gpio_boot_process+0x11e>
    2fee:  478d                 li a5,3
    2ff0:  fef42623           sw a5,-20(s0)
    2ff4:  a025                 j 301c <gpio_boot_process+0x106>
    2ff6:  00eff7b7           lui a5,0xeff
    2ffa:  80078593           addi a1,a5,-2048 # efe800 <gpio_get_boot_device+0xef046a
    2ffe:  4511                 li a0,4
    3000:  cddff0ef           jal ra,2cdc <FUN_00002cdc>
    3004:  87aa                 mv a5,a0
    3006:  fef42423           sw a5,-24(s0)
    300a:  fe842783           lw a5,-24(s0)
    300e:  2781                 sext.w a5,a5
    3010:  c785                 beqz a5,3038 <gpio_boot_process+0x122>
    3012:  4791                 li a5,4
    3014:  fef42623           sw a5,-20(s0)
    3018:  a011                 j 301c <gpio_boot_process+0x106>
    301a:  0001                 nop
    301c:  fec42783           lw a5,-20(s0)
    3020:  853e                 mv a0,a5
    3022:  d21ff0ef           jal ra,2d42 <try_boot_process>
    3026:  a81d                 j 305c <gpio_boot_process+0x146>
    3028:  0001                 nop
    302a:  a801                 j 303a <gpio_boot_process+0x124>
    302c:  0001                 nop
    302e:  a031                 j 303a <gpio_boot_process+0x124>
    3030:  0001                 nop
    3032:  a021                 j 303a <gpio_boot_process+0x124>
    3034:  0001                 nop
    3036:  a011                 j 303a <gpio_boot_process+0x124>
    3038:  0001                 nop
    303a:  000487b7           lui a5,0x48
    303e:  e107a783           lw a5,-496(a5) # 47e10 <gpio_get_boot_device+0x39a7a>
    3042:  c799                 beqz a5,3050 <gpio_boot_process+0x13a>
    3044:  4585                 li a1,1
    3046:  00020537           lui a0,0x20
    304a:  909ff0ef           jal ra,2952 <boot_verify_image>
    304e:  a039                 j 305c <gpio_boot_process+0x146>
    3050:  0fc00593           li a1,252
    3054:  00020537           lui a0,0x20
    3058:  34d060ef           jal ra,9ba4 <boot_finish>
    305c:  4501                 li a0,0
    305e:  2ed060ef           jal ra,9b4a <fel_boot>
    3062:  0001                 nop
    3064:  70a2                 ld ra,40(sp)
    3066:  7402                 ld s0,32(sp)
    3068:  6145                 addi sp,sp,48
    306a:  8082                 ret

000000000000306c <normal_boot_process>:
    306c:  1101                 addi sp,sp,-32
    306e:  ec06                 sd ra,24(sp)
    3070:  e822                 sd s0,16(sp)
    3072:  1000                 addi s0,sp,32
    3074:  fe042623           sw zero,-20(s0)
    3078:  fe042423           sw zero,-24(s0)
    307c:  599040ef           jal ra,7e14 <sid_get_boot_mode>
    3080:  87aa                 mv a5,a0
    3082:  fef42423           sw a5,-24(s0)
    3086:  fe842783           lw a5,-24(s0)
    308a:  2781                 sext.w a5,a5
    308c:  cb89                 beqz a5,309e <normal_boot_process+0x32>
    308e:  fe842783           lw a5,-24(s0)
    3092:  0007871b           sext.w a4,a5
    3096:  4785                 li a5,1
    3098:  00f70e63           beq a4,a5,30b4 <normal_boot_process+0x48>
    309c:  a03d                 j 30ca <normal_boot_process+0x5e>
    309e:  2f80b0ef           jal ra,e396 <gpio_get_boot_device>
    30a2:  87aa                 mv a5,a0
    30a4:  fef42623           sw a5,-20(s0)
    30a8:  fec42783           lw a5,-20(s0)
    30ac:  853e                 mv a0,a5
    30ae:  e69ff0ef           jal ra,2f16 <gpio_boot_process>
    30b2:  a00d                 j 30d4 <normal_boot_process+0x68>
    30b4:  002050ef           jal ra,80b6 <sid_get_boot_device>
    30b8:  87aa                 mv a5,a0
    30ba:  fef42623           sw a5,-20(s0)
    30be:  fec42783           lw a5,-20(s0)
    30c2:  853e                 mv a0,a5
    30c4:  d53ff0ef           jal ra,2e16 <sid_boot_process>
    30c8:  a031                 j 30d4 <normal_boot_process+0x68>
    30ca:  0ff00513           li a0,255
    30ce:  c75ff0ef           jal ra,2d42 <try_boot_process>
    30d2:  0001                 nop
    30d4:  0001                 nop
    30d6:  60e2                 ld ra,24(sp)
    30d8:  6442                 ld s0,16(sp)
    30da:  6105                 addi sp,sp,32
    30dc:  8082                 ret

00000000000030de <attempt_fast_boot>:
    30de:  7179                 addi sp,sp,-48
    30e0:  f406                 sd ra,40(sp)
    30e2:  f022                 sd s0,32(sp)
    30e4:  1800                 addi s0,sp,48
    30e6:  87aa                 mv a5,a0
    30e8:  872e                 mv a4,a1
    30ea:  fcf42e23           sw a5,-36(s0)
    30ee:  87ba                 mv a5,a4
    30f0:  fcf42c23           sw a5,-40(s0)
    30f4:  fe042423           sw zero,-24(s0)
    30f8:  fe042623           sw zero,-20(s0)
    30fc:  4581                 li a1,0
    30fe:  4511                 li a0,4
    3100:  144050ef           jal ra,8244 <debug_state_save>
    3104:  a65ff0ef           jal ra,2b68 <boot_from_sdc0>
    3108:  87aa                 mv a5,a0
    310a:  fef42423           sw a5,-24(s0)
    310e:  fe842783           lw a5,-24(s0)
    3112:  2781                 sext.w a5,a5
    3114:  c7f9                 beqz a5,31e2 <attempt_fast_boot+0x104>
    3116:  fdc42783           lw a5,-36(s0)
    311a:  0007871b           sext.w a4,a5
    311e:  478d                 li a5,3
    3120:  06f70b63           beq a4,a5,3196 <attempt_fast_boot+0xb8>
    3124:  fdc42783           lw a5,-36(s0)
    3128:  0007871b           sext.w a4,a5
    312c:  478d                 li a5,3
    312e:  00e7ea63           bltu a5,a4,3142 <attempt_fast_boot+0x64>
    3132:  fdc42783           lw a5,-36(s0)
    3136:  0007871b           sext.w a4,a5
    313a:  4789                 li a5,2
    313c:  02f70f63           beq a4,a5,317a <attempt_fast_boot+0x9c>
    3140:  a851                 j 31d4 <attempt_fast_boot+0xf6>
    3142:  fdc42783           lw a5,-36(s0)
    3146:  0007871b           sext.w a4,a5
    314a:  4791                 li a5,4
    314c:  06f70363           beq a4,a5,31b2 <attempt_fast_boot+0xd4>
    3150:  fdc42783           lw a5,-36(s0)
    3154:  0007871b           sext.w a4,a5
    3158:  4795                 li a5,5
    315a:  06f71d63           bne a4,a5,31d4 <attempt_fast_boot+0xf6>
    315e:  4515                 li a0,5
    3160:  a5dff0ef           jal ra,2bbc <boot_from_sdc2>
    3164:  87aa                 mv a5,a0
    3166:  fef42423           sw a5,-24(s0)
    316a:  fe842783           lw a5,-24(s0)
    316e:  2781                 sext.w a5,a5
    3170:  cbbd                 beqz a5,31e6 <attempt_fast_boot+0x108>
    3172:  4795                 li a5,5
    3174:  fef42623           sw a5,-20(s0)
    3178:  a8b9                 j 31d6 <attempt_fast_boot+0xf8>
    317a:  4509                 li a0,2
    317c:  a41ff0ef           jal ra,2bbc <boot_from_sdc2>
    3180:  87aa                 mv a5,a0
    3182:  fef42423           sw a5,-24(s0)
    3186:  fe842783           lw a5,-24(s0)
    318a:  2781                 sext.w a5,a5
    318c:  cfb9                 beqz a5,31ea <attempt_fast_boot+0x10c>
    318e:  4789                 li a5,2
    3190:  fef42623           sw a5,-20(s0)
    3194:  a089                 j 31d6 <attempt_fast_boot+0xf8>
    3196:  450d                 li a0,3
    3198:  af1ff0ef           jal ra,2c88 <FUN_00002c88>
    319c:  87aa                 mv a5,a0
    319e:  fef42423           sw a5,-24(s0)
    31a2:  fe842783           lw a5,-24(s0)
    31a6:  2781                 sext.w a5,a5
    31a8:  c3b9                 beqz a5,31ee <attempt_fast_boot+0x110>
    31aa:  478d                 li a5,3
    31ac:  fef42623           sw a5,-20(s0)
    31b0:  a01d                 j 31d6 <attempt_fast_boot+0xf8>
    31b2:  fd842783           lw a5,-40(s0)
    31b6:  85be                 mv a1,a5
    31b8:  4511                 li a0,4
    31ba:  b23ff0ef           jal ra,2cdc <FUN_00002cdc>
    31be:  87aa                 mv a5,a0
    31c0:  fef42423           sw a5,-24(s0)
    31c4:  fe842783           lw a5,-24(s0)
    31c8:  2781                 sext.w a5,a5
    31ca:  c785                 beqz a5,31f2 <attempt_fast_boot+0x114>
    31cc:  4791                 li a5,4
    31ce:  fef42623           sw a5,-20(s0)
    31d2:  a011                 j 31d6 <attempt_fast_boot+0xf8>
    31d4:  0001                 nop
    31d6:  fec42783           lw a5,-20(s0)
    31da:  853e                 mv a0,a5
    31dc:  b67ff0ef           jal ra,2d42 <try_boot_process>
    31e0:  a81d                 j 3216 <attempt_fast_boot+0x138>
    31e2:  0001                 nop
    31e4:  a801                 j 31f4 <attempt_fast_boot+0x116>
    31e6:  0001                 nop
    31e8:  a031                 j 31f4 <attempt_fast_boot+0x116>
    31ea:  0001                 nop
    31ec:  a021                 j 31f4 <attempt_fast_boot+0x116>
    31ee:  0001                 nop
    31f0:  a011                 j 31f4 <attempt_fast_boot+0x116>
    31f2:  0001                 nop
    31f4:  000487b7           lui a5,0x48
    31f8:  e107a783           lw a5,-496(a5) # 47e10 <gpio_get_boot_device+0x39a7a>
    31fc:  c799                 beqz a5,320a <attempt_fast_boot+0x12c>
    31fe:  4585                 li a1,1
    3200:  00020537           lui a0,0x20
    3204:  f4eff0ef           jal ra,2952 <boot_verify_image>
    3208:  a039                 j 3216 <attempt_fast_boot+0x138>
    320a:  0fc00593           li a1,252
    320e:  00020537           lui a0,0x20
    3212:  193060ef           jal ra,9ba4 <boot_finish>
    3216:  4501                 li a0,0
    3218:  133060ef           jal ra,9b4a <fel_boot>
    321c:  0001                 nop
    321e:  70a2                 ld ra,40(sp)
    3220:  7402                 ld s0,32(sp)
    3222:  6145                 addi sp,sp,48
    3224:  8082                 ret

0000000000003226 <maybe_attempt_fast_boot>:
    3226:  1101                 addi sp,sp,-32
    3228:  ec06                 sd ra,24(sp)
    322a:  e822                 sd s0,16(sp)
    322c:  1000                 addi s0,sp,32
    322e:  fe042623           sw zero,-20(s0)
    3232:  fe042423           sw zero,-24(s0)
    3236:  fe042223           sw zero,-28(s0)
    323a:  00f060ef           jal ra,9a48 <rtc_get_fast_boot_status>
    323e:  87aa                 mv a5,a0
    3240:  fef42623           sw a5,-20(s0)
    3244:  fec42783           lw a5,-20(s0)
    3248:  2781                 sext.w a5,a5
    324a:  c79d                 beqz a5,3278 <maybe_attempt_fast_boot+0x52>
    324c:  fec42783           lw a5,-20(s0)
    3250:  01c7d79b           srliw a5,a5,0x1c
    3254:  fef42423           sw a5,-24(s0)
    3258:  fec42703           lw a4,-20(s0)
    325c:  100007b7           lui a5,0x10000
    3260:  17fd                 addi a5,a5,-1
    3262:  8ff9                 and a5,a5,a4
    3264:  fef42223           sw a5,-28(s0)
    3268:  fe442703           lw a4,-28(s0)
    326c:  fe842783           lw a5,-24(s0)
    3270:  85ba                 mv a1,a4
    3272:  853e                 mv a0,a5
    3274:  e6bff0ef           jal ra,30de <attempt_fast_boot>
    3278:  57fd                 li a5,-1
    327a:  853e                 mv a0,a5
    327c:  60e2                 ld ra,24(sp)
    327e:  6442                 ld s0,16(sp)
    3280:  6105                 addi sp,sp,32
    3282:  8082                 ret

0000000000003284 <normal_boot>:
    3284:  7179                 addi sp,sp,-48
    3286:  f406                 sd ra,40(sp)
    3288:  f022                 sd s0,32(sp)
    328a:  1800                 addi s0,sp,48
    328c:  87aa                 mv a5,a0
    328e:  fcf42e23           sw a5,-36(s0)
    3292:  329040ef           jal ra,7dba <sid_init_brom_config>
    3296:  089060ef           jal ra,9b1e <riscv_init_caches>
    329a:  fdc42783           lw a5,-36(s0)
    329e:  2781                 sext.w a5,a5
    32a0:  cf99                 beqz a5,32be <normal_boot+0x3a>
    32a2:  0780b0ef           jal ra,e31a <syscon_read_fel_button>
    32a6:  87aa                 mv a5,a0
    32a8:  fef42623           sw a5,-20(s0)
    32ac:  fec42783           lw a5,-20(s0)
    32b0:  2781                 sext.w a5,a5
    32b2:  c791                 beqz a5,32be <normal_boot+0x3a>
    32b4:  4581                 li a1,0
    32b6:  4509                 li a0,2
    32b8:  78d040ef           jal ra,8244 <debug_state_save>
    32bc:  a825                 j 32f4 <normal_boot+0x70>
    32be:  4581                 li a1,0
    32c0:  450d                 li a0,3
    32c2:  783040ef           jal ra,8244 <debug_state_save>
    32c6:  720060ef           jal ra,99e6 <ccu_init>
    32ca:  4581                 li a1,0
    32cc:  4541                 li a0,16
    32ce:  732060ef           jal ra,9a00 <debug_syscon>
    32d2:  4581                 li a1,0
    32d4:  4545                 li a0,17
    32d6:  72a060ef           jal ra,9a00 <debug_syscon>
    32da:  f4dff0ef           jal ra,3226 <maybe_attempt_fast_boot>
    32de:  87aa                 mv a5,a0
    32e0:  fef42623           sw a5,-20(s0)
    32e4:  fec42783           lw a5,-20(s0)
    32e8:  2781                 sext.w a5,a5
    32ea:  c781                 beqz a5,32f2 <normal_boot+0x6e>
    32ec:  d81ff0ef           jal ra,306c <normal_boot_process>
    32f0:  a011                 j 32f4 <normal_boot+0x70>
    32f2:  0001                 nop
    32f4:  07f00513           li a0,127
    32f8:  053060ef           jal ra,9b4a <fel_boot>
    32fc:  0001                 nop
    32fe:  70a2                 ld ra,40(sp)
    3300:  7402                 ld s0,32(sp)
    3302:  6145                 addi sp,sp,48
    3304:  8082                 ret
           ...

0000000000003320 <trap_vector>:
    3320:  7119                 addi sp,sp,-128
    3322:  c206                 sw ra,4(sp)
    3324:  c40a                 sw sp,8(sp)
    3326:  c60e                 sw gp,12(sp)
    3328:  c812                 sw tp,16(sp)
    332a:  ca16                 sw t0,20(sp)
    332c:  cc1a                 sw t1,24(sp)
    332e:  ce1e                 sw t2,28(sp)
    3330:  d022                 sw s0,32(sp)
    3332:  d226                 sw s1,36(sp)
    3334:  d42a                 sw a0,40(sp)
    3336:  d62e                 sw a1,44(sp)
    3338:  d832                 sw a2,48(sp)
    333a:  da36                 sw a3,52(sp)
    333c:  dc3a                 sw a4,56(sp)
    333e:  de3e                 sw a5,60(sp)
    3340:  c0c2                 sw a6,64(sp)
    3342:  c2c6                 sw a7,68(sp)
    3344:  c4ca                 sw s2,72(sp)
    3346:  c6ce                 sw s3,76(sp)
    3348:  c8d2                 sw s4,80(sp)
    334a:  cad6                 sw s5,84(sp)
    334c:  ccda                 sw s6,88(sp)
    334e:  cede                 sw s7,92(sp)
    3350:  d0e2                 sw s8,96(sp)
    3352:  d2e6                 sw s9,100(sp)
    3354:  d4ea                 sw s10,104(sp)
    3356:  d6ee                 sw s11,108(sp)
    3358:  d8f2                 sw t3,112(sp)
    335a:  daf6                 sw t4,116(sp)
    335c:  dcfa                 sw t5,120(sp)
    335e:  defe                 sw t6,124(sp)
    3360:  34202573           csrr a0,mcause
    3364:  341025f3           csrr a1,mepc
    3368:  34302673           csrr a2,mtval
    336c:  868a                 mv a3,sp
    336e:  06d060ef           jal ra,9bda <trap_handler>
    3372:  4092                 lw ra,4(sp)
    3374:  41b2                 lw gp,12(sp)
    3376:  4242                 lw tp,16(sp)
    3378:  42d2                 lw t0,20(sp)
    337a:  4362                 lw t1,24(sp)
    337c:  43f2                 lw t2,28(sp)
    337e:  5402                 lw s0,32(sp)
    3380:  5492                 lw s1,36(sp)
    3382:  5522                 lw a0,40(sp)
    3384:  55b2                 lw a1,44(sp)
    3386:  5642                 lw a2,48(sp)
    3388:  56d2                 lw a3,52(sp)
    338a:  5762                 lw a4,56(sp)
    338c:  57f2                 lw a5,60(sp)
    338e:  4806                 lw a6,64(sp)
    3390:  4896                 lw a7,68(sp)
    3392:  4926                 lw s2,72(sp)
    3394:  49b6                 lw s3,76(sp)
    3396:  4a46                 lw s4,80(sp)
    3398:  4ad6                 lw s5,84(sp)
    339a:  4b66                 lw s6,88(sp)
    339c:  4bf6                 lw s7,92(sp)
    339e:  5c06                 lw s8,96(sp)
    33a0:  5c96                 lw s9,100(sp)
    33a2:  5d26                 lw s10,104(sp)
    33a4:  5db6                 lw s11,108(sp)
    33a6:  5e46                 lw t3,112(sp)
    33a8:  5ed6                 lw t4,116(sp)
    33aa:  5f66                 lw t5,120(sp)
    33ac:  5ff6                 lw t6,124(sp)
    33ae:  4122                 lw sp,8(sp)
    33b0:  6109                 addi sp,sp,128
    33b2:  30200073           mret
           ...

00000000000033c2 <FUN_000033c2>:
    33c2:  1101                 addi sp,sp,-32
    33c4:  ec06                 sd ra,24(sp)
    33c6:  e822                 sd s0,16(sp)
    33c8:  1000                 addi s0,sp,32
    33ca:  fea43423           sd a0,-24(s0)
    33ce:  87ae                 mv a5,a1
    33d0:  8732                 mv a4,a2
    33d2:  fef42223           sw a5,-28(s0)
    33d6:  87ba                 mv a5,a4
    33d8:  fef42023           sw a5,-32(s0)
    33dc:  fe042783           lw a5,-32(s0)
    33e0:  2781                 sext.w a5,a5
    33e2:  eb95                 bnez a5,3416 <FUN_000033c2+0x54>
    33e4:  fe442783           lw a5,-28(s0)
    33e8:  0007871b           sext.w a4,a5
    33ec:  4785                 li a5,1
    33ee:  02e7e263           bltu a5,a4,3412 <FUN_000033c2+0x50>
    33f2:  fe446783           lwu a5,-28(s0)
    33f6:  00479713           slli a4,a5,0x4
    33fa:  67b9                 lui a5,0xe
    33fc:  41078793           addi a5,a5,1040 # e410 <gpio_get_boot_device+0x7a>
    3400:  97ba                 add a5,a5,a4
    3402:  4641                 li a2,16
    3404:  85be                 mv a1,a5
    3406:  fe843503           ld a0,-24(s0)
    340a:  281060ef           jal ra,9e8a <memcpy>
    340e:  4781                 li a5,0
    3410:  a0a1                 j 3458 <FUN_000033c2+0x96>
    3412:  57fd                 li a5,-1
    3414:  a091                 j 3458 <FUN_000033c2+0x96>
    3416:  fe042783           lw a5,-32(s0)
    341a:  0007871b           sext.w a4,a5
    341e:  4785                 li a5,1
    3420:  02f71b63           bne a4,a5,3456 <FUN_000033c2+0x94>
    3424:  fe442783           lw a5,-28(s0)
    3428:  0007871b           sext.w a4,a5
    342c:  4799                 li a5,6
    342e:  02e7e263           bltu a5,a4,3452 <FUN_000033c2+0x90>
    3432:  fe446783           lwu a5,-28(s0)
    3436:  00479713           slli a4,a5,0x4
    343a:  67b9                 lui a5,0xe
    343c:  43078793           addi a5,a5,1072 # e430 <gpio_get_boot_device+0x9a>
    3440:  97ba                 add a5,a5,a4
    3442:  4641                 li a2,16
    3444:  85be                 mv a1,a5
    3446:  fe843503           ld a0,-24(s0)
    344a:  241060ef           jal ra,9e8a <memcpy>
    344e:  4781                 li a5,0
    3450:  a021                 j 3458 <FUN_000033c2+0x96>
    3452:  57fd                 li a5,-1
    3454:  a011                 j 3458 <FUN_000033c2+0x96>
    3456:  57fd                 li a5,-1
    3458:  853e                 mv a0,a5
    345a:  60e2                 ld ra,24(sp)
    345c:  6442                 ld s0,16(sp)
    345e:  6105                 addi sp,sp,32
    3460:  8082                 ret

0000000000003462 <FUN_00003462>:
    3462:  7179                 addi sp,sp,-48
    3464:  f406                 sd ra,40(sp)
    3466:  f022                 sd s0,32(sp)
    3468:  1800                 addi s0,sp,48
    346a:  87aa                 mv a5,a0
    346c:  86ae                 mv a3,a1
    346e:  8732                 mv a4,a2
    3470:  fcf42e23           sw a5,-36(s0)
    3474:  87b6                 mv a5,a3
    3476:  fcf42c23           sw a5,-40(s0)
    347a:  87ba                 mv a5,a4
    347c:  fcf42a23           sw a5,-44(s0)
    3480:  fd842783           lw a5,-40(s0)
    3484:  0187979b           slliw a5,a5,0x18
    3488:  2781                 sext.w a5,a5
    348a:  873e                 mv a4,a5
    348c:  0f0007b7           lui a5,0xf000
    3490:  8ff9                 and a5,a5,a4
    3492:  0007871b           sext.w a4,a5
    3496:  fd442783           lw a5,-44(s0)
    349a:  0107979b           slliw a5,a5,0x10
    349e:  2781                 sext.w a5,a5
    34a0:  86be                 mv a3,a5
    34a2:  00ff07b7           lui a5,0xff0
    34a6:  8ff5                 and a5,a5,a3
    34a8:  2781                 sext.w a5,a5
    34aa:  8fd9                 or a5,a5,a4
    34ac:  fef42623           sw a5,-20(s0)
    34b0:  fec42703           lw a4,-20(s0)
    34b4:  fdc42783           lw a5,-36(s0)
    34b8:  85ba                 mv a1,a4
    34ba:  853e                 mv a0,a5
    34bc:  5b0060ef           jal ra,9a6c <FUN_00009a6c>
    34c0:  0001                 nop
    34c2:  70a2                 ld ra,40(sp)
    34c4:  7402                 ld s0,32(sp)
    34c6:  6145                 addi sp,sp,48
    34c8:  8082                 ret

00000000000034ca <FUN_000034ca>:
    34ca:  7179                 addi sp,sp,-48
    34cc:  f422                 sd s0,40(sp)
    34ce:  1800                 addi s0,sp,48
    34d0:  87aa                 mv a5,a0
    34d2:  feb43023           sd a1,-32(s0)
    34d6:  fcc43c23           sd a2,-40(s0)
    34da:  fef42623           sw a5,-20(s0)
    34de:  fec42783           lw a5,-20(s0)
    34e2:  0187d79b           srliw a5,a5,0x18
    34e6:  2781                 sext.w a5,a5
    34e8:  8bbd                 andi a5,a5,15
    34ea:  0007871b           sext.w a4,a5
    34ee:  fe043783           ld a5,-32(s0)
    34f2:  c398                 sw a4,0(a5)
    34f4:  fec42783           lw a5,-20(s0)
    34f8:  0107d79b           srliw a5,a5,0x10
    34fc:  2781                 sext.w a5,a5
    34fe:  0ff7f793           andi a5,a5,255
    3502:  0007871b           sext.w a4,a5
    3506:  fd843783           ld a5,-40(s0)
    350a:  c398                 sw a4,0(a5)
    350c:  0001                 nop
    350e:  7422                 ld s0,40(sp)
    3510:  6145                 addi sp,sp,48
    3512:  8082                 ret

0000000000003514 <FUN_00003514>:
    3514:  7179                 addi sp,sp,-48
    3516:  f406                 sd ra,40(sp)
    3518:  f022                 sd s0,32(sp)
    351a:  1800                 addi s0,sp,48
    351c:  87aa                 mv a5,a0
    351e:  872e                 mv a4,a1
    3520:  fcf42e23           sw a5,-36(s0)
    3524:  87ba                 mv a5,a4
    3526:  fcf42c23           sw a5,-40(s0)
    352a:  fe042623           sw zero,-20(s0)
    352e:  fe042423           sw zero,-24(s0)
    3532:  070907b7           lui a5,0x7090
    3536:  32078513           addi a0,a5,800 # 7090320 <gpio_get_boot_device+0x7081f8a
    353a:  64f040ef           jal ra,8388 <debug_select_word>
    353e:  fd842783           lw a5,-40(s0)
    3542:  0007871b           sext.w a4,a5
    3546:  00eff7b7           lui a5,0xeff
    354a:  80078793           addi a5,a5,-2048 # efe800 <gpio_get_boot_device+0xef046a
    354e:  04f70563           beq a4,a5,3598 <FUN_00003514+0x84>
    3552:  fe840693           addi a3,s0,-24
    3556:  fec40713           addi a4,s0,-20
    355a:  fd842783           lw a5,-40(s0)
    355e:  8636                 mv a2,a3
    3560:  85ba                 mv a1,a4
    3562:  853e                 mv a0,a5
    3564:  f67ff0ef           jal ra,34ca <FUN_000034ca>
    3568:  fec42783           lw a5,-20(s0)
    356c:  fe842703           lw a4,-24(s0)
    3570:  85ba                 mv a1,a4
    3572:  853e                 mv a0,a5
    3574:  050000ef           jal ra,35c4 <FUN_000035c4>
    3578:  87aa                 mv a5,a0
    357a:  e399                 bnez a5,3580 <FUN_00003514+0x6c>
    357c:  4781                 li a5,0
    357e:  a835                 j 35ba <FUN_00003514+0xa6>
    3580:  fec42783           lw a5,-20(s0)
    3584:  fe842703           lw a4,-24(s0)
    3588:  85ba                 mv a1,a4
    358a:  853e                 mv a0,a5
    358c:  298000ef           jal ra,3824 <FUN_00003824>
    3590:  87aa                 mv a5,a0
    3592:  e399                 bnez a5,3598 <FUN_00003514+0x84>
    3594:  4781                 li a5,0
    3596:  a015                 j 35ba <FUN_00003514+0xa6>
    3598:  4581                 li a1,0
    359a:  4501                 li a0,0
    359c:  028000ef           jal ra,35c4 <FUN_000035c4>
    35a0:  87aa                 mv a5,a0
    35a2:  e399                 bnez a5,35a8 <FUN_00003514+0x94>
    35a4:  4781                 li a5,0
    35a6:  a811                 j 35ba <FUN_00003514+0xa6>
    35a8:  4581                 li a1,0
    35aa:  4505                 li a0,1
    35ac:  278000ef           jal ra,3824 <FUN_00003824>
    35b0:  87aa                 mv a5,a0
    35b2:  e399                 bnez a5,35b8 <FUN_00003514+0xa4>
    35b4:  4781                 li a5,0
    35b6:  a011                 j 35ba <FUN_00003514+0xa6>
    35b8:  57fd                 li a5,-1
    35ba:  853e                 mv a0,a5
    35bc:  70a2                 ld ra,40(sp)
    35be:  7402                 ld s0,32(sp)
    35c0:  6145                 addi sp,sp,48
    35c2:  8082                 ret

00000000000035c4 <FUN_000035c4>:
    35c4:  7159                 addi sp,sp,-112
    35c6:  f486                 sd ra,104(sp)
    35c8:  f0a2                 sd s0,96(sp)
    35ca:  1880                 addi s0,sp,112
    35cc:  87aa                 mv a5,a0
    35ce:  872e                 mv a4,a1
    35d0:  f8f42e23           sw a5,-100(s0)
    35d4:  87ba                 mv a5,a4
    35d6:  f8f42c23           sw a5,-104(s0)
    35da:  fc043c23           sd zero,-40(s0)
    35de:  fc043823           sd zero,-48(s0)
    35e2:  4501                 li a0,0
    35e4:  0f9030ef           jal ra,6edc <FUN_00006edc>
    35e8:  0a0040ef           jal ra,7688 <FUN_00007688>
    35ec:  f9842783           lw a5,-104(s0)
    35f0:  fef42623           sw a5,-20(s0)
    35f4:  a421                 j 37fc <FUN_000035c4+0x238>
    35f6:  f9c42683           lw a3,-100(s0)
    35fa:  fec42703           lw a4,-20(s0)
    35fe:  fa840793           addi a5,s0,-88
    3602:  8636                 mv a2,a3
    3604:  85ba                 mv a1,a4
    3606:  853e                 mv a0,a5
    3608:  dbbff0ef           jal ra,33c2 <FUN_000033c2>
    360c:  87aa                 mv a5,a0
    360e:  fcf42623           sw a5,-52(s0)
    3612:  fcc42783           lw a5,-52(s0)
    3616:  0007871b           sext.w a4,a5
    361a:  57fd                 li a5,-1
    361c:  1cf70a63           beq a4,a5,37f0 <FUN_000035c4+0x22c>
    3620:  fa842783           lw a5,-88(s0)
    3624:  fcf42423           sw a5,-56(s0)
    3628:  fac42783           lw a5,-84(s0)
    362c:  fcf42223           sw a5,-60(s0)
    3630:  fb442783           lw a5,-76(s0)
    3634:  fcf42023           sw a5,-64(s0)
    3638:  fb042783           lw a5,-80(s0)
    363c:  faf42e23           sw a5,-68(s0)
    3640:  fc842683           lw a3,-56(s0)
    3644:  fc442703           lw a4,-60(s0)
    3648:  fbc42783           lw a5,-68(s0)
    364c:  fc042603           lw a2,-64(s0)
    3650:  8832                 mv a6,a2
    3652:  4605                 li a2,1
    3654:  000205b7           lui a1,0x20
    3658:  4501                 li a0,0
    365a:  068040ef           jal ra,76c2 <FUN_000076c2>
    365e:  87aa                 mv a5,a0
    3660:  873e                 mv a4,a5
    3662:  4789                 li a5,2
    3664:  00f71963           bne a4,a5,3676 <FUN_000035c4+0xb2>
    3668:  0f000613           li a2,240
    366c:  4581                 li a1,0
    366e:  4511                 li a0,4
    3670:  5b9040ef           jal ra,8428 <rtc_brom_debug>
    3674:  aabd                 j 37f2 <FUN_000035c4+0x22e>
    3676:  000487b7           lui a5,0x48
    367a:  e107a783           lw a5,-496(a5) # 47e10 <gpio_get_boot_device+0x39a7a>
    367e:  cba1                 beqz a5,36ce <FUN_000035c4+0x10a>
    3680:  67b9                 lui a5,0xe
    3682:  4a078593           addi a1,a5,1184 # e4a0 <gpio_get_boot_device+0x10a>
    3686:  00020537           lui a0,0x20
    368a:  789040ef           jal ra,8612 <boot0_check_magic>
    368e:  87aa                 mv a5,a0
    3690:  cb81                 beqz a5,36a0 <FUN_000035c4+0xdc>
    3692:  0f100613           li a2,241
    3696:  4581                 li a1,0
    3698:  4511                 li a0,4
    369a:  58f040ef           jal ra,8428 <rtc_brom_debug>
    369e:  aa91                 j 37f2 <FUN_000035c4+0x22e>
    36a0:  000207b7           lui a5,0x20
    36a4:  fcf43c23           sd a5,-40(s0)
    36a8:  fd843783           ld a5,-40(s0)
    36ac:  01c7c703           lbu a4,28(a5) # 2001c <gpio_get_boot_device+0x11c86>
    36b0:  01d7c683           lbu a3,29(a5)
    36b4:  06a2                 slli a3,a3,0x8
    36b6:  8f55                 or a4,a4,a3
    36b8:  01e7c683           lbu a3,30(a5)
    36bc:  06c2                 slli a3,a3,0x10
    36be:  8f55                 or a4,a4,a3
    36c0:  01f7c783           lbu a5,31(a5)
    36c4:  07e2                 slli a5,a5,0x18
    36c6:  8fd9                 or a5,a5,a4
    36c8:  fef42423           sw a5,-24(s0)
    36cc:  a815                 j 3700 <FUN_000035c4+0x13c>
    36ce:  67b9                 lui a5,0xe
    36d0:  4b078593           addi a1,a5,1200 # e4b0 <gpio_get_boot_device+0x11a>
    36d4:  00020537           lui a0,0x20
    36d8:  73b040ef           jal ra,8612 <boot0_check_magic>
    36dc:  87aa                 mv a5,a0
    36de:  cb81                 beqz a5,36ee <FUN_000035c4+0x12a>
    36e0:  0f100613           li a2,241
    36e4:  4581                 li a1,0
    36e6:  4511                 li a0,4
    36e8:  541040ef           jal ra,8428 <rtc_brom_debug>
    36ec:  a219                 j 37f2 <FUN_000035c4+0x22e>
    36ee:  000207b7           lui a5,0x20
    36f2:  fcf43823           sd a5,-48(s0)
    36f6:  fd043783           ld a5,-48(s0)
    36fa:  4b9c                 lw a5,16(a5)
    36fc:  fef42423           sw a5,-24(s0)
    3700:  fe842783           lw a5,-24(s0)
    3704:  3ff7f793           andi a5,a5,1023
    3708:  2781                 sext.w a5,a5
    370a:  cb81                 beqz a5,371a <FUN_000035c4+0x156>
    370c:  0f200613           li a2,242
    3710:  4581                 li a1,0
    3712:  4511                 li a0,4
    3714:  515040ef           jal ra,8428 <rtc_brom_debug>
    3718:  a8e9                 j 37f2 <FUN_000035c4+0x22e>
    371a:  fc442783           lw a5,-60(s0)
    371e:  fe842703           lw a4,-24(s0)
    3722:  02f777bb           remuw a5,a4,a5
    3726:  2781                 sext.w a5,a5
    3728:  cf81                 beqz a5,3740 <FUN_000035c4+0x17c>
    372a:  fc442783           lw a5,-60(s0)
    372e:  fe842703           lw a4,-24(s0)
    3732:  02f757bb           divuw a5,a4,a5
    3736:  2781                 sext.w a5,a5
    3738:  2785                 addiw a5,a5,1
    373a:  fef42223           sw a5,-28(s0)
    373e:  a809                 j 3750 <FUN_000035c4+0x18c>
    3740:  fc442783           lw a5,-60(s0)
    3744:  fe842703           lw a4,-24(s0)
    3748:  02f757bb           divuw a5,a4,a5
    374c:  fef42223           sw a5,-28(s0)
    3750:  fc842683           lw a3,-56(s0)
    3754:  fc442703           lw a4,-60(s0)
    3758:  fbc42783           lw a5,-68(s0)
    375c:  fc042583           lw a1,-64(s0)
    3760:  fe442603           lw a2,-28(s0)
    3764:  882e                 mv a6,a1
    3766:  000205b7           lui a1,0x20
    376a:  4501                 li a0,0
    376c:  757030ef           jal ra,76c2 <FUN_000076c2>
    3770:  87aa                 mv a5,a0
    3772:  873e                 mv a4,a5
    3774:  4789                 li a5,2
    3776:  00f71963           bne a4,a5,3788 <FUN_000035c4+0x1c4>
    377a:  0f300613           li a2,243
    377e:  4581                 li a1,0
    3780:  4511                 li a0,4
    3782:  4a7040ef           jal ra,8428 <rtc_brom_debug>
    3786:  a0b5                 j 37f2 <FUN_000035c4+0x22e>
    3788:  fe842783           lw a5,-24(s0)
    378c:  85be                 mv a1,a5
    378e:  00020537           lui a0,0x20
    3792:  725040ef           jal ra,86b6 <FUN_000086b6>
    3796:  87aa                 mv a5,a0
    3798:  e7a9                 bnez a5,37e2 <FUN_000035c4+0x21e>
    379a:  000487b7           lui a5,0x48
    379e:  e107a783           lw a5,-496(a5) # 47e10 <gpio_get_boot_device+0x39a7a>
    37a2:  c799                 beqz a5,37b0 <FUN_000035c4+0x1ec>
    37a4:  fd843783           ld a5,-40(s0)
    37a8:  4711                 li a4,4
    37aa:  02e78023           sb a4,32(a5)
    37ae:  a031                 j 37ba <FUN_000035c4+0x1f6>
    37b0:  fd043783           ld a5,-48(s0)
    37b4:  4711                 li a4,4
    37b6:  02e78423           sb a4,40(a5)
    37ba:  fec42703           lw a4,-20(s0)
    37be:  f9c42783           lw a5,-100(s0)
    37c2:  863a                 mv a2,a4
    37c4:  85be                 mv a1,a5
    37c6:  4511                 li a0,4
    37c8:  c9bff0ef           jal ra,3462 <FUN_00003462>
    37cc:  6785                 lui a5,0x1
    37ce:  fff78613           addi a2,a5,-1 # fff <FUN_00000f2c+0xd3>
    37d2:  4581                 li a1,0
    37d4:  4511                 li a0,4
    37d6:  453040ef           jal ra,8428 <rtc_brom_debug>
    37da:  7f6030ef           jal ra,6fd0 <FUN_00006fd0>
    37de:  4781                 li a5,0
    37e0:  a82d                 j 381a <FUN_000035c4+0x256>
    37e2:  0f400613           li a2,244
    37e6:  4581                 li a1,0
    37e8:  4511                 li a0,4
    37ea:  43f040ef           jal ra,8428 <rtc_brom_debug>
    37ee:  a011                 j 37f2 <FUN_000035c4+0x22e>
    37f0:  0001                 nop
    37f2:  fec42783           lw a5,-20(s0)
    37f6:  2785                 addiw a5,a5,1
    37f8:  fef42623           sw a5,-20(s0)
    37fc:  f9c42783           lw a5,-100(s0)
    3800:  2781                 sext.w a5,a5
    3802:  c399                 beqz a5,3808 <FUN_000035c4+0x244>
    3804:  479d                 li a5,7
    3806:  a011                 j 380a <FUN_000035c4+0x246>
    3808:  4789                 li a5,2
    380a:  fec42703           lw a4,-20(s0)
    380e:  2701                 sext.w a4,a4
    3810:  def763e3           bltu a4,a5,35f6 <FUN_000035c4+0x32>
    3814:  7bc030ef           jal ra,6fd0 <FUN_00006fd0>
    3818:  57fd                 li a5,-1
    381a:  853e                 mv a0,a5
    381c:  70a6                 ld ra,104(sp)
    381e:  7406                 ld s0,96(sp)
    3820:  6165                 addi sp,sp,112
    3822:  8082                 ret

0000000000003824 <FUN_00003824>:
    3824:  7159                 addi sp,sp,-112
    3826:  f486                 sd ra,104(sp)
    3828:  f0a2                 sd s0,96(sp)
    382a:  1880                 addi s0,sp,112
    382c:  87aa                 mv a5,a0
    382e:  872e                 mv a4,a1
    3830:  f8f42e23           sw a5,-100(s0)
    3834:  87ba                 mv a5,a4
    3836:  f8f42c23           sw a5,-104(s0)
    383a:  fe042423           sw zero,-24(s0)
    383e:  fc043823           sd zero,-48(s0)
    3842:  fc043423           sd zero,-56(s0)
    3846:  4501                 li a0,0
    3848:  694030ef           jal ra,6edc <FUN_00006edc>
    384c:  63d030ef           jal ra,7688 <FUN_00007688>
    3850:  f9842783           lw a5,-104(s0)
    3854:  fef42623           sw a5,-20(s0)
    3858:  a461                 j 3ae0 <FUN_00003824+0x2bc>
    385a:  fe042423           sw zero,-24(s0)
    385e:  04000793           li a5,64
    3862:  fcf42e23           sw a5,-36(s0)
    3866:  a485                 j 3ac6 <FUN_00003824+0x2a2>
    3868:  fe842783           lw a5,-24(s0)
    386c:  2785                 addiw a5,a5,1
    386e:  fef42423           sw a5,-24(s0)
    3872:  f9c42683           lw a3,-100(s0)
    3876:  fec42703           lw a4,-20(s0)
    387a:  fa040793           addi a5,s0,-96
    387e:  8636                 mv a2,a3
    3880:  85ba                 mv a1,a4
    3882:  853e                 mv a0,a5
    3884:  b3fff0ef           jal ra,33c2 <FUN_000033c2>
    3888:  87aa                 mv a5,a0
    388a:  fcf42223           sw a5,-60(s0)
    388e:  fc442783           lw a5,-60(s0)
    3892:  0007871b           sext.w a4,a5
    3896:  57fd                 li a5,-1
    3898:  22f70063           beq a4,a5,3ab8 <FUN_00003824+0x294>
    389c:  fa042783           lw a5,-96(s0)
    38a0:  fcf42023           sw a5,-64(s0)
    38a4:  fa442783           lw a5,-92(s0)
    38a8:  faf42e23           sw a5,-68(s0)
    38ac:  fac42783           lw a5,-84(s0)
    38b0:  faf42c23           sw a5,-72(s0)
    38b4:  fa842783           lw a5,-88(s0)
    38b8:  faf42a23           sw a5,-76(s0)
    38bc:  fc042683           lw a3,-64(s0)
    38c0:  fbc42703           lw a4,-68(s0)
    38c4:  fb442783           lw a5,-76(s0)
    38c8:  fb842603           lw a2,-72(s0)
    38cc:  fdc42503           lw a0,-36(s0)
    38d0:  8832                 mv a6,a2
    38d2:  4605                 li a2,1
    38d4:  000205b7           lui a1,0x20
    38d8:  5eb030ef           jal ra,76c2 <FUN_000076c2>
    38dc:  87aa                 mv a5,a0
    38de:  873e                 mv a4,a5
    38e0:  4789                 li a5,2
    38e2:  00f71b63           bne a4,a5,38f8 <FUN_00003824+0xd4>
    38e6:  fe842783           lw a5,-24(s0)
    38ea:  0f000613           li a2,240
    38ee:  85be                 mv a1,a5
    38f0:  4511                 li a0,4
    38f2:  337040ef           jal ra,8428 <rtc_brom_debug>
    38f6:  a2d1                 j 3aba <FUN_00003824+0x296>
    38f8:  000487b7           lui a5,0x48
    38fc:  e107a783           lw a5,-496(a5) # 47e10 <gpio_get_boot_device+0x39a7a>
    3900:  cbb1                 beqz a5,3954 <FUN_00003824+0x130>
    3902:  67b9                 lui a5,0xe
    3904:  4a078593           addi a1,a5,1184 # e4a0 <gpio_get_boot_device+0x10a>
    3908:  00020537           lui a0,0x20
    390c:  507040ef           jal ra,8612 <boot0_check_magic>
    3910:  87aa                 mv a5,a0
    3912:  cb91                 beqz a5,3926 <FUN_00003824+0x102>
    3914:  fe842783           lw a5,-24(s0)
    3918:  0f100613           li a2,241
    391c:  85be                 mv a1,a5
    391e:  4511                 li a0,4
    3920:  309040ef           jal ra,8428 <rtc_brom_debug>
    3924:  aa59                 j 3aba <FUN_00003824+0x296>
    3926:  000207b7           lui a5,0x20
    392a:  fcf43823           sd a5,-48(s0)
    392e:  fd043783           ld a5,-48(s0)
    3932:  01c7c703           lbu a4,28(a5) # 2001c <gpio_get_boot_device+0x11c86>
    3936:  01d7c683           lbu a3,29(a5)
    393a:  06a2                 slli a3,a3,0x8
    393c:  8f55                 or a4,a4,a3
    393e:  01e7c683           lbu a3,30(a5)
    3942:  06c2                 slli a3,a3,0x10
    3944:  8f55                 or a4,a4,a3
    3946:  01f7c783           lbu a5,31(a5)
    394a:  07e2                 slli a5,a5,0x18
    394c:  8fd9                 or a5,a5,a4
    394e:  fef42223           sw a5,-28(s0)
    3952:  a825                 j 398a <FUN_00003824+0x166>
    3954:  67b9                 lui a5,0xe
    3956:  4b078593           addi a1,a5,1200 # e4b0 <gpio_get_boot_device+0x11a>
    395a:  00020537           lui a0,0x20
    395e:  4b5040ef           jal ra,8612 <boot0_check_magic>
    3962:  87aa                 mv a5,a0
    3964:  cb91                 beqz a5,3978 <FUN_00003824+0x154>
    3966:  fe842783           lw a5,-24(s0)
    396a:  0f100613           li a2,241
    396e:  85be                 mv a1,a5
    3970:  4511                 li a0,4
    3972:  2b7040ef           jal ra,8428 <rtc_brom_debug>
    3976:  a291                 j 3aba <FUN_00003824+0x296>
    3978:  000207b7           lui a5,0x20
    397c:  fcf43423           sd a5,-56(s0)
    3980:  fc843783           ld a5,-56(s0)
    3984:  4b9c                 lw a5,16(a5)
    3986:  fef42223           sw a5,-28(s0)
    398a:  fe442783           lw a5,-28(s0)
    398e:  3ff7f793           andi a5,a5,1023
    3992:  2781                 sext.w a5,a5
    3994:  cb91                 beqz a5,39a8 <FUN_00003824+0x184>
    3996:  fe842783           lw a5,-24(s0)
    399a:  0f200613           li a2,242
    399e:  85be                 mv a1,a5
    39a0:  4511                 li a0,4
    39a2:  287040ef           jal ra,8428 <rtc_brom_debug>
    39a6:  aa11                 j 3aba <FUN_00003824+0x296>
    39a8:  fbc42783           lw a5,-68(s0)
    39ac:  fe442703           lw a4,-28(s0)
    39b0:  02f777bb           remuw a5,a4,a5
    39b4:  2781                 sext.w a5,a5
    39b6:  cf81                 beqz a5,39ce <FUN_00003824+0x1aa>
    39b8:  fbc42783           lw a5,-68(s0)
    39bc:  fe442703           lw a4,-28(s0)
    39c0:  02f757bb           divuw a5,a4,a5
    39c4:  2781                 sext.w a5,a5
    39c6:  2785                 addiw a5,a5,1
    39c8:  fef42023           sw a5,-32(s0)
    39cc:  a809                 j 39de <FUN_00003824+0x1ba>
    39ce:  fbc42783           lw a5,-68(s0)
    39d2:  fe442703           lw a4,-28(s0)
    39d6:  02f757bb           divuw a5,a4,a5
    39da:  fef42023           sw a5,-32(s0)
    39de:  fc042683           lw a3,-64(s0)
    39e2:  fbc42703           lw a4,-68(s0)
    39e6:  fb442783           lw a5,-76(s0)
    39ea:  fb842583           lw a1,-72(s0)
    39ee:  fe042603           lw a2,-32(s0)
    39f2:  fdc42503           lw a0,-36(s0)
    39f6:  882e                 mv a6,a1
    39f8:  000205b7           lui a1,0x20
    39fc:  4c7030ef           jal ra,76c2 <FUN_000076c2>
    3a00:  87aa                 mv a5,a0
    3a02:  873e                 mv a4,a5
    3a04:  4789                 li a5,2
    3a06:  00f71b63           bne a4,a5,3a1c <FUN_00003824+0x1f8>
    3a0a:  fe842783           lw a5,-24(s0)
    3a0e:  0f300613           li a2,243
    3a12:  85be                 mv a1,a5
    3a14:  4511                 li a0,4
    3a16:  213040ef           jal ra,8428 <rtc_brom_debug>
    3a1a:  a045                 j 3aba <FUN_00003824+0x296>
    3a1c:  fe442783           lw a5,-28(s0)
    3a20:  85be                 mv a1,a5
    3a22:  00020537           lui a0,0x20
    3a26:  491040ef           jal ra,86b6 <FUN_000086b6>
    3a2a:  87aa                 mv a5,a0
    3a2c:  efad                 bnez a5,3aa6 <FUN_00003824+0x282>
    3a2e:  000487b7           lui a5,0x48
    3a32:  e107a783           lw a5,-496(a5) # 47e10 <gpio_get_boot_device+0x39a7a>
    3a36:  c395                 beqz a5,3a5a <FUN_00003824+0x236>
    3a38:  fe842783           lw a5,-24(s0)
    3a3c:  0ff7f793           andi a5,a5,255
    3a40:  0047979b           slliw a5,a5,0x4
    3a44:  0ff7f793           andi a5,a5,255
    3a48:  0047e793           ori a5,a5,4
    3a4c:  0ff7f713           andi a4,a5,255
    3a50:  fd043783           ld a5,-48(s0)
    3a54:  02e78023           sb a4,32(a5)
    3a58:  a00d                 j 3a7a <FUN_00003824+0x256>
    3a5a:  fe842783           lw a5,-24(s0)
    3a5e:  0ff7f793           andi a5,a5,255
    3a62:  0047979b           slliw a5,a5,0x4
    3a66:  0ff7f793           andi a5,a5,255
    3a6a:  0047e793           ori a5,a5,4
    3a6e:  0ff7f713           andi a4,a5,255
    3a72:  fc843783           ld a5,-56(s0)
    3a76:  02e78423           sb a4,40(a5)
    3a7a:  fec42703           lw a4,-20(s0)
    3a7e:  f9c42783           lw a5,-100(s0)
    3a82:  863a                 mv a2,a4
    3a84:  85be                 mv a1,a5
    3a86:  4511                 li a0,4
    3a88:  9dbff0ef           jal ra,3462 <FUN_00003462>
    3a8c:  fe842703           lw a4,-24(s0)
    3a90:  6785                 lui a5,0x1
    3a92:  fff78613           addi a2,a5,-1 # fff <FUN_00000f2c+0xd3>
    3a96:  85ba                 mv a1,a4
    3a98:  4511                 li a0,4
    3a9a:  18f040ef           jal ra,8428 <rtc_brom_debug>
    3a9e:  532030ef           jal ra,6fd0 <FUN_00006fd0>
    3aa2:  4781                 li a5,0
    3aa4:  a8a9                 j 3afe <FUN_00003824+0x2da>
    3aa6:  fe842783           lw a5,-24(s0)
    3aaa:  0f400613           li a2,244
    3aae:  85be                 mv a1,a5
    3ab0:  4511                 li a0,4
    3ab2:  177040ef           jal ra,8428 <rtc_brom_debug>
    3ab6:  a011                 j 3aba <FUN_00003824+0x296>
    3ab8:  0001                 nop
    3aba:  fdc42783           lw a5,-36(s0)
    3abe:  0407879b           addiw a5,a5,64
    3ac2:  fcf42e23           sw a5,-36(s0)
    3ac6:  fdc42783           lw a5,-36(s0)
    3aca:  0007871b           sext.w a4,a5
    3ace:  1ff00793           li a5,511
    3ad2:  d8e7fbe3           bgeu a5,a4,3868 <FUN_00003824+0x44>
    3ad6:  fec42783           lw a5,-20(s0)
    3ada:  2785                 addiw a5,a5,1
    3adc:  fef42623           sw a5,-20(s0)
    3ae0:  f9c42783           lw a5,-100(s0)
    3ae4:  2781                 sext.w a5,a5
    3ae6:  c399                 beqz a5,3aec <FUN_00003824+0x2c8>
    3ae8:  479d                 li a5,7
    3aea:  a011                 j 3aee <FUN_00003824+0x2ca>
    3aec:  4789                 li a5,2
    3aee:  fec42703           lw a4,-20(s0)
    3af2:  2701                 sext.w a4,a4
    3af4:  d6f763e3           bltu a4,a5,385a <FUN_00003824+0x36>
    3af8:  4d8030ef           jal ra,6fd0 <FUN_00006fd0>
    3afc:  57fd                 li a5,-1
    3afe:  853e                 mv a0,a5
    3b00:  70a6                 ld ra,104(sp)
    3b02:  7406                 ld s0,96(sp)
    3b04:  6165                 addi sp,sp,112
    3b06:  8082                 ret

0000000000003b08 <memset>:
    3b08:  1101                 addi sp,sp,-32
    3b0a:  ec06                 sd ra,24(sp)
    3b0c:  e822                 sd s0,16(sp)
    3b0e:  1000                 addi s0,sp,32
    3b10:  fea43423           sd a0,-24(s0)
    3b14:  87ae                 mv a5,a1
    3b16:  8732                 mv a4,a2
    3b18:  fef42223           sw a5,-28(s0)
    3b1c:  87ba                 mv a5,a4
    3b1e:  fef42023           sw a5,-32(s0)
    3b22:  fe442783           lw a5,-28(s0)
    3b26:  0ff7f793           andi a5,a5,255
    3b2a:  fe042703           lw a4,-32(s0)
    3b2e:  863a                 mv a2,a4
    3b30:  85be                 mv a1,a5
    3b32:  fe843503           ld a0,-24(s0)
    3b36:  3b4060ef           jal ra,9eea <memset>
    3b3a:  0001                 nop
    3b3c:  60e2                 ld ra,24(sp)
    3b3e:  6442                 ld s0,16(sp)
    3b40:  6105                 addi sp,sp,32
    3b42:  8082                 ret

0000000000003b44 <load_boot0_from_sd>:
    3b44:  7139                 addi sp,sp,-64
    3b46:  fc06                 sd ra,56(sp)
    3b48:  f822                 sd s0,48(sp)
    3b4a:  0080                 addi s0,sp,64
    3b4c:  87aa                 mv a5,a0
    3b4e:  872e                 mv a4,a1
    3b50:  fcc43023           sd a2,-64(s0)
    3b54:  fcf42623           sw a5,-52(s0)
    3b58:  87ba                 mv a5,a4
    3b5a:  fcf42423           sw a5,-56(s0)
    3b5e:  57fd                 li a5,-1
    3b60:  fef42623           sw a5,-20(s0)
    3b64:  fe042423           sw zero,-24(s0)
    3b68:  fe043023           sd zero,-32(s0)
    3b6c:  fc043c23           sd zero,-40(s0)
    3b70:  fc042a23           sw zero,-44(s0)
    3b74:  fc842783           lw a5,-56(s0)
    3b78:  2781                 sext.w a5,a5
    3b7a:  ef89                 bnez a5,3b94 <load_boot0_from_sd+0x50>
    3b7c:  00eff7b7           lui a5,0xeff
    3b80:  80078613           addi a2,a5,-2048 # efe800 <gpio_get_boot_device+0xef046a
    3b84:  4581                 li a1,0
    3b86:  4501                 li a0,0
    3b88:  0a1040ef           jal ra,8428 <rtc_brom_debug>
    3b8c:  47c1                 li a5,16
    3b8e:  fcf42a23           sw a5,-44(s0)
    3b92:  a81d                 j 3bc8 <load_boot0_from_sd+0x84>
    3b94:  fc842783           lw a5,-56(s0)
    3b98:  0007871b           sext.w a4,a5
    3b9c:  4785                 li a5,1
    3b9e:  00f71f63           bne a4,a5,3bbc <load_boot0_from_sd+0x78>
    3ba2:  00eff7b7           lui a5,0xeff
    3ba6:  80078613           addi a2,a5,-2048 # efe800 <gpio_get_boot_device+0xef046a
    3baa:  4585                 li a1,1
    3bac:  4501                 li a0,0
    3bae:  07b040ef           jal ra,8428 <rtc_brom_debug>
    3bb2:  10000793           li a5,256
    3bb6:  fcf42a23           sw a5,-44(s0)
    3bba:  a039                 j 3bc8 <load_boot0_from_sd+0x84>
    3bbc:  57fd                 li a5,-1
    3bbe:  fef42623           sw a5,-20(s0)
    3bc2:  fec42783           lw a5,-20(s0)
    3bc6:  ace9                 j 3ea0 <load_boot0_from_sd+0x35c>
    3bc8:  fd442783           lw a5,-44(s0)
    3bcc:  000206b7           lui a3,0x20
    3bd0:  4605                 li a2,1
    3bd2:  85be                 mv a1,a5
    3bd4:  fc043503           ld a0,-64(s0)
    3bd8:  3a1020ef           jal ra,6778 <sd_read_sectors>
    3bdc:  87aa                 mv a5,a0
    3bde:  2781                 sext.w a5,a5
    3be0:  873e                 mv a4,a5
    3be2:  4785                 li a5,1
    3be4:  04f70963           beq a4,a5,3c36 <load_boot0_from_sd+0xf2>
    3be8:  005b97b7           lui a5,0x5b9
    3bec:  d8078593           addi a1,a5,-640 # 5b8d80 <gpio_get_boot_device+0x5aa9ea>
    3bf0:  fc043503           ld a0,-64(s0)
    3bf4:  438020ef           jal ra,602c <FUN_0000602c>
    3bf8:  fd442783           lw a5,-44(s0)
    3bfc:  000206b7           lui a3,0x20
    3c00:  4605                 li a2,1
    3c02:  85be                 mv a1,a5
    3c04:  fc043503           ld a0,-64(s0)
    3c08:  371020ef           jal ra,6778 <sd_read_sectors>
    3c0c:  87aa                 mv a5,a0
    3c0e:  2781                 sext.w a5,a5
    3c10:  873e                 mv a4,a5
    3c12:  4785                 li a5,1
    3c14:  02f70163           beq a4,a5,3c36 <load_boot0_from_sd+0xf2>
    3c18:  0f000613           li a2,240
    3c1c:  00eff7b7           lui a5,0xeff
    3c20:  80078593           addi a1,a5,-2048 # efe800 <gpio_get_boot_device+0xef046a
    3c24:  4501                 li a0,0
    3c26:  003040ef           jal ra,8428 <rtc_brom_debug>
    3c2a:  57fd                 li a5,-1
    3c2c:  fef42623           sw a5,-20(s0)
    3c30:  fec42783           lw a5,-20(s0)
    3c34:  a4b5                 j 3ea0 <load_boot0_from_sd+0x35c>
    3c36:  000487b7           lui a5,0x48
    3c3a:  e107a783           lw a5,-496(a5) # 47e10 <gpio_get_boot_device+0x39a7a>
    3c3e:  c3a5                 beqz a5,3c9e <load_boot0_from_sd+0x15a>
    3c40:  67b9                 lui a5,0xe
    3c42:  4c078593           addi a1,a5,1216 # e4c0 <gpio_get_boot_device+0x12a>
    3c46:  00020537           lui a0,0x20
    3c4a:  1c9040ef           jal ra,8612 <boot0_check_magic>
    3c4e:  87aa                 mv a5,a0
    3c50:  c385                 beqz a5,3c70 <load_boot0_from_sd+0x12c>
    3c52:  0f100613           li a2,241
    3c56:  00eff7b7           lui a5,0xeff
    3c5a:  80078593           addi a1,a5,-2048 # efe800 <gpio_get_boot_device+0xef046a
    3c5e:  4501                 li a0,0
    3c60:  7c8040ef           jal ra,8428 <rtc_brom_debug>
    3c64:  57fd                 li a5,-1
    3c66:  fef42623           sw a5,-20(s0)
    3c6a:  fec42783           lw a5,-20(s0)
    3c6e:  ac0d                 j 3ea0 <load_boot0_from_sd+0x35c>
    3c70:  000207b7           lui a5,0x20
    3c74:  fcf43c23           sd a5,-40(s0)
    3c78:  fd843783           ld a5,-40(s0)
    3c7c:  01c7c703           lbu a4,28(a5) # 2001c <gpio_get_boot_device+0x11c86>
    3c80:  01d7c683           lbu a3,29(a5)
    3c84:  06a2                 slli a3,a3,0x8
    3c86:  8f55                 or a4,a4,a3
    3c88:  01e7c683           lbu a3,30(a5)
    3c8c:  06c2                 slli a3,a3,0x10
    3c8e:  8f55                 or a4,a4,a3
    3c90:  01f7c783           lbu a5,31(a5)
    3c94:  07e2                 slli a5,a5,0x18
    3c96:  8fd9                 or a5,a5,a4
    3c98:  fef42423           sw a5,-24(s0)
    3c9c:  a091                 j 3ce0 <load_boot0_from_sd+0x19c>
    3c9e:  67b9                 lui a5,0xe
    3ca0:  4d078593           addi a1,a5,1232 # e4d0 <gpio_get_boot_device+0x13a>
    3ca4:  00020537           lui a0,0x20
    3ca8:  16b040ef           jal ra,8612 <boot0_check_magic>
    3cac:  87aa                 mv a5,a0
    3cae:  c385                 beqz a5,3cce <load_boot0_from_sd+0x18a>
    3cb0:  0f100613           li a2,241
    3cb4:  00eff7b7           lui a5,0xeff
    3cb8:  80078593           addi a1,a5,-2048 # efe800 <gpio_get_boot_device+0xef046a
    3cbc:  4501                 li a0,0
    3cbe:  76a040ef           jal ra,8428 <rtc_brom_debug>
    3cc2:  57fd                 li a5,-1
    3cc4:  fef42623           sw a5,-20(s0)
    3cc8:  fec42783           lw a5,-20(s0)
    3ccc:  aad1                 j 3ea0 <load_boot0_from_sd+0x35c>
    3cce:  000207b7           lui a5,0x20
    3cd2:  fef43023           sd a5,-32(s0)
    3cd6:  fe043783           ld a5,-32(s0)
    3cda:  4b9c                 lw a5,16(a5)
    3cdc:  fef42423           sw a5,-24(s0)
    3ce0:  fe842783           lw a5,-24(s0)
    3ce4:  1ff7f793           andi a5,a5,511
    3ce8:  2781                 sext.w a5,a5
    3cea:  c385                 beqz a5,3d0a <load_boot0_from_sd+0x1c6>
    3cec:  0f200613           li a2,242
    3cf0:  00eff7b7           lui a5,0xeff
    3cf4:  80078593           addi a1,a5,-2048 # efe800 <gpio_get_boot_device+0xef046a
    3cf8:  4501                 li a0,0
    3cfa:  72e040ef           jal ra,8428 <rtc_brom_debug>
    3cfe:  57fd                 li a5,-1
    3d00:  fef42623           sw a5,-20(s0)
    3d04:  fec42783           lw a5,-20(s0)
    3d08:  aa61                 j 3ea0 <load_boot0_from_sd+0x35c>
    3d0a:  fe842783           lw a5,-24(s0)
    3d0e:  0097d79b           srliw a5,a5,0x9
    3d12:  0007871b           sext.w a4,a5
    3d16:  fd442783           lw a5,-44(s0)
    3d1a:  000206b7           lui a3,0x20
    3d1e:  863a                 mv a2,a4
    3d20:  85be                 mv a1,a5
    3d22:  fc043503           ld a0,-64(s0)
    3d26:  253020ef           jal ra,6778 <sd_read_sectors>
    3d2a:  87aa                 mv a5,a0
    3d2c:  0007871b           sext.w a4,a5
    3d30:  fe842783           lw a5,-24(s0)
    3d34:  0097d79b           srliw a5,a5,0x9
    3d38:  2781                 sext.w a5,a5
    3d3a:  06f70363           beq a4,a5,3da0 <load_boot0_from_sd+0x25c>
    3d3e:  005b97b7           lui a5,0x5b9
    3d42:  d8078593           addi a1,a5,-640 # 5b8d80 <gpio_get_boot_device+0x5aa9ea>
    3d46:  fc043503           ld a0,-64(s0)
    3d4a:  2e2020ef           jal ra,602c <FUN_0000602c>
    3d4e:  fe842783           lw a5,-24(s0)
    3d52:  0097d79b           srliw a5,a5,0x9
    3d56:  0007871b           sext.w a4,a5
    3d5a:  fd442783           lw a5,-44(s0)
    3d5e:  000206b7           lui a3,0x20
    3d62:  863a                 mv a2,a4
    3d64:  85be                 mv a1,a5
    3d66:  fc043503           ld a0,-64(s0)
    3d6a:  20f020ef           jal ra,6778 <sd_read_sectors>
    3d6e:  87aa                 mv a5,a0
    3d70:  0007871b           sext.w a4,a5
    3d74:  fe842783           lw a5,-24(s0)
    3d78:  0097d79b           srliw a5,a5,0x9
    3d7c:  2781                 sext.w a5,a5
    3d7e:  02f70163           beq a4,a5,3da0 <load_boot0_from_sd+0x25c>
    3d82:  0f300613           li a2,243
    3d86:  00eff7b7           lui a5,0xeff
    3d8a:  80078593           addi a1,a5,-2048 # efe800 <gpio_get_boot_device+0xef046a
    3d8e:  4501                 li a0,0
    3d90:  698040ef           jal ra,8428 <rtc_brom_debug>
    3d94:  57fd                 li a5,-1
    3d96:  fef42623           sw a5,-20(s0)
    3d9a:  fec42783           lw a5,-20(s0)
    3d9e:  a209                 j 3ea0 <load_boot0_from_sd+0x35c>
    3da0:  fe842783           lw a5,-24(s0)
    3da4:  85be                 mv a1,a5
    3da6:  00020537           lui a0,0x20
    3daa:  10d040ef           jal ra,86b6 <FUN_000086b6>
    3dae:  87aa                 mv a5,a0
    3db0:  ebf1                 bnez a5,3e84 <load_boot0_from_sd+0x340>
    3db2:  fcc42783           lw a5,-52(s0)
    3db6:  2781                 sext.w a5,a5
    3db8:  e385                 bnez a5,3dd8 <load_boot0_from_sd+0x294>
    3dba:  000487b7           lui a5,0x48
    3dbe:  e107a783           lw a5,-496(a5) # 47e10 <gpio_get_boot_device+0x39a7a>
    3dc2:  c791                 beqz a5,3dce <load_boot0_from_sd+0x28a>
    3dc4:  fd843783           ld a5,-40(s0)
    3dc8:  02078023           sb zero,32(a5)
    3dcc:  a82d                 j 3e06 <load_boot0_from_sd+0x2c2>
    3dce:  fe043783           ld a5,-32(s0)
    3dd2:  02078423           sb zero,40(a5)
    3dd6:  a805                 j 3e06 <load_boot0_from_sd+0x2c2>
    3dd8:  fcc42783           lw a5,-52(s0)
    3ddc:  0007871b           sext.w a4,a5
    3de0:  4789                 li a5,2
    3de2:  02f71263           bne a4,a5,3e06 <load_boot0_from_sd+0x2c2>
    3de6:  000487b7           lui a5,0x48
    3dea:  e107a783           lw a5,-496(a5) # 47e10 <gpio_get_boot_device+0x39a7a>
    3dee:  c799                 beqz a5,3dfc <load_boot0_from_sd+0x2b8>
    3df0:  fd843783           ld a5,-40(s0)
    3df4:  4709                 li a4,2
    3df6:  02e78023           sb a4,32(a5)
    3dfa:  a031                 j 3e06 <load_boot0_from_sd+0x2c2>
    3dfc:  fe043783           ld a5,-32(s0)
    3e00:  4709                 li a4,2
    3e02:  02e78423           sb a4,40(a5)
    3e06:  000487b7           lui a5,0x48
    3e0a:  e107a783           lw a5,-496(a5) # 47e10 <gpio_get_boot_device+0x39a7a>
    3e0e:  c78d                 beqz a5,3e38 <load_boot0_from_sd+0x2f4>
    3e10:  fd843783           ld a5,-40(s0)
    3e14:  0207c703           lbu a4,32(a5)
    3e18:  fc842783           lw a5,-56(s0)
    3e1c:  0ff7f793           andi a5,a5,255
    3e20:  0047979b           slliw a5,a5,0x4
    3e24:  0ff7f793           andi a5,a5,255
    3e28:  8fd9                 or a5,a5,a4
    3e2a:  0ff7f713           andi a4,a5,255
    3e2e:  fd843783           ld a5,-40(s0)
    3e32:  02e78023           sb a4,32(a5)
    3e36:  a025                 j 3e5e <load_boot0_from_sd+0x31a>
    3e38:  fe043783           ld a5,-32(s0)
    3e3c:  0287c703           lbu a4,40(a5)
    3e40:  fc842783           lw a5,-56(s0)
    3e44:  0ff7f793           andi a5,a5,255
    3e48:  0047979b           slliw a5,a5,0x4
    3e4c:  0ff7f793           andi a5,a5,255
    3e50:  8fd9                 or a5,a5,a4
    3e52:  0ff7f713           andi a4,a5,255
    3e56:  fe043783           ld a5,-32(s0)
    3e5a:  02e78423           sb a4,40(a5)
    3e5e:  fcc42783           lw a5,-52(s0)
    3e62:  4581                 li a1,0
    3e64:  853e                 mv a0,a5
    3e66:  407050ef           jal ra,9a6c <FUN_00009a6c>
    3e6a:  6785                 lui a5,0x1
    3e6c:  fff78613           addi a2,a5,-1 # fff <FUN_00000f2c+0xd3>
    3e70:  00eff7b7           lui a5,0xeff
    3e74:  80078593           addi a1,a5,-2048 # efe800 <gpio_get_boot_device+0xef046a
    3e78:  4501                 li a0,0
    3e7a:  5ae040ef           jal ra,8428 <rtc_brom_debug>
    3e7e:  fe042623           sw zero,-20(s0)
    3e82:  a829                 j 3e9c <load_boot0_from_sd+0x358>
    3e84:  0f400613           li a2,244
    3e88:  00eff7b7           lui a5,0xeff
    3e8c:  80078593           addi a1,a5,-2048 # efe800 <gpio_get_boot_device+0xef046a
    3e90:  4501                 li a0,0
    3e92:  596040ef           jal ra,8428 <rtc_brom_debug>
    3e96:  57fd                 li a5,-1
    3e98:  fef42623           sw a5,-20(s0)
    3e9c:  fec42783           lw a5,-20(s0)
    3ea0:  853e                 mv a0,a5
    3ea2:  70e2                 ld ra,56(sp)
    3ea4:  7442                 ld s0,48(sp)
    3ea6:  6121                 addi sp,sp,64
    3ea8:  8082                 ret

0000000000003eaa <boot_from_sd>:
    3eaa:  7171                 addi sp,sp,-176
    3eac:  f506                 sd ra,168(sp)
    3eae:  f122                 sd s0,160(sp)
    3eb0:  1900                 addi s0,sp,176
    3eb2:  87aa                 mv a5,a0
    3eb4:  f4f42e23           sw a5,-164(s0)
    3eb8:  57fd                 li a5,-1
    3eba:  fef42623           sw a5,-20(s0)
    3ebe:  070907b7           lui a5,0x7090
    3ec2:  31478513           addi a0,a5,788 # 7090314 <gpio_get_boot_device+0x7081f7e
    3ec6:  4c2040ef           jal ra,8388 <debug_select_word>
    3eca:  f9040793           addi a5,s0,-112
    3ece:  05800613           li a2,88
    3ed2:  4581                 li a1,0
    3ed4:  853e                 mv a0,a5
    3ed6:  c33ff0ef           jal ra,3b08 <memset>
    3eda:  f6840793           addi a5,s0,-152
    3ede:  02800613           li a2,40
    3ee2:  4581                 li a1,0
    3ee4:  853e                 mv a0,a5
    3ee6:  c23ff0ef           jal ra,3b08 <memset>
    3eea:  f6840793           addi a5,s0,-152
    3eee:  f8f43823           sd a5,-112(s0)
    3ef2:  f9040713           addi a4,s0,-112
    3ef6:  f5c42783           lw a5,-164(s0)
    3efa:  85ba                 mv a1,a4
    3efc:  853e                 mv a0,a5
    3efe:  331020ef           jal ra,6a2e <FUN_00006a2e>
    3f02:  87aa                 mv a5,a0
    3f04:  fef42623           sw a5,-20(s0)
    3f08:  fec42783           lw a5,-20(s0)
    3f0c:  2781                 sext.w a5,a5
    3f0e:  cf89                 beqz a5,3f28 <boot_from_sd+0x7e>
    3f10:  4605                 li a2,1
    3f12:  00eff7b7           lui a5,0xeff
    3f16:  80078593           addi a1,a5,-2048 # efe800 <gpio_get_boot_device+0xef046a
    3f1a:  4501                 li a0,0
    3f1c:  50c040ef           jal ra,8428 <rtc_brom_debug>
    3f20:  57fd                 li a5,-1
    3f22:  fef42623           sw a5,-20(s0)
    3f26:  a83d                 j 3f64 <boot_from_sd+0xba>
    3f28:  f9040713           addi a4,s0,-112
    3f2c:  f5c42783           lw a5,-164(s0)
    3f30:  863a                 mv a2,a4
    3f32:  4581                 li a1,0
    3f34:  853e                 mv a0,a5
    3f36:  c0fff0ef           jal ra,3b44 <load_boot0_from_sd>
    3f3a:  87aa                 mv a5,a0
    3f3c:  fef42623           sw a5,-20(s0)
    3f40:  fec42783           lw a5,-20(s0)
    3f44:  2781                 sext.w a5,a5
    3f46:  cf91                 beqz a5,3f62 <boot_from_sd+0xb8>
    3f48:  f9040713           addi a4,s0,-112
    3f4c:  f5c42783           lw a5,-164(s0)
    3f50:  863a                 mv a2,a4
    3f52:  4585                 li a1,1
    3f54:  853e                 mv a0,a5
    3f56:  befff0ef           jal ra,3b44 <load_boot0_from_sd>
    3f5a:  87aa                 mv a5,a0
    3f5c:  fef42623           sw a5,-20(s0)
    3f60:  a011                 j 3f64 <boot_from_sd+0xba>
    3f62:  0001                 nop
    3f64:  f9040713           addi a4,s0,-112
    3f68:  f5c42783           lw a5,-164(s0)
    3f6c:  85ba                 mv a1,a4
    3f6e:  853e                 mv a0,a5
    3f70:  3d9020ef           jal ra,6b48 <FUN_00006b48>
    3f74:  fec42783           lw a5,-20(s0)
    3f78:  853e                 mv a0,a5
    3f7a:  70aa                 ld ra,168(sp)
    3f7c:  740a                 ld s0,160(sp)
    3f7e:  614d                 addi sp,sp,176
    3f80:  8082                 ret

0000000000003f82 <boot_from_emmc>:
    3f82:  7131                 addi sp,sp,-192
    3f84:  fd06                 sd ra,184(sp)
    3f86:  f922                 sd s0,176(sp)
    3f88:  0180                 addi s0,sp,192
    3f8a:  87aa                 mv a5,a0
    3f8c:  f4f42623           sw a5,-180(s0)
    3f90:  57fd                 li a5,-1
    3f92:  fef42623           sw a5,-20(s0)
    3f96:  fc043c23           sd zero,-40(s0)
    3f9a:  070907b7           lui a5,0x7090
    3f9e:  31878513           addi a0,a5,792 # 7090318 <gpio_get_boot_device+0x7081f82
    3fa2:  3e6040ef           jal ra,8388 <debug_select_word>
    3fa6:  f8040793           addi a5,s0,-128
    3faa:  05800613           li a2,88
    3fae:  4581                 li a1,0
    3fb0:  853e                 mv a0,a5
    3fb2:  b57ff0ef           jal ra,3b08 <memset>
    3fb6:  f5840793           addi a5,s0,-168
    3fba:  02800613           li a2,40
    3fbe:  4581                 li a1,0
    3fc0:  853e                 mv a0,a5
    3fc2:  b47ff0ef           jal ra,3b08 <memset>
    3fc6:  f5840793           addi a5,s0,-168
    3fca:  f8f43023           sd a5,-128(s0)
    3fce:  f8040713           addi a4,s0,-128
    3fd2:  f4c42783           lw a5,-180(s0)
    3fd6:  85ba                 mv a1,a4
    3fd8:  853e                 mv a0,a5
    3fda:  2d7020ef           jal ra,6ab0 <FUN_00006ab0>
    3fde:  87aa                 mv a5,a0
    3fe0:  cf89                 beqz a5,3ffa <boot_from_emmc+0x78>
    3fe2:  4605                 li a2,1
    3fe4:  00eff7b7           lui a5,0xeff
    3fe8:  80078593           addi a1,a5,-2048 # efe800 <gpio_get_boot_device+0xef046a
    3fec:  4515                 li a0,5
    3fee:  43a040ef           jal ra,8428 <rtc_brom_debug>
    3ff2:  57fd                 li a5,-1
    3ff4:  fef42623           sw a5,-20(s0)
    3ff8:  aacd                 j 41ea <boot_from_emmc+0x268>
    3ffa:  f8040793           addi a5,s0,-128
    3ffe:  000206b7           lui a3,0x20
    4002:  4605                 li a2,1
    4004:  4581                 li a1,0
    4006:  853e                 mv a0,a5
    4008:  03f020ef           jal ra,6846 <FUN_00006846>
    400c:  87aa                 mv a5,a0
    400e:  2781                 sext.w a5,a5
    4010:  873e                 mv a4,a5
    4012:  4785                 li a5,1
    4014:  00f70f63           beq a4,a5,4032 <boot_from_emmc+0xb0>
    4018:  0f000613           li a2,240
    401c:  00eff7b7           lui a5,0xeff
    4020:  80078593           addi a1,a5,-2048 # efe800 <gpio_get_boot_device+0xef046a
    4024:  4515                 li a0,5
    4026:  402040ef           jal ra,8428 <rtc_brom_debug>
    402a:  57fd                 li a5,-1
    402c:  fef42623           sw a5,-20(s0)
    4030:  aa6d                 j 41ea <boot_from_emmc+0x268>
    4032:  000487b7           lui a5,0x48
    4036:  e107a783           lw a5,-496(a5) # 47e10 <gpio_get_boot_device+0x39a7a>
    403a:  c3a5                 beqz a5,409a <boot_from_emmc+0x118>
    403c:  67b9                 lui a5,0xe
    403e:  4c078593           addi a1,a5,1216 # e4c0 <gpio_get_boot_device+0x12a>
    4042:  00020537           lui a0,0x20
    4046:  5cc040ef           jal ra,8612 <boot0_check_magic>
    404a:  87aa                 mv a5,a0
    404c:  c385                 beqz a5,406c <boot_from_emmc+0xea>
    404e:  0f100613           li a2,241
    4052:  00eff7b7           lui a5,0xeff
    4056:  80078593           addi a1,a5,-2048 # efe800 <gpio_get_boot_device+0xef046a
    405a:  4515                 li a0,5
    405c:  3cc040ef           jal ra,8428 <rtc_brom_debug>
    4060:  57fd                 li a5,-1
    4062:  fef42623           sw a5,-20(s0)
    4066:  fec42783           lw a5,-20(s0)
    406a:  aa51                 j 41fe <boot_from_emmc+0x27c>
    406c:  000207b7           lui a5,0x20
    4070:  fcf43c23           sd a5,-40(s0)
    4074:  fd843783           ld a5,-40(s0)
    4078:  01c7c703           lbu a4,28(a5) # 2001c <gpio_get_boot_device+0x11c86>
    407c:  01d7c683           lbu a3,29(a5)
    4080:  06a2                 slli a3,a3,0x8
    4082:  8f55                 or a4,a4,a3
    4084:  01e7c683           lbu a3,30(a5)
    4088:  06c2                 slli a3,a3,0x10
    408a:  8f55                 or a4,a4,a3
    408c:  01f7c783           lbu a5,31(a5)
    4090:  07e2                 slli a5,a5,0x18
    4092:  8fd9                 or a5,a5,a4
    4094:  fef42423           sw a5,-24(s0)
    4098:  a081                 j 40d8 <boot_from_emmc+0x156>
    409a:  67b9                 lui a5,0xe
    409c:  4d078593           addi a1,a5,1232 # e4d0 <gpio_get_boot_device+0x13a>
    40a0:  00020537           lui a0,0x20
    40a4:  56e040ef           jal ra,8612 <boot0_check_magic>
    40a8:  87aa                 mv a5,a0
    40aa:  cf91                 beqz a5,40c6 <boot_from_emmc+0x144>
    40ac:  0f100613           li a2,241
    40b0:  00eff7b7           lui a5,0xeff
    40b4:  80078593           addi a1,a5,-2048 # efe800 <gpio_get_boot_device+0xef046a
    40b8:  4515                 li a0,5
    40ba:  36e040ef           jal ra,8428 <rtc_brom_debug>
    40be:  57fd                 li a5,-1
    40c0:  fef42623           sw a5,-20(s0)
    40c4:  a21d                 j 41ea <boot_from_emmc+0x268>
    40c6:  000207b7           lui a5,0x20
    40ca:  fef43023           sd a5,-32(s0)
    40ce:  fe043783           ld a5,-32(s0)
    40d2:  4b9c                 lw a5,16(a5)
    40d4:  fef42423           sw a5,-24(s0)
    40d8:  fe842783           lw a5,-24(s0)
    40dc:  1ff7f793           andi a5,a5,511
    40e0:  2781                 sext.w a5,a5
    40e2:  cf91                 beqz a5,40fe <boot_from_emmc+0x17c>
    40e4:  0f200613           li a2,242
    40e8:  00eff7b7           lui a5,0xeff
    40ec:  80078593           addi a1,a5,-2048 # efe800 <gpio_get_boot_device+0xef046a
    40f0:  4515                 li a0,5
    40f2:  336040ef           jal ra,8428 <rtc_brom_debug>
    40f6:  57fd                 li a5,-1
    40f8:  fef42623           sw a5,-20(s0)
    40fc:  a0fd                 j 41ea <boot_from_emmc+0x268>
    40fe:  fe842783           lw a5,-24(s0)
    4102:  0097d79b           srliw a5,a5,0x9
    4106:  0007871b           sext.w a4,a5
    410a:  f8040793           addi a5,s0,-128
    410e:  000206b7           lui a3,0x20
    4112:  863a                 mv a2,a4
    4114:  4581                 li a1,0
    4116:  853e                 mv a0,a5
    4118:  72e020ef           jal ra,6846 <FUN_00006846>
    411c:  87aa                 mv a5,a0
    411e:  0007871b           sext.w a4,a5
    4122:  fe842783           lw a5,-24(s0)
    4126:  0097d79b           srliw a5,a5,0x9
    412a:  2781                 sext.w a5,a5
    412c:  00f70f63           beq a4,a5,414a <boot_from_emmc+0x1c8>
    4130:  0f300613           li a2,243
    4134:  00eff7b7           lui a5,0xeff
    4138:  80078593           addi a1,a5,-2048 # efe800 <gpio_get_boot_device+0xef046a
    413c:  4515                 li a0,5
    413e:  2ea040ef           jal ra,8428 <rtc_brom_debug>
    4142:  57fd                 li a5,-1
    4144:  fef42623           sw a5,-20(s0)
    4148:  a04d                 j 41ea <boot_from_emmc+0x268>
    414a:  fe842783           lw a5,-24(s0)
    414e:  85be                 mv a1,a5
    4150:  00020537           lui a0,0x20
    4154:  562040ef           jal ra,86b6 <FUN_000086b6>
    4158:  87aa                 mv a5,a0
    415a:  efa5                 bnez a5,41d2 <boot_from_emmc+0x250>
    415c:  f4c42783           lw a5,-180(s0)
    4160:  2781                 sext.w a5,a5
    4162:  e385                 bnez a5,4182 <boot_from_emmc+0x200>
    4164:  000487b7           lui a5,0x48
    4168:  e107a783           lw a5,-496(a5) # 47e10 <gpio_get_boot_device+0x39a7a>
    416c:  c791                 beqz a5,4178 <boot_from_emmc+0x1f6>
    416e:  fd843783           ld a5,-40(s0)
    4172:  02078023           sb zero,32(a5)
    4176:  a82d                 j 41b0 <boot_from_emmc+0x22e>
    4178:  fe043783           ld a5,-32(s0)
    417c:  02078423           sb zero,40(a5)
    4180:  a805                 j 41b0 <boot_from_emmc+0x22e>
    4182:  f4c42783           lw a5,-180(s0)
    4186:  0007871b           sext.w a4,a5
    418a:  4789                 li a5,2
    418c:  02f71263           bne a4,a5,41b0 <boot_from_emmc+0x22e>
    4190:  000487b7           lui a5,0x48
    4194:  e107a783           lw a5,-496(a5) # 47e10 <gpio_get_boot_device+0x39a7a>
    4198:  c799                 beqz a5,41a6 <boot_from_emmc+0x224>
    419a:  fd843783           ld a5,-40(s0)
    419e:  4709                 li a4,2
    41a0:  02e78023           sb a4,32(a5)
    41a4:  a031                 j 41b0 <boot_from_emmc+0x22e>
    41a6:  fe043783           ld a5,-32(s0)
    41aa:  4709                 li a4,2
    41ac:  02e78423           sb a4,40(a5)
    41b0:  4581                 li a1,0
    41b2:  4515                 li a0,5
    41b4:  0b9050ef           jal ra,9a6c <FUN_00009a6c>
    41b8:  6785                 lui a5,0x1
    41ba:  fff78613           addi a2,a5,-1 # fff <FUN_00000f2c+0xd3>
    41be:  00eff7b7           lui a5,0xeff
    41c2:  80078593           addi a1,a5,-2048 # efe800 <gpio_get_boot_device+0xef046a
    41c6:  4515                 li a0,5
    41c8:  260040ef           jal ra,8428 <rtc_brom_debug>
    41cc:  fe042623           sw zero,-20(s0)
    41d0:  a829                 j 41ea <boot_from_emmc+0x268>
    41d2:  0f400613           li a2,244
    41d6:  00eff7b7           lui a5,0xeff
    41da:  80078593           addi a1,a5,-2048 # efe800 <gpio_get_boot_device+0xef046a
    41de:  4515                 li a0,5
    41e0:  248040ef           jal ra,8428 <rtc_brom_debug>
    41e4:  57fd                 li a5,-1
    41e6:  fef42623           sw a5,-20(s0)
    41ea:  f8040713           addi a4,s0,-128
    41ee:  f4c42783           lw a5,-180(s0)
    41f2:  85ba                 mv a1,a4
    41f4:  853e                 mv a0,a5
    41f6:  153020ef           jal ra,6b48 <FUN_00006b48>
    41fa:  fec42783           lw a5,-20(s0)
    41fe:  853e                 mv a0,a5
    4200:  70ea                 ld ra,184(sp)
    4202:  744a                 ld s0,176(sp)
    4204:  6129                 addi sp,sp,192
    4206:  8082                 ret

0000000000004208 <FUN_00004208>:
    4208:  7179                 addi sp,sp,-48
    420a:  f422                 sd s0,40(sp)
    420c:  1800                 addi s0,sp,48
    420e:  fca43c23           sd a0,-40(s0)
    4212:  fe042623           sw zero,-20(s0)
    4216:  fd843783           ld a5,-40(s0)
    421a:  0007ac23           sw zero,24(a5)
    421e:  fd843783           ld a5,-40(s0)
    4222:  016e3737           lui a4,0x16e3
    4226:  6007071b           addiw a4,a4,1536
    422a:  cbd8                 sw a4,20(a5)
    422c:  fec42783           lw a5,-20(s0)
    4230:  853e                 mv a0,a5
    4232:  7422                 ld s0,40(sp)
    4234:  6145                 addi sp,sp,48
    4236:  8082                 ret

0000000000004238 <FUN_00004238>:
    4238:  7179                 addi sp,sp,-48
    423a:  f422                 sd s0,40(sp)
    423c:  1800                 addi s0,sp,48
    423e:  fca43c23           sd a0,-40(s0)
    4242:  fcb43823           sd a1,-48(s0)
    4246:  fd043703           ld a4,-48(s0)
    424a:  6799                 lui a5,0x6
    424c:  dc078793           addi a5,a5,-576 # 5dc0 <FUN_00005d2c+0x94>
    4250:  02f707b3           mul a5,a4,a5
    4254:  fef43423           sd a5,-24(s0)
    4258:  fe843783           ld a5,-24(s0)
    425c:  853e                 mv a0,a5
    425e:  7422                 ld s0,40(sp)
    4260:  6145                 addi sp,sp,48
    4262:  8082                 ret

0000000000004264 <FUN_00004264>:
    4264:  1101                 addi sp,sp,-32
    4266:  ec06                 sd ra,24(sp)
    4268:  e822                 sd s0,16(sp)
    426a:  1000                 addi s0,sp,32
    426c:  87aa                 mv a5,a0
    426e:  feb43023           sd a1,-32(s0)
    4272:  fef42623           sw a5,-20(s0)
    4276:  fec42783           lw a5,-20(s0)
    427a:  0007871b           sext.w a4,a5
    427e:  4789                 li a5,2
    4280:  0af71663           bne a4,a5,432c <FUN_00004264+0xc8>
    4284:  020007b7           lui a5,0x2000
    4288:  08478793           addi a5,a5,132 # 2000084 <gpio_get_boot_device+0x1ff1cee
    428c:  6715                 lui a4,0x5
    428e:  5607071b           addiw a4,a4,1376
    4292:  c398                 sw a4,0(a5)
    4294:  020007b7           lui a5,0x2000
    4298:  06078793           addi a5,a5,96 # 2000060 <gpio_get_boot_device+0x1ff1cca>
    429c:  33333737           lui a4,0x33333
    42a0:  3ff7071b           addiw a4,a4,1023
    42a4:  c398                 sw a4,0(a5)
    42a6:  020027b7           lui a5,0x2002
    42aa:  84c78793           addi a5,a5,-1972 # 200184c <gpio_get_boot_device+0x1ff34
    42ae:  439c                 lw a5,0(a5)
    42b0:  0007871b           sext.w a4,a5
    42b4:  020027b7           lui a5,0x2002
    42b8:  84c78793           addi a5,a5,-1972 # 200184c <gpio_get_boot_device+0x1ff34
    42bc:  86ba                 mv a3,a4
    42be:  00040737           lui a4,0x40
    42c2:  8f55                 or a4,a4,a3
    42c4:  2701                 sext.w a4,a4
    42c6:  c398                 sw a4,0(a5)
    42c8:  020027b7           lui a5,0x2002
    42cc:  84c78793           addi a5,a5,-1972 # 200184c <gpio_get_boot_device+0x1ff34
    42d0:  439c                 lw a5,0(a5)
    42d2:  0007871b           sext.w a4,a5
    42d6:  020027b7           lui a5,0x2002
    42da:  84c78793           addi a5,a5,-1972 # 200184c <gpio_get_boot_device+0x1ff34
    42de:  00476713           ori a4,a4,4
    42e2:  2701                 sext.w a4,a4
    42e4:  c398                 sw a4,0(a5)
    42e6:  020027b7           lui a5,0x2002
    42ea:  83878793           addi a5,a5,-1992 # 2001838 <gpio_get_boot_device+0x1ff34
    42ee:  80000737           lui a4,0x80000
    42f2:  c398                 sw a4,0(a5)
    42f4:  fe043783           ld a5,-32(s0)
    42f8:  04022737           lui a4,0x4022
    42fc:  e398                 sd a4,0(a5)
    42fe:  fe043783           ld a5,-32(s0)
    4302:  639c                 ld a5,0(a5)
    4304:  2781                 sext.w a5,a5
    4306:  2007879b           addiw a5,a5,512
    430a:  0007871b           sext.w a4,a5
    430e:  fe043783           ld a5,-32(s0)
    4312:  cfd8                 sw a4,28(a5)
    4314:  fe043783           ld a5,-32(s0)
    4318:  02002737           lui a4,0x2002
    431c:  8387071b           addiw a4,a4,-1992
    4320:  cb98                 sw a4,16(a5)
    4322:  fe043503           ld a0,-32(s0)
    4326:  ee3ff0ef           jal ra,4208 <FUN_00004208>
    432a:  a055                 j 43ce <FUN_00004264+0x16a>
    432c:  020007b7           lui a5,0x2000
    4330:  11478793           addi a5,a5,276 # 2000114 <gpio_get_boot_device+0x1ff1d7e
    4334:  56500713           li a4,1381
    4338:  c398                 sw a4,0(a5)
    433a:  020007b7           lui a5,0x2000
    433e:  0f078793           addi a5,a5,240 # 20000f0 <gpio_get_boot_device+0x1ff1d5a
    4342:  00222737           lui a4,0x222
    4346:  2227071b           addiw a4,a4,546
    434a:  c398                 sw a4,0(a5)
    434c:  020027b7           lui a5,0x2002
    4350:  84c78793           addi a5,a5,-1972 # 200184c <gpio_get_boot_device+0x1ff34
    4354:  439c                 lw a5,0(a5)
    4356:  0007871b           sext.w a4,a5
    435a:  020027b7           lui a5,0x2002
    435e:  84c78793           addi a5,a5,-1972 # 200184c <gpio_get_boot_device+0x1ff34
    4362:  86ba                 mv a3,a4
    4364:  6741                 lui a4,0x10
    4366:  8f55                 or a4,a4,a3
    4368:  2701                 sext.w a4,a4
    436a:  c398                 sw a4,0(a5)
    436c:  020027b7           lui a5,0x2002
    4370:  84c78793           addi a5,a5,-1972 # 200184c <gpio_get_boot_device+0x1ff34
    4374:  439c                 lw a5,0(a5)
    4376:  0007871b           sext.w a4,a5
    437a:  020027b7           lui a5,0x2002
    437e:  84c78793           addi a5,a5,-1972 # 200184c <gpio_get_boot_device+0x1ff34
    4382:  00176713           ori a4,a4,1
    4386:  2701                 sext.w a4,a4
    4388:  c398                 sw a4,0(a5)
    438a:  020027b7           lui a5,0x2002
    438e:  83078793           addi a5,a5,-2000 # 2001830 <gpio_get_boot_device+0x1ff34
    4392:  80000737           lui a4,0x80000
    4396:  c398                 sw a4,0(a5)
    4398:  fe043783           ld a5,-32(s0)
    439c:  04020737           lui a4,0x4020
    43a0:  e398                 sd a4,0(a5)
    43a2:  fe043783           ld a5,-32(s0)
    43a6:  639c                 ld a5,0(a5)
    43a8:  2781                 sext.w a5,a5
    43aa:  2007879b           addiw a5,a5,512
    43ae:  0007871b           sext.w a4,a5
    43b2:  fe043783           ld a5,-32(s0)
    43b6:  cfd8                 sw a4,28(a5)
    43b8:  fe043783           ld a5,-32(s0)
    43bc:  02002737           lui a4,0x2002
    43c0:  8307071b           addiw a4,a4,-2000
    43c4:  cb98                 sw a4,16(a5)
    43c6:  fe043503           ld a0,-32(s0)
    43ca:  e3fff0ef           jal ra,4208 <FUN_00004208>
    43ce:  fe043783           ld a5,-32(s0)
    43d2:  00045737           lui a4,0x45
    43d6:  e798                 sd a4,8(a5)
    43d8:  0001                 nop
    43da:  60e2                 ld ra,24(sp)
    43dc:  6442                 ld s0,16(sp)
    43de:  6105                 addi sp,sp,32
    43e0:  8082                 ret

00000000000043e2 <FUN_000043e2>:
    43e2:  1101                 addi sp,sp,-32
    43e4:  ec22                 sd s0,24(sp)
    43e6:  1000                 addi s0,sp,32
    43e8:  87aa                 mv a5,a0
    43ea:  feb43023           sd a1,-32(s0)
    43ee:  fef42623           sw a5,-20(s0)
    43f2:  fec42783           lw a5,-20(s0)
    43f6:  0007871b           sext.w a4,a5
    43fa:  4789                 li a5,2
    43fc:  06f71663           bne a4,a5,4468 <FUN_000043e2+0x86>
    4400:  020007b7           lui a5,0x2000
    4404:  06078793           addi a5,a5,96 # 2000060 <gpio_get_boot_device+0x1ff1cca>
    4408:  577d                 li a4,-1
    440a:  c398                 sw a4,0(a5)
    440c:  020007b7           lui a5,0x2000
    4410:  08478793           addi a5,a5,132 # 2000084 <gpio_get_boot_device+0x1ff1cee
    4414:  54000713           li a4,1344
    4418:  c398                 sw a4,0(a5)
    441a:  020027b7           lui a5,0x2002
    441e:  83878793           addi a5,a5,-1992 # 2001838 <gpio_get_boot_device+0x1ff34
    4422:  0007a023           sw zero,0(a5)
    4426:  020027b7           lui a5,0x2002
    442a:  84c78793           addi a5,a5,-1972 # 200184c <gpio_get_boot_device+0x1ff34
    442e:  439c                 lw a5,0(a5)
    4430:  0007871b           sext.w a4,a5
    4434:  020027b7           lui a5,0x2002
    4438:  84c78793           addi a5,a5,-1972 # 200184c <gpio_get_boot_device+0x1ff34
    443c:  9b6d                 andi a4,a4,-5
    443e:  2701                 sext.w a4,a4
    4440:  c398                 sw a4,0(a5)
    4442:  020027b7           lui a5,0x2002
    4446:  84c78793           addi a5,a5,-1972 # 200184c <gpio_get_boot_device+0x1ff34
    444a:  439c                 lw a5,0(a5)
    444c:  0007871b           sext.w a4,a5
    4450:  020027b7           lui a5,0x2002
    4454:  84c78793           addi a5,a5,-1972 # 200184c <gpio_get_boot_device+0x1ff34
    4458:  86ba                 mv a3,a4
    445a:  fffc0737           lui a4,0xfffc0
    445e:  177d                 addi a4,a4,-1
    4460:  8f75                 and a4,a4,a3
    4462:  2701                 sext.w a4,a4
    4464:  c398                 sw a4,0(a5)
    4466:  a0ad                 j 44d0 <FUN_000043e2+0xee>
    4468:  020007b7           lui a5,0x2000
    446c:  0f078793           addi a5,a5,240 # 20000f0 <gpio_get_boot_device+0x1ff1d5a
    4470:  0f4f5737           lui a4,0xf4f5
    4474:  f447071b           addiw a4,a4,-188
    4478:  c398                 sw a4,0(a5)
    447a:  020007b7           lui a5,0x2000
    447e:  11478793           addi a5,a5,276 # 2000114 <gpio_get_boot_device+0x1ff1d7e
    4482:  0007a023           sw zero,0(a5)
    4486:  020027b7           lui a5,0x2002
    448a:  83078793           addi a5,a5,-2000 # 2001830 <gpio_get_boot_device+0x1ff34
    448e:  0007a023           sw zero,0(a5)
    4492:  020027b7           lui a5,0x2002
    4496:  84c78793           addi a5,a5,-1972 # 200184c <gpio_get_boot_device+0x1ff34
    449a:  439c                 lw a5,0(a5)
    449c:  0007871b           sext.w a4,a5
    44a0:  020027b7           lui a5,0x2002
    44a4:  84c78793           addi a5,a5,-1972 # 200184c <gpio_get_boot_device+0x1ff34
    44a8:  9b79                 andi a4,a4,-2
    44aa:  2701                 sext.w a4,a4
    44ac:  c398                 sw a4,0(a5)
    44ae:  020027b7           lui a5,0x2002
    44b2:  84c78793           addi a5,a5,-1972 # 200184c <gpio_get_boot_device+0x1ff34
    44b6:  439c                 lw a5,0(a5)
    44b8:  0007871b           sext.w a4,a5
    44bc:  020027b7           lui a5,0x2002
    44c0:  84c78793           addi a5,a5,-1972 # 200184c <gpio_get_boot_device+0x1ff34
    44c4:  86ba                 mv a3,a4
    44c6:  7741                 lui a4,0xffff0
    44c8:  177d                 addi a4,a4,-1
    44ca:  8f75                 and a4,a4,a3
    44cc:  2701                 sext.w a4,a4
    44ce:  c398                 sw a4,0(a5)
    44d0:  0001                 nop
    44d2:  6462                 ld s0,24(sp)
    44d4:  6105                 addi sp,sp,32
    44d6:  8082                 ret

00000000000044d8 <FUN_000044d8>:
    44d8:  715d                 addi sp,sp,-80
    44da:  e486                 sd ra,72(sp)
    44dc:  e0a2                 sd s0,64(sp)
    44de:  fc26                 sd s1,56(sp)
    44e0:  0880                 addi s0,sp,80
    44e2:  faa43c23           sd a0,-72(s0)
    44e6:  fb843783           ld a5,-72(s0)
    44ea:  639c                 ld a5,0(a5)
    44ec:  fcf43823           sd a5,-48(s0)
    44f0:  fd043783           ld a5,-48(s0)
    44f4:  639c                 ld a5,0(a5)
    44f6:  fcf43423           sd a5,-56(s0)
    44fa:  fc042e23           sw zero,-36(s0)
    44fe:  fc843783           ld a5,-56(s0)
    4502:  43dc                 lw a5,4(a5)
    4504:  2781                 sext.w a5,a5
    4506:  873e                 mv a4,a5
    4508:  800007b7           lui a5,0x80000
    450c:  8fd9                 or a5,a5,a4
    450e:  0007871b           sext.w a4,a5
    4512:  fc843783           ld a5,-56(s0)
    4516:  c3d8                 sw a4,4(a5)
    4518:  802027b7           lui a5,0x80202
    451c:  fcf42223           sw a5,-60(s0)
    4520:  fc843783           ld a5,-56(s0)
    4524:  fc442703           lw a4,-60(s0)
    4528:  cf98                 sw a4,24(a5)
    452a:  fc843783           ld a5,-56(s0)
    452e:  01878493           addi s1,a5,24 # ffffffff80202018 <gpio_get_boot_device+0
    4532:  4589                 li a1,2
    4534:  fd043503           ld a0,-48(s0)
    4538:  d01ff0ef           jal ra,4238 <FUN_00004238>
    453c:  87aa                 mv a5,a0
    453e:  863e                 mv a2,a5
    4540:  800005b7           lui a1,0x80000
    4544:  8526                 mv a0,s1
    4546:  401020ef           jal ra,7146 <FUN_00007146>
    454a:  87aa                 mv a5,a0
    454c:  fcf42e23           sw a5,-36(s0)
    4550:  fdc42783           lw a5,-36(s0)
    4554:  2781                 sext.w a5,a5
    4556:  c789                 beqz a5,4560 <FUN_000044d8+0x88>
    4558:  57fd                 li a5,-1
    455a:  fcf42e23           sw a5,-36(s0)
    455e:  a029                 j 4568 <FUN_000044d8+0x90>
    4560:  fc843783           ld a5,-56(s0)
    4564:  577d                 li a4,-1
    4566:  df98                 sw a4,56(a5)
    4568:  fc843783           ld a5,-56(s0)
    456c:  43dc                 lw a5,4(a5)
    456e:  2781                 sext.w a5,a5
    4570:  873e                 mv a4,a5
    4572:  800007b7           lui a5,0x80000
    4576:  fff7c793           not a5,a5
    457a:  8ff9                 and a5,a5,a4
    457c:  0007871b           sext.w a4,a5
    4580:  fc843783           ld a5,-56(s0)
    4584:  c3d8                 sw a4,4(a5)
    4586:  fdc42783           lw a5,-36(s0)
    458a:  853e                 mv a0,a5
    458c:  60a6                 ld ra,72(sp)
    458e:  6406                 ld s0,64(sp)
    4590:  74e2                 ld s1,56(sp)
    4592:  6161                 addi sp,sp,80
    4594:  8082                 ret

0000000000004596 <FUN_00004596>:
    4596:  715d                 addi sp,sp,-80
    4598:  e486                 sd ra,72(sp)
    459a:  e0a2                 sd s0,64(sp)
    459c:  0880                 addi s0,sp,80
    459e:  faa43c23           sd a0,-72(s0)
    45a2:  fb843783           ld a5,-72(s0)
    45a6:  639c                 ld a5,0(a5)
    45a8:  fef43423           sd a5,-24(s0)
    45ac:  fe843783           ld a5,-24(s0)
    45b0:  639c                 ld a5,0(a5)
    45b2:  fef43023           sd a5,-32(s0)
    45b6:  fc042e23           sw zero,-36(s0)
    45ba:  fc042c23           sw zero,-40(s0)
    45be:  fc043823           sd zero,-48(s0)
    45c2:  fc043423           sd zero,-56(s0)
    45c6:  fc043023           sd zero,-64(s0)
    45ca:  3b5050ef           jal ra,a17e <rdtime>
    45ce:  fca43823           sd a0,-48(s0)
    45d2:  67c1                 lui a5,0x10
    45d4:  17fd                 addi a5,a5,-1
    45d6:  fcf43023           sd a5,-64(s0)
    45da:  3a5050ef           jal ra,a17e <rdtime>
    45de:  872a                 mv a4,a0
    45e0:  fd043783           ld a5,-48(s0)
    45e4:  40f707b3           sub a5,a4,a5
    45e8:  fcf43423           sd a5,-56(s0)
    45ec:  fe043783           ld a5,-32(s0)
    45f0:  439c                 lw a5,0(a5)
    45f2:  fcf42c23           sw a5,-40(s0)
    45f6:  fd842783           lw a5,-40(s0)
    45fa:  8b9d                 andi a5,a5,7
    45fc:  2781                 sext.w a5,a5
    45fe:  e399                 bnez a5,4604 <FUN_00004596+0x6e>
    4600:  4781                 li a5,0
    4602:  a80d                 j 4634 <FUN_00004596+0x9e>
    4604:  fc843703           ld a4,-56(s0)
    4608:  fc043783           ld a5,-64(s0)
    460c:  fcf767e3           bltu a4,a5,45da <FUN_00004596+0x44>
    4610:  fc843703           ld a4,-56(s0)
    4614:  fc043783           ld a5,-64(s0)
    4618:  00f76d63           bltu a4,a5,4632 <FUN_00004596+0x9c>
    461c:  fd842783           lw a5,-40(s0)
    4620:  8b9d                 andi a5,a5,7
    4622:  2781                 sext.w a5,a5
    4624:  c799                 beqz a5,4632 <FUN_00004596+0x9c>
    4626:  57e5                 li a5,-7
    4628:  fcf42e23           sw a5,-36(s0)
    462c:  fdc42783           lw a5,-36(s0)
    4630:  a011                 j 4634 <FUN_00004596+0x9e>
    4632:  4781                 li a5,0
    4634:  853e                 mv a0,a5
    4636:  60a6                 ld ra,72(sp)
    4638:  6406                 ld s0,64(sp)
    463a:  6161                 addi sp,sp,80
    463c:  8082                 ret

000000000000463e <FUN_0000463e>:
    463e:  7139                 addi sp,sp,-64
    4640:  fc06                 sd ra,56(sp)
    4642:  f822                 sd s0,48(sp)
    4644:  0080                 addi s0,sp,64
    4646:  fca43423           sd a0,-56(s0)
    464a:  87ae                 mv a5,a1
    464c:  fcf42223           sw a5,-60(s0)
    4650:  fc843783           ld a5,-56(s0)
    4654:  639c                 ld a5,0(a5)
    4656:  fef43023           sd a5,-32(s0)
    465a:  fe043783           ld a5,-32(s0)
    465e:  639c                 ld a5,0(a5)
    4660:  fcf43c23           sd a5,-40(s0)
    4664:  fc042a23           sw zero,-44(s0)
    4668:  47c1                 li a5,16
    466a:  fef42623           sw a5,-20(s0)
    466e:  fc042a23           sw zero,-44(s0)
    4672:  fd843783           ld a5,-40(s0)
    4676:  fd442703           lw a4,-44(s0)
    467a:  c3d8                 sw a4,4(a5)
    467c:  fc843503           ld a0,-56(s0)
    4680:  e59ff0ef           jal ra,44d8 <FUN_000044d8>
    4684:  87aa                 mv a5,a0
    4686:  c399                 beqz a5,468c <FUN_0000463e+0x4e>
    4688:  57fd                 li a5,-1
    468a:  a4a1                 j 48d2 <FUN_0000463e+0x294>
    468c:  fe043783           ld a5,-32(s0)
    4690:  4b9c                 lw a5,16(a5)
    4692:  1782                 slli a5,a5,0x20
    4694:  9381                 srli a5,a5,0x20
    4696:  0007a023           sw zero,0(a5) # 10000 <gpio_get_boot_device+0x1c6a>
    469a:  47c1                 li a5,16
    469c:  fef42623           sw a5,-20(s0)
    46a0:  0001                 nop
    46a2:  fec42783           lw a5,-20(s0)
    46a6:  fff7871b           addiw a4,a5,-1
    46aa:  fee42623           sw a4,-20(s0)
    46ae:  fbf5                 bnez a5,46a2 <FUN_0000463e+0x64>
    46b0:  fc442783           lw a5,-60(s0)
    46b4:  0007871b           sext.w a4,a5
    46b8:  000627b7           lui a5,0x62
    46bc:  a8078793           addi a5,a5,-1408 # 61a80 <gpio_get_boot_device+0x536ea>
    46c0:  08e7e763           bltu a5,a4,474e <FUN_0000463e+0x110>
    46c4:  fe043783           ld a5,-32(s0)
    46c8:  4f9c                 lw a5,24(a5)
    46ca:  86be                 mv a3,a5
    46cc:  4705                 li a4,1
    46ce:  02e68763           beq a3,a4,46fc <FUN_0000463e+0xbe>
    46d2:  873e                 mv a4,a5
    46d4:  cb11                 beqz a4,46e8 <FUN_0000463e+0xaa>
    46d6:  86be                 mv a3,a5
    46d8:  4709                 li a4,2
    46da:  02e68b63           beq a3,a4,4710 <FUN_0000463e+0xd2>
    46de:  873e                 mv a4,a5
    46e0:  478d                 li a5,3
    46e2:  04f70163           beq a4,a5,4724 <FUN_0000463e+0xe6>
    46e6:  a889                 j 4738 <FUN_0000463e+0xfa>
    46e8:  fe043783           ld a5,-32(s0)
    46ec:  4b9c                 lw a5,16(a5)
    46ee:  1782                 slli a5,a5,0x20
    46f0:  9381                 srli a5,a5,0x20
    46f2:  873e                 mv a4,a5
    46f4:  10e00793           li a5,270
    46f8:  c31c                 sw a5,0(a4)
    46fa:  a295                 j 485e <FUN_0000463e+0x220>
    46fc:  fe043783           ld a5,-32(s0)
    4700:  4b9c                 lw a5,16(a5)
    4702:  1782                 slli a5,a5,0x20
    4704:  9381                 srli a5,a5,0x20
    4706:  873e                 mv a4,a5
    4708:  10b00793           li a5,267
    470c:  c31c                 sw a5,0(a4)
    470e:  aa81                 j 485e <FUN_0000463e+0x220>
    4710:  fe043783           ld a5,-32(s0)
    4714:  4b9c                 lw a5,16(a5)
    4716:  1782                 slli a5,a5,0x20
    4718:  9381                 srli a5,a5,0x20
    471a:  873e                 mv a4,a5
    471c:  20b00793           li a5,523
    4720:  c31c                 sw a5,0(a4)
    4722:  aa35                 j 485e <FUN_0000463e+0x220>
    4724:  fe043783           ld a5,-32(s0)
    4728:  4b9c                 lw a5,16(a5)
    472a:  1782                 slli a5,a5,0x20
    472c:  9381                 srli a5,a5,0x20
    472e:  873e                 mv a4,a5
    4730:  10e00793           li a5,270
    4734:  c31c                 sw a5,0(a4)
    4736:  a225                 j 485e <FUN_0000463e+0x220>
    4738:  fe043783           ld a5,-32(s0)
    473c:  4b9c                 lw a5,16(a5)
    473e:  1782                 slli a5,a5,0x20
    4740:  9381                 srli a5,a5,0x20
    4742:  873e                 mv a4,a5
    4744:  10e00793           li a5,270
    4748:  c31c                 sw a5,0(a4)
    474a:  0001                 nop
    474c:  aa09                 j 485e <FUN_0000463e+0x220>
    474e:  fc442783           lw a5,-60(s0)
    4752:  0007871b           sext.w a4,a5
    4756:  005b97b7           lui a5,0x5b9
    475a:  d8078793           addi a5,a5,-640 # 5b8d80 <gpio_get_boot_device+0x5aa9ea>
    475e:  08e7e563           bltu a5,a4,47e8 <FUN_0000463e+0x1aa>
    4762:  fe043783           ld a5,-32(s0)
    4766:  4f9c                 lw a5,24(a5)
    4768:  86be                 mv a3,a5
    476a:  4705                 li a4,1
    476c:  02e68763           beq a3,a4,479a <FUN_0000463e+0x15c>
    4770:  873e                 mv a4,a5
    4772:  cb11                 beqz a4,4786 <FUN_0000463e+0x148>
    4774:  86be                 mv a3,a5
    4776:  4709                 li a4,2
    4778:  02e68a63           beq a3,a4,47ac <FUN_0000463e+0x16e>
    477c:  873e                 mv a4,a5
    477e:  478d                 li a5,3
    4780:  02f70f63           beq a4,a5,47be <FUN_0000463e+0x180>
    4784:  a0b9                 j 47d2 <FUN_0000463e+0x194>
    4786:  fe043783           ld a5,-32(s0)
    478a:  4b9c                 lw a5,16(a5)
    478c:  1782                 slli a5,a5,0x20
    478e:  9381                 srli a5,a5,0x20
    4790:  873e                 mv a4,a5
    4792:  10000793           li a5,256
    4796:  c31c                 sw a5,0(a4)
    4798:  a0d9                 j 485e <FUN_0000463e+0x220>
    479a:  fe043783           ld a5,-32(s0)
    479e:  4b9c                 lw a5,16(a5)
    47a0:  1782                 slli a5,a5,0x20
    47a2:  9381                 srli a5,a5,0x20
    47a4:  873e                 mv a4,a5
    47a6:  4785                 li a5,1
    47a8:  c31c                 sw a5,0(a4)
    47aa:  a855                 j 485e <FUN_0000463e+0x220>
    47ac:  fe043783           ld a5,-32(s0)
    47b0:  4b9c                 lw a5,16(a5)
    47b2:  1782                 slli a5,a5,0x20
    47b4:  9381                 srli a5,a5,0x20
    47b6:  873e                 mv a4,a5
    47b8:  4789                 li a5,2
    47ba:  c31c                 sw a5,0(a4)
    47bc:  a04d                 j 485e <FUN_0000463e+0x220>
    47be:  fe043783           ld a5,-32(s0)
    47c2:  4b9c                 lw a5,16(a5)
    47c4:  1782                 slli a5,a5,0x20
    47c6:  9381                 srli a5,a5,0x20
    47c8:  873e                 mv a4,a5
    47ca:  10000793           li a5,256
    47ce:  c31c                 sw a5,0(a4)
    47d0:  a079                 j 485e <FUN_0000463e+0x220>
    47d2:  fe043783           ld a5,-32(s0)
    47d6:  4b9c                 lw a5,16(a5)
    47d8:  1782                 slli a5,a5,0x20
    47da:  9381                 srli a5,a5,0x20
    47dc:  873e                 mv a4,a5
    47de:  10000793           li a5,256
    47e2:  c31c                 sw a5,0(a4)
    47e4:  0001                 nop
    47e6:  a8a5                 j 485e <FUN_0000463e+0x220>
    47e8:  fe043783           ld a5,-32(s0)
    47ec:  4f9c                 lw a5,24(a5)
    47ee:  86be                 mv a3,a5
    47f0:  4705                 li a4,1
    47f2:  02e68563           beq a3,a4,481c <FUN_0000463e+0x1de>
    47f6:  873e                 mv a4,a5
    47f8:  cb11                 beqz a4,480c <FUN_0000463e+0x1ce>
    47fa:  86be                 mv a3,a5
    47fc:  4709                 li a4,2
    47fe:  02e68763           beq a3,a4,482c <FUN_0000463e+0x1ee>
    4802:  873e                 mv a4,a5
    4804:  478d                 li a5,3
    4806:  02f70c63           beq a4,a5,483e <FUN_0000463e+0x200>
    480a:  a091                 j 484e <FUN_0000463e+0x210>
    480c:  fe043783           ld a5,-32(s0)
    4810:  4b9c                 lw a5,16(a5)
    4812:  1782                 slli a5,a5,0x20
    4814:  9381                 srli a5,a5,0x20
    4816:  0007a023           sw zero,0(a5)
    481a:  a091                 j 485e <FUN_0000463e+0x220>
    481c:  fe043783           ld a5,-32(s0)
    4820:  4b9c                 lw a5,16(a5)
    4822:  1782                 slli a5,a5,0x20
    4824:  9381                 srli a5,a5,0x20
    4826:  0007a023           sw zero,0(a5)
    482a:  a815                 j 485e <FUN_0000463e+0x220>
    482c:  fe043783           ld a5,-32(s0)
    4830:  4b9c                 lw a5,16(a5)
    4832:  1782                 slli a5,a5,0x20
    4834:  9381                 srli a5,a5,0x20
    4836:  873e                 mv a4,a5
    4838:  4785                 li a5,1
    483a:  c31c                 sw a5,0(a4)
    483c:  a00d                 j 485e <FUN_0000463e+0x220>
    483e:  fe043783           ld a5,-32(s0)
    4842:  4b9c                 lw a5,16(a5)
    4844:  1782                 slli a5,a5,0x20
    4846:  9381                 srli a5,a5,0x20
    4848:  0007a023           sw zero,0(a5)
    484c:  a809                 j 485e <FUN_0000463e+0x220>
    484e:  fe043783           ld a5,-32(s0)
    4852:  4b9c                 lw a5,16(a5)
    4854:  1782                 slli a5,a5,0x20
    4856:  9381                 srli a5,a5,0x20
    4858:  0007a023           sw zero,0(a5)
    485c:  0001                 nop
    485e:  47c1                 li a5,16
    4860:  fef42623           sw a5,-20(s0)
    4864:  0001                 nop
    4866:  fec42783           lw a5,-20(s0)
    486a:  fff7871b           addiw a4,a5,-1
    486e:  fee42623           sw a4,-20(s0)
    4872:  fbf5                 bnez a5,4866 <FUN_0000463e+0x228>
    4874:  fe043783           ld a5,-32(s0)
    4878:  4b9c                 lw a5,16(a5)
    487a:  1782                 slli a5,a5,0x20
    487c:  9381                 srli a5,a5,0x20
    487e:  439c                 lw a5,0(a5)
    4880:  0007869b           sext.w a3,a5
    4884:  fe043783           ld a5,-32(s0)
    4888:  4b9c                 lw a5,16(a5)
    488a:  1782                 slli a5,a5,0x20
    488c:  9381                 srli a5,a5,0x20
    488e:  873e                 mv a4,a5
    4890:  800007b7           lui a5,0x80000
    4894:  8fd5                 or a5,a5,a3
    4896:  2781                 sext.w a5,a5
    4898:  c31c                 sw a5,0(a4)
    489a:  47c1                 li a5,16
    489c:  fef42623           sw a5,-20(s0)
    48a0:  0001                 nop
    48a2:  fec42783           lw a5,-20(s0)
    48a6:  fff7871b           addiw a4,a5,-1
    48aa:  fee42623           sw a4,-20(s0)
    48ae:  fbf5                 bnez a5,48a2 <FUN_0000463e+0x264>
    48b0:  67c1                 lui a5,0x10
    48b2:  fcf42a23           sw a5,-44(s0)
    48b6:  fd843783           ld a5,-40(s0)
    48ba:  fd442703           lw a4,-44(s0)
    48be:  c3d8                 sw a4,4(a5)
    48c0:  fc843503           ld a0,-56(s0)
    48c4:  c15ff0ef           jal ra,44d8 <FUN_000044d8>
    48c8:  87aa                 mv a5,a0
    48ca:  c399                 beqz a5,48d0 <FUN_0000463e+0x292>
    48cc:  57fd                 li a5,-1
    48ce:  a011                 j 48d2 <FUN_0000463e+0x294>
    48d0:  4781                 li a5,0
    48d2:  853e                 mv a0,a5
    48d4:  70e2                 ld ra,56(sp)
    48d6:  7442                 ld s0,48(sp)
    48d8:  6121                 addi sp,sp,64
    48da:  8082                 ret

00000000000048dc <FUN_000048dc>:
    48dc:  7179                 addi sp,sp,-48
    48de:  f406                 sd ra,40(sp)
    48e0:  f022                 sd s0,32(sp)
    48e2:  1800                 addi s0,sp,48
    48e4:  fca43c23           sd a0,-40(s0)
    48e8:  fd843783           ld a5,-40(s0)
    48ec:  639c                 ld a5,0(a5)
    48ee:  fef43423           sd a5,-24(s0)
    48f2:  fe843783           ld a5,-24(s0)
    48f6:  639c                 ld a5,0(a5)
    48f8:  fef43023           sd a5,-32(s0)
    48fc:  fe043783           ld a5,-32(s0)
    4900:  0607ac23           sw zero,120(a5) # 10078 <gpio_get_boot_device+0x1ce2>
    4904:  4579                 li a0,30
    4906:  07f050ef           jal ra,a184 <udelay>
    490a:  fe043783           ld a5,-32(s0)
    490e:  4705                 li a4,1
    4910:  dfb8                 sw a4,120(a5)
    4912:  12c00513           li a0,300
    4916:  06f050ef           jal ra,a184 <udelay>
    491a:  0001                 nop
    491c:  70a2                 ld ra,40(sp)
    491e:  7402                 ld s0,32(sp)
    4920:  6145                 addi sp,sp,48
    4922:  8082                 ret

0000000000004924 <FUN_00004924>:
    4924:  7179                 addi sp,sp,-48
    4926:  f406                 sd ra,40(sp)
    4928:  f022                 sd s0,32(sp)
    492a:  1800                 addi s0,sp,48
    492c:  fca43c23           sd a0,-40(s0)
    4930:  fd843783           ld a5,-40(s0)
    4934:  639c                 ld a5,0(a5)
    4936:  fef43423           sd a5,-24(s0)
    493a:  fe843783           ld a5,-24(s0)
    493e:  639c                 ld a5,0(a5)
    4940:  fef43023           sd a5,-32(s0)
    4944:  fd843783           ld a5,-40(s0)
    4948:  539c                 lw a5,32(a5)
    494a:  c385                 beqz a5,496a <FUN_00004924+0x46>
    494c:  fd843783           ld a5,-40(s0)
    4950:  539c                 lw a5,32(a5)
    4952:  85be                 mv a1,a5
    4954:  fd843503           ld a0,-40(s0)
    4958:  ce7ff0ef           jal ra,463e <FUN_0000463e>
    495c:  87aa                 mv a5,a0
    495e:  c791                 beqz a5,496a <FUN_00004924+0x46>
    4960:  fe843783           ld a5,-24(s0)
    4964:  4705                 li a4,1
    4966:  d398                 sw a4,32(a5)
    4968:  a82d                 j 49a2 <FUN_00004924+0x7e>
    496a:  fd843783           ld a5,-40(s0)
    496e:  4fdc                 lw a5,28(a5)
    4970:  873e                 mv a4,a5
    4972:  4791                 li a5,4
    4974:  00f71763           bne a4,a5,4982 <FUN_00004924+0x5e>
    4978:  fe043783           ld a5,-32(s0)
    497c:  4705                 li a4,1
    497e:  c7d8                 sw a4,12(a5)
    4980:  a00d                 j 49a2 <FUN_00004924+0x7e>
    4982:  fd843783           ld a5,-40(s0)
    4986:  4fdc                 lw a5,28(a5)
    4988:  873e                 mv a4,a5
    498a:  47a1                 li a5,8
    498c:  00f71763           bne a4,a5,499a <FUN_00004924+0x76>
    4990:  fe043783           ld a5,-32(s0)
    4994:  4709                 li a4,2
    4996:  c7d8                 sw a4,12(a5)
    4998:  a029                 j 49a2 <FUN_00004924+0x7e>
    499a:  fe043783           ld a5,-32(s0)
    499e:  0007a623           sw zero,12(a5)
    49a2:  70a2                 ld ra,40(sp)
    49a4:  7402                 ld s0,32(sp)
    49a6:  6145                 addi sp,sp,48
    49a8:  8082                 ret

00000000000049aa <FUN_000049aa>:
    49aa:  7139                 addi sp,sp,-64
    49ac:  fc06                 sd ra,56(sp)
    49ae:  f822                 sd s0,48(sp)
    49b0:  0080                 addi s0,sp,64
    49b2:  fca43423           sd a0,-56(s0)
    49b6:  fc843783           ld a5,-56(s0)
    49ba:  639c                 ld a5,0(a5)
    49bc:  fef43423           sd a5,-24(s0)
    49c0:  fe843783           ld a5,-24(s0)
    49c4:  639c                 ld a5,0(a5)
    49c6:  fef43023           sd a5,-32(s0)
    49ca:  fc042e23           sw zero,-36(s0)
    49ce:  fe043783           ld a5,-32(s0)
    49d2:  471d                 li a4,7
    49d4:  c398                 sw a4,0(a5)
    49d6:  fc843503           ld a0,-56(s0)
    49da:  bbdff0ef           jal ra,4596 <FUN_00004596>
    49de:  87aa                 mv a5,a0
    49e0:  fcf42c23           sw a5,-40(s0)
    49e4:  fd842783           lw a5,-40(s0)
    49e8:  2781                 sext.w a5,a5
    49ea:  c781                 beqz a5,49f2 <FUN_000049aa+0x48>
    49ec:  fd842783           lw a5,-40(s0)
    49f0:  a2ed                 j 4bda <FUN_000049aa+0x230>
    49f2:  fe043783           ld a5,-32(s0)
    49f6:  00070737           lui a4,0x70
    49fa:  0f87071b           addiw a4,a4,248
    49fe:  c3b8                 sw a4,64(a5)
    4a00:  fe043783           ld a5,-32(s0)
    4a04:  0207a823           sw zero,48(a5)
    4a08:  fe043783           ld a5,-32(s0)
    4a0c:  577d                 li a4,-1
    4a0e:  df98                 sw a4,56(a5)
    4a10:  fe043783           ld a5,-32(s0)
    4a14:  3ff00713           li a4,1023
    4a18:  08e7a423           sw a4,136(a5)
    4a1c:  fe043783           ld a5,-32(s0)
    4a20:  6705                 lui a4,0x1
    4a22:  deb7071b           addiw a4,a4,-533
    4a26:  cbb8                 sw a4,80(a5)
    4a28:  fe043783           ld a5,-32(s0)
    4a2c:  577d                 li a4,-1
    4a2e:  c798                 sw a4,8(a5)
    4a30:  fe043783           ld a5,-32(s0)
    4a34:  02000737           lui a4,0x2000
    4a38:  2705                 addiw a4,a4,1
    4a3a:  10e7a023           sw a4,256(a5)
    4a3e:  fc843783           ld a5,-56(s0)
    4a42:  4bbc                 lw a5,80(a5)
    4a44:  efd1                 bnez a5,4ae0 <FUN_000049aa+0x136>
    4a46:  fe043783           ld a5,-32(s0)
    4a4a:  4ffc                 lw a5,92(a5)
    4a4c:  fcf42e23           sw a5,-36(s0)
    4a50:  fdc42703           lw a4,-36(s0)
    4a54:  800007b7           lui a5,0x80000
    4a58:  8fd9                 or a5,a5,a4
    4a5a:  fcf42e23           sw a5,-36(s0)
    4a5e:  fe043783           ld a5,-32(s0)
    4a62:  fdc42703           lw a4,-36(s0)
    4a66:  cff8                 sw a4,92(a5)
    4a68:  fe043783           ld a5,-32(s0)
    4a6c:  1407a783           lw a5,320(a5) # ffffffff80000140 <gpio_get_boot_device+0
    4a70:  fcf42e23           sw a5,-36(s0)
    4a74:  fdc42703           lw a4,-36(s0)
    4a78:  000307b7           lui a5,0x30
    4a7c:  8fd9                 or a5,a5,a4
    4a7e:  fcf42e23           sw a5,-36(s0)
    4a82:  fe843783           ld a5,-24(s0)
    4a86:  4b9c                 lw a5,16(a5)
    4a88:  1782                 slli a5,a5,0x20
    4a8a:  9381                 srli a5,a5,0x20
    4a8c:  439c                 lw a5,0(a5)
    4a8e:  0007869b           sext.w a3,a5
    4a92:  fe843783           ld a5,-24(s0)
    4a96:  4b9c                 lw a5,16(a5)
    4a98:  1782                 slli a5,a5,0x20
    4a9a:  9381                 srli a5,a5,0x20
    4a9c:  873e                 mv a4,a5
    4a9e:  800007b7           lui a5,0x80000
    4aa2:  fff7c793           not a5,a5
    4aa6:  8ff5                 and a5,a5,a3
    4aa8:  2781                 sext.w a5,a5
    4aaa:  c31c                 sw a5,0(a4)
    4aac:  fe043783           ld a5,-32(s0)
    4ab0:  fdc42703           lw a4,-36(s0)
    4ab4:  14e7a023           sw a4,320(a5) # ffffffff80000140 <gpio_get_boot_device+0
    4ab8:  fe843783           ld a5,-24(s0)
    4abc:  4b9c                 lw a5,16(a5)
    4abe:  1782                 slli a5,a5,0x20
    4ac0:  9381                 srli a5,a5,0x20
    4ac2:  439c                 lw a5,0(a5)
    4ac4:  0007869b           sext.w a3,a5
    4ac8:  fe843783           ld a5,-24(s0)
    4acc:  4b9c                 lw a5,16(a5)
    4ace:  1782                 slli a5,a5,0x20
    4ad0:  9381                 srli a5,a5,0x20
    4ad2:  873e                 mv a4,a5
    4ad4:  800007b7           lui a5,0x80000
    4ad8:  8fd5                 or a5,a5,a3
    4ada:  2781                 sext.w a5,a5
    4adc:  c31c                 sw a5,0(a4)
    4ade:  a8ed                 j 4bd8 <FUN_000049aa+0x22e>
    4ae0:  3e6030ef           jal ra,7ec6 <brom_config_bit_5>
    4ae4:  87aa                 mv a5,a0
    4ae6:  cfa9                 beqz a5,4b40 <FUN_000049aa+0x196>
    4ae8:  fe043783           ld a5,-32(s0)
    4aec:  4ffc                 lw a5,92(a5)
    4aee:  fcf42e23           sw a5,-36(s0)
    4af2:  fdc42703           lw a4,-36(s0)
    4af6:  800007b7           lui a5,0x80000
    4afa:  fff7c793           not a5,a5
    4afe:  8ff9                 and a5,a5,a4
    4b00:  fcf42e23           sw a5,-36(s0)
    4b04:  fe043783           ld a5,-32(s0)
    4b08:  fdc42703           lw a4,-36(s0)
    4b0c:  cff8                 sw a4,92(a5)
    4b0e:  fe043783           ld a5,-32(s0)
    4b12:  1447a783           lw a5,324(a5) # ffffffff80000144 <gpio_get_boot_device+0
    4b16:  fcf42e23           sw a5,-36(s0)
    4b1a:  fdc42783           lw a5,-36(s0)
    4b1e:  fc07f793           andi a5,a5,-64
    4b22:  fcf42e23           sw a5,-36(s0)
    4b26:  fdc42783           lw a5,-36(s0)
    4b2a:  0807e793           ori a5,a5,128
    4b2e:  fcf42e23           sw a5,-36(s0)
    4b32:  fe043783           ld a5,-32(s0)
    4b36:  fdc42703           lw a4,-36(s0)
    4b3a:  14e7a223           sw a4,324(a5)
    4b3e:  a015                 j 4b62 <FUN_000049aa+0x1b8>
    4b40:  fe043783           ld a5,-32(s0)
    4b44:  4ffc                 lw a5,92(a5)
    4b46:  fcf42e23           sw a5,-36(s0)
    4b4a:  fdc42703           lw a4,-36(s0)
    4b4e:  820007b7           lui a5,0x82000
    4b52:  8fd9                 or a5,a5,a4
    4b54:  fcf42e23           sw a5,-36(s0)
    4b58:  fe043783           ld a5,-32(s0)
    4b5c:  fdc42703           lw a4,-36(s0)
    4b60:  cff8                 sw a4,92(a5)
    4b62:  fe043783           ld a5,-32(s0)
    4b66:  1407a783           lw a5,320(a5) # ffffffff82000140 <gpio_get_boot_device+0
    4b6a:  fcf42e23           sw a5,-36(s0)
    4b6e:  fdc42703           lw a4,-36(s0)
    4b72:  000307b7           lui a5,0x30
    4b76:  8fd9                 or a5,a5,a4
    4b78:  fcf42e23           sw a5,-36(s0)
    4b7c:  fe843783           ld a5,-24(s0)
    4b80:  4b9c                 lw a5,16(a5)
    4b82:  1782                 slli a5,a5,0x20
    4b84:  9381                 srli a5,a5,0x20
    4b86:  439c                 lw a5,0(a5)
    4b88:  0007869b           sext.w a3,a5
    4b8c:  fe843783           ld a5,-24(s0)
    4b90:  4b9c                 lw a5,16(a5)
    4b92:  1782                 slli a5,a5,0x20
    4b94:  9381                 srli a5,a5,0x20
    4b96:  873e                 mv a4,a5
    4b98:  800007b7           lui a5,0x80000
    4b9c:  fff7c793           not a5,a5
    4ba0:  8ff5                 and a5,a5,a3
    4ba2:  2781                 sext.w a5,a5
    4ba4:  c31c                 sw a5,0(a4)
    4ba6:  fe043783           ld a5,-32(s0)
    4baa:  fdc42703           lw a4,-36(s0)
    4bae:  14e7a023           sw a4,320(a5) # ffffffff80000140 <gpio_get_boot_device+0
    4bb2:  fe843783           ld a5,-24(s0)
    4bb6:  4b9c                 lw a5,16(a5)
    4bb8:  1782                 slli a5,a5,0x20
    4bba:  9381                 srli a5,a5,0x20
    4bbc:  439c                 lw a5,0(a5)
    4bbe:  0007869b           sext.w a3,a5
    4bc2:  fe843783           ld a5,-24(s0)
    4bc6:  4b9c                 lw a5,16(a5)
    4bc8:  1782                 slli a5,a5,0x20
    4bca:  9381                 srli a5,a5,0x20
    4bcc:  873e                 mv a4,a5
    4bce:  800007b7           lui a5,0x80000
    4bd2:  8fd5                 or a5,a5,a3
    4bd4:  2781                 sext.w a5,a5
    4bd6:  c31c                 sw a5,0(a4)
    4bd8:  4781                 li a5,0
    4bda:  853e                 mv a0,a5
    4bdc:  70e2                 ld ra,56(sp)
    4bde:  7442                 ld s0,48(sp)
    4be0:  6121                 addi sp,sp,64
    4be2:  8082                 ret

0000000000004be4 <FUN_00004be4>:
    4be4:  711d                 addi sp,sp,-96
    4be6:  ec86                 sd ra,88(sp)
    4be8:  e8a2                 sd s0,80(sp)
    4bea:  1080                 addi s0,sp,96
    4bec:  faa43423           sd a0,-88(s0)
    4bf0:  fab43023           sd a1,-96(s0)
    4bf4:  fa843783           ld a5,-88(s0)
    4bf8:  639c                 ld a5,0(a5)
    4bfa:  fcf43823           sd a5,-48(s0)
    4bfe:  fd043783           ld a5,-48(s0)
    4c02:  639c                 ld a5,0(a5)
    4c04:  fcf43423           sd a5,-56(s0)
    4c08:  fe042623           sw zero,-20(s0)
    4c0c:  fa043783           ld a5,-96(s0)
    4c10:  4b98                 lw a4,16(a5)
    4c12:  fa043783           ld a5,-96(s0)
    4c16:  47dc                 lw a5,12(a5)
    4c18:  02f707bb           mulw a5,a4,a5
    4c1c:  fcf42223           sw a5,-60(s0)
    4c20:  fe042423           sw zero,-24(s0)
    4c24:  fe043023           sd zero,-32(s0)
    4c28:  fa043c23           sd zero,-72(s0)
    4c2c:  3e800593           li a1,1000
    4c30:  fd043503           ld a0,-48(s0)
    4c34:  e04ff0ef           jal ra,4238 <FUN_00004238>
    4c38:  fca43c23           sd a0,-40(s0)
    4c3c:  542050ef           jal ra,a17e <rdtime>
    4c40:  fea43023           sd a0,-32(s0)
    4c44:  fa043783           ld a5,-96(s0)
    4c48:  479c                 lw a5,8(a5)
    4c4a:  8b85                 andi a5,a5,1
    4c4c:  2781                 sext.w a5,a5
    4c4e:  c3f1                 beqz a5,4d12 <FUN_00004be4+0x12e>
    4c50:  fa043783           ld a5,-96(s0)
    4c54:  639c                 ld a5,0(a5)
    4c56:  faf43823           sd a5,-80(s0)
    4c5a:  fe042623           sw zero,-20(s0)
    4c5e:  a879                 j 4cfc <FUN_00004be4+0x118>
    4c60:  fc843783           ld a5,-56(s0)
    4c64:  5fdc                 lw a5,60(a5)
    4c66:  2781                 sext.w a5,a5
    4c68:  8b91                 andi a5,a5,4
    4c6a:  2781                 sext.w a5,a5
    4c6c:  e7bd                 bnez a5,4cda <FUN_00004be4+0xf6>
    4c6e:  fc843783           ld a5,-56(s0)
    4c72:  5fdc                 lw a5,60(a5)
    4c74:  2781                 sext.w a5,a5
    4c76:  0117d79b           srliw a5,a5,0x11
    4c7a:  2781                 sext.w a5,a5
    4c7c:  1ff7f793           andi a5,a5,511
    4c80:  fef42423           sw a5,-24(s0)
    4c84:  a035                 j 4cb0 <FUN_00004be4+0xcc>
    4c86:  fd043783           ld a5,-48(s0)
    4c8a:  4fdc                 lw a5,28(a5)
    4c8c:  1782                 slli a5,a5,0x20
    4c8e:  9381                 srli a5,a5,0x20
    4c90:  86be                 mv a3,a5
    4c92:  fec42783           lw a5,-20(s0)
    4c96:  0017871b           addiw a4,a5,1
    4c9a:  fee42623           sw a4,-20(s0)
    4c9e:  1782                 slli a5,a5,0x20
    4ca0:  9381                 srli a5,a5,0x20
    4ca2:  078a                 slli a5,a5,0x2
    4ca4:  fb043703           ld a4,-80(s0)
    4ca8:  97ba                 add a5,a5,a4
    4caa:  4298                 lw a4,0(a3)
    4cac:  2701                 sext.w a4,a4
    4cae:  c398                 sw a4,0(a5)
    4cb0:  fe842783           lw a5,-24(s0)
    4cb4:  fff7871b           addiw a4,a5,-1
    4cb8:  fee42423           sw a4,-24(s0)
    4cbc:  f7e9                 bnez a5,4c86 <FUN_00004be4+0xa2>
    4cbe:  3e800593           li a1,1000
    4cc2:  fd043503           ld a0,-48(s0)
    4cc6:  d72ff0ef           jal ra,4238 <FUN_00004238>
    4cca:  fca43c23           sd a0,-40(s0)
    4cce:  fa043c23           sd zero,-72(s0)
    4cd2:  4ac050ef           jal ra,a17e <rdtime>
    4cd6:  fea43023           sd a0,-32(s0)
    4cda:  4a4050ef           jal ra,a17e <rdtime>
    4cde:  872a                 mv a4,a0
    4ce0:  fe043783           ld a5,-32(s0)
    4ce4:  40f707b3           sub a5,a4,a5
    4ce8:  faf43c23           sd a5,-72(s0)
    4cec:  fb843703           ld a4,-72(s0)
    4cf0:  fd843783           ld a5,-40(s0)
    4cf4:  00f76463           bltu a4,a5,4cfc <FUN_00004be4+0x118>
    4cf8:  57fd                 li a5,-1
    4cfa:  a829                 j 4d14 <FUN_00004be4+0x130>
    4cfc:  fc442783           lw a5,-60(s0)
    4d00:  0027d79b           srliw a5,a5,0x2
    4d04:  0007871b           sext.w a4,a5
    4d08:  fec42783           lw a5,-20(s0)
    4d0c:  2781                 sext.w a5,a5
    4d0e:  f4e7e9e3           bltu a5,a4,4c60 <FUN_00004be4+0x7c>
    4d12:  4781                 li a5,0
    4d14:  853e                 mv a0,a5
    4d16:  60e6                 ld ra,88(sp)
    4d18:  6446                 ld s0,80(sp)
    4d1a:  6125                 addi sp,sp,96
    4d1c:  8082                 ret

0000000000004d1e <FUN_00004d1e>:
    4d1e:  7119                 addi sp,sp,-128
    4d20:  fc86                 sd ra,120(sp)
    4d22:  f8a2                 sd s0,112(sp)
    4d24:  f4a6                 sd s1,104(sp)
    4d26:  0100                 addi s0,sp,128
    4d28:  f8a43423           sd a0,-120(s0)
    4d2c:  f8b43023           sd a1,-128(s0)
    4d30:  f8843783           ld a5,-120(s0)
    4d34:  639c                 ld a5,0(a5)
    4d36:  fcf43023           sd a5,-64(s0)
    4d3a:  fc043783           ld a5,-64(s0)
    4d3e:  639c                 ld a5,0(a5)
    4d40:  faf43c23           sd a5,-72(s0)
    4d44:  fc043783           ld a5,-64(s0)
    4d48:  679c                 ld a5,8(a5)
    4d4a:  faf43823           sd a5,-80(s0)
    4d4e:  f8043783           ld a5,-128(s0)
    4d52:  4b98                 lw a4,16(a5)
    4d54:  f8043783           ld a5,-128(s0)
    4d58:  47dc                 lw a5,12(a5)
    4d5a:  02f707bb           mulw a5,a4,a5
    4d5e:  faf42623           sw a5,-84(s0)
    4d62:  010007b7           lui a5,0x1000
    4d66:  37fd                 addiw a5,a5,-1
    4d68:  faf42423           sw a5,-88(s0)
    4d6c:  fc042c23           sw zero,-40(s0)
    4d70:  fc042a23           sw zero,-44(s0)
    4d74:  fc042823           sw zero,-48(s0)
    4d78:  fc042623           sw zero,-52(s0)
    4d7c:  fa042223           sw zero,-92(s0)
    4d80:  f8043783           ld a5,-128(s0)
    4d84:  479c                 lw a5,8(a5)
    4d86:  8b85                 andi a5,a5,1
    4d88:  2781                 sext.w a5,a5
    4d8a:  c789                 beqz a5,4d94 <FUN_00004d1e+0x76>
    4d8c:  f8043783           ld a5,-128(s0)
    4d90:  639c                 ld a5,0(a5)
    4d92:  a021                 j 4d9a <FUN_00004d1e+0x7c>
    4d94:  f8043783           ld a5,-128(s0)
    4d98:  639c                 ld a5,0(a5)
    4d9a:  f8f43c23           sd a5,-104(s0)
    4d9e:  fac42783           lw a5,-84(s0)
    4da2:  00b7d79b           srliw a5,a5,0xb
    4da6:  fcf42a23           sw a5,-44(s0)
    4daa:  fac42783           lw a5,-84(s0)
    4dae:  7ff7f793           andi a5,a5,2047
    4db2:  fcf42823           sw a5,-48(s0)
    4db6:  fd042783           lw a5,-48(s0)
    4dba:  2781                 sext.w a5,a5
    4dbc:  c799                 beqz a5,4dca <FUN_00004d1e+0xac>
    4dbe:  fd442783           lw a5,-44(s0)
    4dc2:  2785                 addiw a5,a5,1
    4dc4:  fcf42a23           sw a5,-44(s0)
    4dc8:  a031                 j 4dd4 <FUN_00004d1e+0xb6>
    4dca:  6785                 lui a5,0x1
    4dcc:  8007879b           addiw a5,a5,-2048
    4dd0:  fcf42823           sw a5,-48(s0)
    4dd4:  fc042623           sw zero,-52(s0)
    4dd8:  a279                 j 4f66 <FUN_00004d1e+0x248>
    4dda:  fd846783           lwu a5,-40(s0)
    4dde:  0792                 slli a5,a5,0x4
    4de0:  fb043703           ld a4,-80(s0)
    4de4:  97ba                 add a5,a5,a4
    4de6:  4641                 li a2,16
    4de8:  4581                 li a1,0
    4dea:  853e                 mv a0,a5
    4dec:  0fe050ef           jal ra,9eea <memset>
    4df0:  fd846783           lwu a5,-40(s0)
    4df4:  0792                 slli a5,a5,0x4
    4df6:  fb043703           ld a4,-80(s0)
    4dfa:  97ba                 add a5,a5,a4
    4dfc:  4398                 lw a4,0(a5)
    4dfe:  01076713           ori a4,a4,16
    4e02:  c398                 sw a4,0(a5)
    4e04:  fd846783           lwu a5,-40(s0)
    4e08:  0792                 slli a5,a5,0x4
    4e0a:  fb043703           ld a4,-80(s0)
    4e0e:  97ba                 add a5,a5,a4
    4e10:  4394                 lw a3,0(a5)
    4e12:  80000737           lui a4,0x80000
    4e16:  8f55                 or a4,a4,a3
    4e18:  c398                 sw a4,0(a5)
    4e1a:  fd846783           lwu a5,-40(s0)
    4e1e:  0792                 slli a5,a5,0x4
    4e20:  fb043703           ld a4,-80(s0)
    4e24:  97ba                 add a5,a5,a4
    4e26:  4398                 lw a4,0(a5)
    4e28:  00276713           ori a4,a4,2
    4e2c:  c398                 sw a4,0(a5)
    4e2e:  fd442783           lw a5,-44(s0)
    4e32:  0007871b           sext.w a4,a5
    4e36:  4785                 li a5,1
    4e38:  02e7f863           bgeu a5,a4,4e68 <FUN_00004d1e+0x14a>
    4e3c:  fd442783           lw a5,-44(s0)
    4e40:  37fd                 addiw a5,a5,-1
    4e42:  0007871b           sext.w a4,a5
    4e46:  fcc42783           lw a5,-52(s0)
    4e4a:  2781                 sext.w a5,a5
    4e4c:  00e78e63           beq a5,a4,4e68 <FUN_00004d1e+0x14a>
    4e50:  fd846783           lwu a5,-40(s0)
    4e54:  0792                 slli a5,a5,0x4
    4e56:  fb043703           ld a4,-80(s0)
    4e5a:  97ba                 add a5,a5,a4
    4e5c:  6705                 lui a4,0x1
    4e5e:  8007071b           addiw a4,a4,-2048
    4e62:  00e79223           sh a4,4(a5) # 1004 <FUN_00000f2c+0xd8>
    4e66:  a829                 j 4e80 <FUN_00004d1e+0x162>
    4e68:  fd846783           lwu a5,-40(s0)
    4e6c:  0792                 slli a5,a5,0x4
    4e6e:  fb043703           ld a4,-80(s0)
    4e72:  97ba                 add a5,a5,a4
    4e74:  fd042703           lw a4,-48(s0)
    4e78:  1742                 slli a4,a4,0x30
    4e7a:  9341                 srli a4,a4,0x30
    4e7c:  00e79223           sh a4,4(a5)
    4e80:  fcc42783           lw a5,-52(s0)
    4e84:  00b7979b           slliw a5,a5,0xb
    4e88:  2781                 sext.w a5,a5
    4e8a:  02079713           slli a4,a5,0x20
    4e8e:  9301                 srli a4,a4,0x20
    4e90:  f9843783           ld a5,-104(s0)
    4e94:  97ba                 add a5,a5,a4
    4e96:  0027d693           srli a3,a5,0x2
    4e9a:  fd846783           lwu a5,-40(s0)
    4e9e:  0792                 slli a5,a5,0x4
    4ea0:  fb043703           ld a4,-80(s0)
    4ea4:  97ba                 add a5,a5,a4
    4ea6:  0006871b           sext.w a4,a3
    4eaa:  c798                 sw a4,8(a5)
    4eac:  fcc42783           lw a5,-52(s0)
    4eb0:  2781                 sext.w a5,a5
    4eb2:  eb99                 bnez a5,4ec8 <FUN_00004d1e+0x1aa>
    4eb4:  fd846783           lwu a5,-40(s0)
    4eb8:  0792                 slli a5,a5,0x4
    4eba:  fb043703           ld a4,-80(s0)
    4ebe:  97ba                 add a5,a5,a4
    4ec0:  4398                 lw a4,0(a5)
    4ec2:  00876713           ori a4,a4,8
    4ec6:  c398                 sw a4,0(a5)
    4ec8:  fd442783           lw a5,-44(s0)
    4ecc:  37fd                 addiw a5,a5,-1
    4ece:  0007871b           sext.w a4,a5
    4ed2:  fcc42783           lw a5,-52(s0)
    4ed6:  2781                 sext.w a5,a5
    4ed8:  04e79863           bne a5,a4,4f28 <FUN_00004d1e+0x20a>
    4edc:  fd846783           lwu a5,-40(s0)
    4ee0:  0792                 slli a5,a5,0x4
    4ee2:  fb043703           ld a4,-80(s0)
    4ee6:  97ba                 add a5,a5,a4
    4ee8:  4398                 lw a4,0(a5)
    4eea:  9b75                 andi a4,a4,-3
    4eec:  c398                 sw a4,0(a5)
    4eee:  fd846783           lwu a5,-40(s0)
    4ef2:  0792                 slli a5,a5,0x4
    4ef4:  fb043703           ld a4,-80(s0)
    4ef8:  97ba                 add a5,a5,a4
    4efa:  4398                 lw a4,0(a5)
    4efc:  00476713           ori a4,a4,4
    4f00:  c398                 sw a4,0(a5)
    4f02:  fd846783           lwu a5,-40(s0)
    4f06:  0792                 slli a5,a5,0x4
    4f08:  fb043703           ld a4,-80(s0)
    4f0c:  97ba                 add a5,a5,a4
    4f0e:  4398                 lw a4,0(a5)
    4f10:  02076713           ori a4,a4,32
    4f14:  c398                 sw a4,0(a5)
    4f16:  fd846783           lwu a5,-40(s0)
    4f1a:  0792                 slli a5,a5,0x4
    4f1c:  fb043703           ld a4,-80(s0)
    4f20:  97ba                 add a5,a5,a4
    4f22:  0007a623           sw zero,12(a5)
    4f26:  a035                 j 4f52 <FUN_00004d1e+0x234>
    4f28:  fd842783           lw a5,-40(s0)
    4f2c:  2785                 addiw a5,a5,1
    4f2e:  2781                 sext.w a5,a5
    4f30:  1782                 slli a5,a5,0x20
    4f32:  9381                 srli a5,a5,0x20
    4f34:  0792                 slli a5,a5,0x4
    4f36:  fb043703           ld a4,-80(s0)
    4f3a:  97ba                 add a5,a5,a4
    4f3c:  0027d693           srli a3,a5,0x2
    4f40:  fd846783           lwu a5,-40(s0)
    4f44:  0792                 slli a5,a5,0x4
    4f46:  fb043703           ld a4,-80(s0)
    4f4a:  97ba                 add a5,a5,a4
    4f4c:  0006871b           sext.w a4,a3
    4f50:  c7d8                 sw a4,12(a5)
    4f52:  fcc42783           lw a5,-52(s0)
    4f56:  2785                 addiw a5,a5,1
    4f58:  fcf42623           sw a5,-52(s0)
    4f5c:  fd842783           lw a5,-40(s0)
    4f60:  2785                 addiw a5,a5,1
    4f62:  fcf42c23           sw a5,-40(s0)
    4f66:  fcc42703           lw a4,-52(s0)
    4f6a:  fd442783           lw a5,-44(s0)
    4f6e:  2701                 sext.w a4,a4
    4f70:  2781                 sext.w a5,a5
    4f72:  e6f764e3           bltu a4,a5,4dda <FUN_00004d1e+0xbc>
    4f76:  fb843783           ld a5,-72(s0)
    4f7a:  439c                 lw a5,0(a5)
    4f7c:  fcf42e23           sw a5,-36(s0)
    4f80:  fdc42783           lw a5,-36(s0)
    4f84:  0247e793           ori a5,a5,36
    4f88:  0007871b           sext.w a4,a5
    4f8c:  fb843783           ld a5,-72(s0)
    4f90:  c398                 sw a4,0(a5)
    4f92:  f8843503           ld a0,-120(s0)
    4f96:  e00ff0ef           jal ra,4596 <FUN_00004596>
    4f9a:  87aa                 mv a5,a0
    4f9c:  f8f42a23           sw a5,-108(s0)
    4fa0:  f9442783           lw a5,-108(s0)
    4fa4:  2781                 sext.w a5,a5
    4fa6:  c781                 beqz a5,4fae <FUN_00004d1e+0x290>
    4fa8:  f9442783           lw a5,-108(s0)
    4fac:  a075                 j 5058 <FUN_00004d1e+0x33a>
    4fae:  fb843783           ld a5,-72(s0)
    4fb2:  4705                 li a4,1
    4fb4:  08e7a023           sw a4,128(a5)
    4fb8:  fb843783           ld a5,-72(s0)
    4fbc:  08078493           addi s1,a5,128
    4fc0:  4589                 li a1,2
    4fc2:  fc043503           ld a0,-64(s0)
    4fc6:  a72ff0ef           jal ra,4238 <FUN_00004238>
    4fca:  87aa                 mv a5,a0
    4fcc:  863e                 mv a2,a5
    4fce:  4585                 li a1,1
    4fd0:  8526                 mv a0,s1
    4fd2:  174020ef           jal ra,7146 <FUN_00007146>
    4fd6:  87aa                 mv a5,a0
    4fd8:  faf42223           sw a5,-92(s0)
    4fdc:  fa442783           lw a5,-92(s0)
    4fe0:  2781                 sext.w a5,a5
    4fe2:  c399                 beqz a5,4fe8 <FUN_00004d1e+0x2ca>
    4fe4:  57e5                 li a5,-7
    4fe6:  a88d                 j 5058 <FUN_00004d1e+0x33a>
    4fe8:  fb843783           ld a5,-72(s0)
    4fec:  08200713           li a4,130
    4ff0:  08e7a023           sw a4,128(a5)
    4ff4:  fb843783           ld a5,-72(s0)
    4ff8:  08c7a783           lw a5,140(a5)
    4ffc:  2781                 sext.w a5,a5
    4ffe:  9bf1                 andi a5,a5,-4
    5000:  fcf42e23           sw a5,-36(s0)
    5004:  f8043783           ld a5,-128(s0)
    5008:  479c                 lw a5,8(a5)
    500a:  8b89                 andi a5,a5,2
    500c:  2781                 sext.w a5,a5
    500e:  cb81                 beqz a5,501e <FUN_00004d1e+0x300>
    5010:  fdc42783           lw a5,-36(s0)
    5014:  0017e793           ori a5,a5,1
    5018:  fcf42e23           sw a5,-36(s0)
    501c:  a039                 j 502a <FUN_00004d1e+0x30c>
    501e:  fdc42783           lw a5,-36(s0)
    5022:  0027e793           ori a5,a5,2
    5026:  fcf42e23           sw a5,-36(s0)
    502a:  fb843783           ld a5,-72(s0)
    502e:  fdc42703           lw a4,-36(s0)
    5032:  08e7a623           sw a4,140(a5)
    5036:  fb043783           ld a5,-80(s0)
    503a:  8389                 srli a5,a5,0x2
    503c:  0007871b           sext.w a4,a5
    5040:  fb843783           ld a5,-72(s0)
    5044:  08e7a223           sw a4,132(a5)
    5048:  fb843783           ld a5,-72(s0)
    504c:  20070737           lui a4,0x20070
    5050:  0f87071b           addiw a4,a4,248
    5054:  c3b8                 sw a4,64(a5)
    5056:  4781                 li a5,0
    5058:  853e                 mv a0,a5
    505a:  70e6                 ld ra,120(sp)
    505c:  7446                 ld s0,112(sp)
    505e:  74a6                 ld s1,104(sp)
    5060:  6109                 addi sp,sp,128
    5062:  8082                 ret

0000000000005064 <FUN_00005064>:
    5064:  7119                 addi sp,sp,-128
    5066:  fc86                 sd ra,120(sp)
    5068:  f8a2                 sd s0,112(sp)
    506a:  0100                 addi s0,sp,128
    506c:  f8a43c23           sd a0,-104(s0)
    5070:  f8b43823           sd a1,-112(s0)
    5074:  f8c43423           sd a2,-120(s0)
    5078:  f9843783           ld a5,-104(s0)
    507c:  639c                 ld a5,0(a5)
    507e:  fcf43c23           sd a5,-40(s0)
    5082:  fd843783           ld a5,-40(s0)
    5086:  639c                 ld a5,0(a5)
    5088:  fcf43823           sd a5,-48(s0)
    508c:  800007b7           lui a5,0x80000
    5090:  fef42623           sw a5,-20(s0)
    5094:  fe042423           sw zero,-24(s0)
    5098:  fc042623           sw zero,-52(s0)
    509c:  fe042223           sw zero,-28(s0)
    50a0:  fc042423           sw zero,-56(s0)
    50a4:  fe042023           sw zero,-32(s0)
    50a8:  fc043023           sd zero,-64(s0)
    50ac:  fa043c23           sd zero,-72(s0)
    50b0:  fa043823           sd zero,-80(s0)
    50b4:  591020ef           jal ra,7e44 <brom_config_bit_2>
    50b8:  87aa                 mv a5,a0
    50ba:  c781                 beqz a5,50c2 <FUN_00005064+0x5e>
    50bc:  fe042023           sw zero,-32(s0)
    50c0:  a021                 j 50c8 <FUN_00005064+0x64>
    50c2:  4785                 li a5,1
    50c4:  fef42023           sw a5,-32(s0)
    50c8:  fd843783           ld a5,-40(s0)
    50cc:  539c                 lw a5,32(a5)
    50ce:  c399                 beqz a5,50d4 <FUN_00005064+0x70>
    50d0:  57fd                 li a5,-1
    50d2:  a5d5                 j 57b6 <FUN_00005064+0x752>
    50d4:  f9043783           ld a5,-112(s0)
    50d8:  439c                 lw a5,0(a5)
    50da:  e799                 bnez a5,50e8 <FUN_00005064+0x84>
    50dc:  fec42703           lw a4,-20(s0)
    50e0:  67a1                 lui a5,0x8
    50e2:  8fd9                 or a5,a5,a4
    50e4:  fef42623           sw a5,-20(s0)
    50e8:  f9043783           ld a5,-112(s0)
    50ec:  43dc                 lw a5,4(a5)
    50ee:  8b85                 andi a5,a5,1
    50f0:  2781                 sext.w a5,a5
    50f2:  c799                 beqz a5,5100 <FUN_00005064+0x9c>
    50f4:  fec42783           lw a5,-20(s0)
    50f8:  0407e793           ori a5,a5,64
    50fc:  fef42623           sw a5,-20(s0)
    5100:  f9043783           ld a5,-112(s0)
    5104:  43dc                 lw a5,4(a5)
    5106:  8b89                 andi a5,a5,2
    5108:  2781                 sext.w a5,a5
    510a:  c799                 beqz a5,5118 <FUN_00005064+0xb4>
    510c:  fec42783           lw a5,-20(s0)
    5110:  0807e793           ori a5,a5,128
    5114:  fef42623           sw a5,-20(s0)
    5118:  f9043783           ld a5,-112(s0)
    511c:  43dc                 lw a5,4(a5)
    511e:  8b91                 andi a5,a5,4
    5120:  2781                 sext.w a5,a5
    5122:  c799                 beqz a5,5130 <FUN_00005064+0xcc>
    5124:  fec42783           lw a5,-20(s0)
    5128:  1007e793           ori a5,a5,256
    512c:  fef42623           sw a5,-20(s0)
    5130:  f9043783           ld a5,-112(s0)
    5134:  4fdc                 lw a5,28(a5)
    5136:  8b85                 andi a5,a5,1
    5138:  2781                 sext.w a5,a5
    513a:  cb81                 beqz a5,514a <FUN_00005064+0xe6>
    513c:  fec42703           lw a4,-20(s0)
    5140:  050007b7           lui a5,0x5000
    5144:  8fd9                 or a5,a5,a4
    5146:  fef42623           sw a5,-20(s0)
    514a:  f9043783           ld a5,-112(s0)
    514e:  4798                 lw a4,8(a5)
    5150:  fd043783           ld a5,-48(s0)
    5154:  cfd8                 sw a4,28(a5)
    5156:  f8843783           ld a5,-120(s0)
    515a:  ef89                 bnez a5,5174 <FUN_00005064+0x110>
    515c:  f9043783           ld a5,-112(s0)
    5160:  4398                 lw a4,0(a5)
    5162:  fec42783           lw a5,-20(s0)
    5166:  8fd9                 or a5,a5,a4
    5168:  0007871b           sext.w a4,a5
    516c:  fd043783           ld a5,-48(s0)
    5170:  cf98                 sw a4,24(a5)
    5172:  aa2d                 j 52ac <FUN_00005064+0x248>
    5174:  f8843783           ld a5,-120(s0)
    5178:  639c                 ld a5,0(a5)
    517a:  8b8d                 andi a5,a5,3
    517c:  c789                 beqz a5,5186 <FUN_00005064+0x122>
    517e:  57f1                 li a5,-4
    5180:  fef42423           sw a5,-24(s0)
    5184:  a35d                 j 572a <FUN_00005064+0x6c6>
    5186:  fec42703           lw a4,-20(s0)
    518a:  6789                 lui a5,0x2
    518c:  20078793           addi a5,a5,512 # 2200 <FUN_000021f0+0x10>
    5190:  8fd9                 or a5,a5,a4
    5192:  fef42623           sw a5,-20(s0)
    5196:  f8843783           ld a5,-120(s0)
    519a:  479c                 lw a5,8(a5)
    519c:  8b89                 andi a5,a5,2
    519e:  2781                 sext.w a5,a5
    51a0:  c799                 beqz a5,51ae <FUN_00005064+0x14a>
    51a2:  fec42783           lw a5,-20(s0)
    51a6:  4007e793           ori a5,a5,1024
    51aa:  fef42623           sw a5,-20(s0)
    51ae:  f8843783           ld a5,-120(s0)
    51b2:  47d8                 lw a4,12(a5)
    51b4:  f8843783           ld a5,-120(s0)
    51b8:  4b9c                 lw a5,16(a5)
    51ba:  02f707bb           mulw a5,a4,a5
    51be:  fcf42423           sw a5,-56(s0)
    51c2:  f8843783           ld a5,-120(s0)
    51c6:  4b98                 lw a4,16(a5)
    51c8:  fd043783           ld a5,-48(s0)
    51cc:  cb98                 sw a4,16(a5)
    51ce:  fd043783           ld a5,-48(s0)
    51d2:  fc842703           lw a4,-56(s0)
    51d6:  cbd8                 sw a4,20(a5)
    51d8:  fc842783           lw a5,-56(s0)
    51dc:  0007871b           sext.w a4,a5
    51e0:  04000793           li a5,64
    51e4:  06e7f263           bgeu a5,a4,5248 <FUN_00005064+0x1e4>
    51e8:  fe042783           lw a5,-32(s0)
    51ec:  2781                 sext.w a5,a5
    51ee:  cfa9                 beqz a5,5248 <FUN_00005064+0x1e4>
    51f0:  4785                 li a5,1
    51f2:  fef42223           sw a5,-28(s0)
    51f6:  fd043783           ld a5,-48(s0)
    51fa:  439c                 lw a5,0(a5)
    51fc:  2781                 sext.w a5,a5
    51fe:  873e                 mv a4,a5
    5200:  800007b7           lui a5,0x80000
    5204:  fff7c793           not a5,a5
    5208:  8ff9                 and a5,a5,a4
    520a:  0007871b           sext.w a4,a5
    520e:  fd043783           ld a5,-48(s0)
    5212:  c398                 sw a4,0(a5)
    5214:  f8843583           ld a1,-120(s0)
    5218:  f9843503           ld a0,-104(s0)
    521c:  b03ff0ef           jal ra,4d1e <FUN_00004d1e>
    5220:  87aa                 mv a5,a0
    5222:  fef42423           sw a5,-24(s0)
    5226:  fe842783           lw a5,-24(s0)
    522a:  2781                 sext.w a5,a5
    522c:  4e079e63           bnez a5,5728 <FUN_00005064+0x6c4>
    5230:  f9043783           ld a5,-112(s0)
    5234:  4398                 lw a4,0(a5)
    5236:  fec42783           lw a5,-20(s0)
    523a:  8fd9                 or a5,a5,a4
    523c:  0007871b           sext.w a4,a5
    5240:  fd043783           ld a5,-48(s0)
    5244:  cf98                 sw a4,24(a5)
    5246:  a899                 j 529c <FUN_00005064+0x238>
    5248:  fd043783           ld a5,-48(s0)
    524c:  439c                 lw a5,0(a5)
    524e:  2781                 sext.w a5,a5
    5250:  873e                 mv a4,a5
    5252:  800007b7           lui a5,0x80000
    5256:  8fd9                 or a5,a5,a4
    5258:  0007871b           sext.w a4,a5
    525c:  fd043783           ld a5,-48(s0)
    5260:  c398                 sw a4,0(a5)
    5262:  f9043783           ld a5,-112(s0)
    5266:  4398                 lw a4,0(a5)
    5268:  fec42783           lw a5,-20(s0)
    526c:  8fd9                 or a5,a5,a4
    526e:  0007871b           sext.w a4,a5
    5272:  fd043783           ld a5,-48(s0)
    5276:  cf98                 sw a4,24(a5)
    5278:  f9043783           ld a5,-112(s0)
    527c:  4fdc                 lw a5,28(a5)
    527e:  8b85                 andi a5,a5,1
    5280:  2781                 sext.w a5,a5
    5282:  c781                 beqz a5,528a <FUN_00005064+0x226>
    5284:  fe042423           sw zero,-24(s0)
    5288:  a811                 j 529c <FUN_00005064+0x238>
    528a:  f8843583           ld a1,-120(s0)
    528e:  f9843503           ld a0,-104(s0)
    5292:  953ff0ef           jal ra,4be4 <FUN_00004be4>
    5296:  87aa                 mv a5,a0
    5298:  fef42423           sw a5,-24(s0)
    529c:  fe842783           lw a5,-24(s0)
    52a0:  2781                 sext.w a5,a5
    52a2:  c789                 beqz a5,52ac <FUN_00005064+0x248>
    52a4:  57f5                 li a5,-3
    52a6:  fef42423           sw a5,-24(s0)
    52aa:  a141                 j 572a <FUN_00005064+0x6c6>
    52ac:  f9043783           ld a5,-112(s0)
    52b0:  4fdc                 lw a5,28(a5)
    52b2:  8b85                 andi a5,a5,1
    52b4:  2781                 sext.w a5,a5
    52b6:  20078463           beqz a5,54be <FUN_00005064+0x45a>
    52ba:  6c5040ef           jal ra,a17e <rdtime>
    52be:  fca43023           sd a0,-64(s0)
    52c2:  06400593           li a1,100
    52c6:  fd843503           ld a0,-40(s0)
    52ca:  f6ffe0ef           jal ra,4238 <FUN_00004238>
    52ce:  faa43823           sd a0,-80(s0)
    52d2:  6ad040ef           jal ra,a17e <rdtime>
    52d6:  872a                 mv a4,a0
    52d8:  fc043783           ld a5,-64(s0)
    52dc:  40f707b3           sub a5,a4,a5
    52e0:  faf43c23           sd a5,-72(s0)
    52e4:  fd043783           ld a5,-48(s0)
    52e8:  5f9c                 lw a5,56(a5)
    52ea:  2781                 sext.w a5,a5
    52ec:  873e                 mv a4,a5
    52ee:  67b1                 lui a5,0xc
    52f0:  9c278793           addi a5,a5,-1598 # b9c2 <FUN_0000b908+0xba>
    52f4:  8ff9                 and a5,a5,a4
    52f6:  2781                 sext.w a5,a5
    52f8:  eb81                 bnez a5,5308 <FUN_00005064+0x2a4>
    52fa:  fb843703           ld a4,-72(s0)
    52fe:  fb043783           ld a5,-80(s0)
    5302:  fcf768e3           bltu a4,a5,52d2 <FUN_00005064+0x26e>
    5306:  a011                 j 530a <FUN_00005064+0x2a6>
    5308:  0001                 nop
    530a:  fb843703           ld a4,-72(s0)
    530e:  fb043783           ld a5,-80(s0)
    5312:  00f77d63           bgeu a4,a5,532c <FUN_00005064+0x2c8>
    5316:  fd043783           ld a5,-48(s0)
    531a:  5f9c                 lw a5,56(a5)
    531c:  2781                 sext.w a5,a5
    531e:  873e                 mv a4,a5
    5320:  67b1                 lui a5,0xc
    5322:  8c278793           addi a5,a5,-1854 # b8c2 <FUN_0000b876+0x4c>
    5326:  8ff9                 and a5,a5,a4
    5328:  2781                 sext.w a5,a5
    532a:  cb8d                 beqz a5,535c <FUN_00005064+0x2f8>
    532c:  fd043783           ld a5,-48(s0)
    5330:  5f9c                 lw a5,56(a5)
    5332:  2781                 sext.w a5,a5
    5334:  873e                 mv a4,a5
    5336:  67b1                 lui a5,0xc
    5338:  8c278793           addi a5,a5,-1854 # b8c2 <FUN_0000b876+0x4c>
    533c:  8ff9                 and a5,a5,a4
    533e:  2781                 sext.w a5,a5
    5340:  c789                 beqz a5,534a <FUN_00005064+0x2e6>
    5342:  57f5                 li a5,-3
    5344:  fef42423           sw a5,-24(s0)
    5348:  a021                 j 5350 <FUN_00005064+0x2ec>
    534a:  57ed                 li a5,-5
    534c:  fef42423           sw a5,-24(s0)
    5350:  fd043783           ld a5,-48(s0)
    5354:  88000737           lui a4,0x88000
    5358:  cf98                 sw a4,24(a5)
    535a:  aec1                 j 572a <FUN_00005064+0x6c6>
    535c:  fd043783           ld a5,-48(s0)
    5360:  10000713           li a4,256
    5364:  df98                 sw a4,56(a5)
    5366:  619040ef           jal ra,a17e <rdtime>
    536a:  fca43023           sd a0,-64(s0)
    536e:  3b600593           li a1,950
    5372:  fd843503           ld a0,-40(s0)
    5376:  ec3fe0ef           jal ra,4238 <FUN_00004238>
    537a:  faa43823           sd a0,-80(s0)
    537e:  601040ef           jal ra,a17e <rdtime>
    5382:  872a                 mv a4,a0
    5384:  fc043783           ld a5,-64(s0)
    5388:  40f707b3           sub a5,a4,a5
    538c:  faf43c23           sd a5,-72(s0)
    5390:  fd043783           ld a5,-48(s0)
    5394:  5f9c                 lw a5,56(a5)
    5396:  2781                 sext.w a5,a5
    5398:  873e                 mv a4,a5
    539a:  67b1                 lui a5,0xc
    539c:  ac278793           addi a5,a5,-1342 # bac2 <FUN_0000ba8a+0x38>
    53a0:  8ff9                 and a5,a5,a4
    53a2:  2781                 sext.w a5,a5
    53a4:  eb81                 bnez a5,53b4 <FUN_00005064+0x350>
    53a6:  fb843703           ld a4,-72(s0)
    53aa:  fb043783           ld a5,-80(s0)
    53ae:  fcf768e3           bltu a4,a5,537e <FUN_00005064+0x31a>
    53b2:  a011                 j 53b6 <FUN_00005064+0x352>
    53b4:  0001                 nop
    53b6:  fb843703           ld a4,-72(s0)
    53ba:  fb043783           ld a5,-80(s0)
    53be:  00f77d63           bgeu a4,a5,53d8 <FUN_00005064+0x374>
    53c2:  fd043783           ld a5,-48(s0)
    53c6:  5f9c                 lw a5,56(a5)
    53c8:  2781                 sext.w a5,a5
    53ca:  873e                 mv a4,a5
    53cc:  67b1                 lui a5,0xc
    53ce:  8c278793           addi a5,a5,-1854 # b8c2 <FUN_0000b876+0x4c>
    53d2:  8ff9                 and a5,a5,a4
    53d4:  2781                 sext.w a5,a5
    53d6:  cb8d                 beqz a5,5408 <FUN_00005064+0x3a4>
    53d8:  fd043783           ld a5,-48(s0)
    53dc:  5f9c                 lw a5,56(a5)
    53de:  2781                 sext.w a5,a5
    53e0:  873e                 mv a4,a5
    53e2:  67b1                 lui a5,0xc
    53e4:  8c278793           addi a5,a5,-1854 # b8c2 <FUN_0000b876+0x4c>
    53e8:  8ff9                 and a5,a5,a4
    53ea:  2781                 sext.w a5,a5
    53ec:  c789                 beqz a5,53f6 <FUN_00005064+0x392>
    53ee:  57f5                 li a5,-3
    53f0:  fef42423           sw a5,-24(s0)
    53f4:  a021                 j 53fc <FUN_00005064+0x398>
    53f6:  57e9                 li a5,-6
    53f8:  fef42423           sw a5,-24(s0)
    53fc:  fd043783           ld a5,-48(s0)
    5400:  88000737           lui a4,0x88000
    5404:  cf98                 sw a4,24(a5)
    5406:  a615                 j 572a <FUN_00005064+0x6c6>
    5408:  fd043783           ld a5,-48(s0)
    540c:  20000713           li a4,512
    5410:  df98                 sw a4,56(a5)
    5412:  fe442783           lw a5,-28(s0)
    5416:  2781                 sext.w a5,a5
    5418:  eb99                 bnez a5,542e <FUN_00005064+0x3ca>
    541a:  f8843583           ld a1,-120(s0)
    541e:  f9843503           ld a0,-104(s0)
    5422:  fc2ff0ef           jal ra,4be4 <FUN_00004be4>
    5426:  87aa                 mv a5,a0
    5428:  fef42423           sw a5,-24(s0)
    542c:  a849                 j 54be <FUN_00005064+0x45a>
    542e:  551040ef           jal ra,a17e <rdtime>
    5432:  fca43023           sd a0,-64(s0)
    5436:  5dc00593           li a1,1500
    543a:  fd843503           ld a0,-40(s0)
    543e:  dfbfe0ef           jal ra,4238 <FUN_00004238>
    5442:  faa43823           sd a0,-80(s0)
    5446:  539040ef           jal ra,a17e <rdtime>
    544a:  872a                 mv a4,a0
    544c:  fc043783           ld a5,-64(s0)
    5450:  40f707b3           sub a5,a4,a5
    5454:  faf43c23           sd a5,-72(s0)
    5458:  fd043783           ld a5,-48(s0)
    545c:  0887a783           lw a5,136(a5)
    5460:  2781                 sext.w a5,a5
    5462:  8b89                 andi a5,a5,2
    5464:  2781                 sext.w a5,a5
    5466:  e395                 bnez a5,548a <FUN_00005064+0x426>
    5468:  fd043783           ld a5,-48(s0)
    546c:  5f9c                 lw a5,56(a5)
    546e:  2781                 sext.w a5,a5
    5470:  873e                 mv a4,a5
    5472:  67b1                 lui a5,0xc
    5474:  8c278793           addi a5,a5,-1854 # b8c2 <FUN_0000b876+0x4c>
    5478:  8ff9                 and a5,a5,a4
    547a:  2781                 sext.w a5,a5
    547c:  e799                 bnez a5,548a <FUN_00005064+0x426>
    547e:  fb843703           ld a4,-72(s0)
    5482:  fb043783           ld a5,-80(s0)
    5486:  fcf760e3           bltu a4,a5,5446 <FUN_00005064+0x3e2>
    548a:  fb843703           ld a4,-72(s0)
    548e:  fb043783           ld a5,-80(s0)
    5492:  00f77d63           bgeu a4,a5,54ac <FUN_00005064+0x448>
    5496:  fd043783           ld a5,-48(s0)
    549a:  5f9c                 lw a5,56(a5)
    549c:  2781                 sext.w a5,a5
    549e:  873e                 mv a4,a5
    54a0:  67b1                 lui a5,0xc
    54a2:  8c278793           addi a5,a5,-1854 # b8c2 <FUN_0000b876+0x4c>
    54a6:  8ff9                 and a5,a5,a4
    54a8:  2781                 sext.w a5,a5
    54aa:  cb91                 beqz a5,54be <FUN_00005064+0x45a>
    54ac:  57e1                 li a5,-8
    54ae:  fef42423           sw a5,-24(s0)
    54b2:  fd043783           ld a5,-48(s0)
    54b6:  88000737           lui a4,0x88000
    54ba:  cf98                 sw a4,24(a5)
    54bc:  a4bd                 j 572a <FUN_00005064+0x6c6>
    54be:  4c1040ef           jal ra,a17e <rdtime>
    54c2:  fca43023           sd a0,-64(s0)
    54c6:  4589                 li a1,2
    54c8:  fd843503           ld a0,-40(s0)
    54cc:  d6dfe0ef           jal ra,4238 <FUN_00004238>
    54d0:  faa43823           sd a0,-80(s0)
    54d4:  4ab040ef           jal ra,a17e <rdtime>
    54d8:  872a                 mv a4,a0
    54da:  fc043783           ld a5,-64(s0)
    54de:  40f707b3           sub a5,a4,a5
    54e2:  faf43c23           sd a5,-72(s0)
    54e6:  fd043783           ld a5,-48(s0)
    54ea:  5f9c                 lw a5,56(a5)
    54ec:  fcf42623           sw a5,-52(s0)
    54f0:  fcc42703           lw a4,-52(s0)
    54f4:  67b1                 lui a5,0xc
    54f6:  bc678793           addi a5,a5,-1082 # bbc6 <FUN_0000bbb0+0x16>
    54fa:  8ff9                 and a5,a5,a4
    54fc:  2781                 sext.w a5,a5
    54fe:  eb81                 bnez a5,550e <FUN_00005064+0x4aa>
    5500:  fb843703           ld a4,-72(s0)
    5504:  fb043783           ld a5,-80(s0)
    5508:  fcf766e3           bltu a4,a5,54d4 <FUN_00005064+0x470>
    550c:  a011                 j 5510 <FUN_00005064+0x4ac>
    550e:  0001                 nop
    5510:  fb843703           ld a4,-72(s0)
    5514:  fb043783           ld a5,-80(s0)
    5518:  00f77a63           bgeu a4,a5,552c <FUN_00005064+0x4c8>
    551c:  fcc42703           lw a4,-52(s0)
    5520:  67b1                 lui a5,0xc
    5522:  bc278793           addi a5,a5,-1086 # bbc2 <FUN_0000bbb0+0x12>
    5526:  8ff9                 and a5,a5,a4
    5528:  2781                 sext.w a5,a5
    552a:  c789                 beqz a5,5534 <FUN_00005064+0x4d0>
    552c:  57f9                 li a5,-2
    552e:  fef42423           sw a5,-24(s0)
    5532:  aae5                 j 572a <FUN_00005064+0x6c6>
    5534:  f8843783           ld a5,-120(s0)
    5538:  12078063           beqz a5,5658 <FUN_00005064+0x5f4>
    553c:  fa042623           sw zero,-84(s0)
    5540:  43f040ef           jal ra,a17e <rdtime>
    5544:  fca43023           sd a0,-64(s0)
    5548:  5dc00593           li a1,1500
    554c:  fd843503           ld a0,-40(s0)
    5550:  ce9fe0ef           jal ra,4238 <FUN_00004238>
    5554:  faa43823           sd a0,-80(s0)
    5558:  67b1                 lui a5,0xc
    555a:  bca7879b           addiw a5,a5,-1078
    555e:  faf42623           sw a5,-84(s0)
    5562:  41d040ef           jal ra,a17e <rdtime>
    5566:  872a                 mv a4,a0
    5568:  fc043783           ld a5,-64(s0)
    556c:  40f707b3           sub a5,a4,a5
    5570:  faf43c23           sd a5,-72(s0)
    5574:  fd043783           ld a5,-48(s0)
    5578:  5f9c                 lw a5,56(a5)
    557a:  fcf42623           sw a5,-52(s0)
    557e:  fcc42703           lw a4,-52(s0)
    5582:  fac42783           lw a5,-84(s0)
    5586:  8ff9                 and a5,a5,a4
    5588:  2781                 sext.w a5,a5
    558a:  eb81                 bnez a5,559a <FUN_00005064+0x536>
    558c:  fb843703           ld a4,-72(s0)
    5590:  fb043783           ld a5,-80(s0)
    5594:  fcf767e3           bltu a4,a5,5562 <FUN_00005064+0x4fe>
    5598:  a011                 j 559c <FUN_00005064+0x538>
    559a:  0001                 nop
    559c:  fb843703           ld a4,-72(s0)
    55a0:  fb043783           ld a5,-80(s0)
    55a4:  00f77a63           bgeu a4,a5,55b8 <FUN_00005064+0x554>
    55a8:  fcc42703           lw a4,-52(s0)
    55ac:  67b1                 lui a5,0xc
    55ae:  bc278793           addi a5,a5,-1086 # bbc2 <FUN_0000bbb0+0x12>
    55b2:  8ff9                 and a5,a5,a4
    55b4:  2781                 sext.w a5,a5
    55b6:  c789                 beqz a5,55c0 <FUN_00005064+0x55c>
    55b8:  57f5                 li a5,-3
    55ba:  fef42423           sw a5,-24(s0)
    55be:  a2b5                 j 572a <FUN_00005064+0x6c6>
    55c0:  fe442783           lw a5,-28(s0)
    55c4:  2781                 sext.w a5,a5
    55c6:  cbc9                 beqz a5,5658 <FUN_00005064+0x5f4>
    55c8:  f9043783           ld a5,-112(s0)
    55cc:  4fdc                 lw a5,28(a5)
    55ce:  8b85                 andi a5,a5,1
    55d0:  2781                 sext.w a5,a5
    55d2:  e3d9                 bnez a5,5658 <FUN_00005064+0x5f4>
    55d4:  3ab040ef           jal ra,a17e <rdtime>
    55d8:  fca43023           sd a0,-64(s0)
    55dc:  5dc00593           li a1,1500
    55e0:  fd843503           ld a0,-40(s0)
    55e4:  c55fe0ef           jal ra,4238 <FUN_00004238>
    55e8:  faa43823           sd a0,-80(s0)
    55ec:  393040ef           jal ra,a17e <rdtime>
    55f0:  872a                 mv a4,a0
    55f2:  fc043783           ld a5,-64(s0)
    55f6:  40f707b3           sub a5,a4,a5
    55fa:  faf43c23           sd a5,-72(s0)
    55fe:  fd043783           ld a5,-48(s0)
    5602:  5f9c                 lw a5,56(a5)
    5604:  fcf42623           sw a5,-52(s0)
    5608:  fd043783           ld a5,-48(s0)
    560c:  0887a783           lw a5,136(a5)
    5610:  2781                 sext.w a5,a5
    5612:  8b89                 andi a5,a5,2
    5614:  2781                 sext.w a5,a5
    5616:  ef99                 bnez a5,5634 <FUN_00005064+0x5d0>
    5618:  fcc42703           lw a4,-52(s0)
    561c:  67b1                 lui a5,0xc
    561e:  bc278793           addi a5,a5,-1086 # bbc2 <FUN_0000bbb0+0x12>
    5622:  8ff9                 and a5,a5,a4
    5624:  2781                 sext.w a5,a5
    5626:  e799                 bnez a5,5634 <FUN_00005064+0x5d0>
    5628:  fb843703           ld a4,-72(s0)
    562c:  fb043783           ld a5,-80(s0)
    5630:  faf76ee3           bltu a4,a5,55ec <FUN_00005064+0x588>
    5634:  fb843703           ld a4,-72(s0)
    5638:  fb043783           ld a5,-80(s0)
    563c:  00f77a63           bgeu a4,a5,5650 <FUN_00005064+0x5ec>
    5640:  fcc42703           lw a4,-52(s0)
    5644:  67b1                 lui a5,0xc
    5646:  bc278793           addi a5,a5,-1086 # bbc2 <FUN_0000bbb0+0x12>
    564a:  8ff9                 and a5,a5,a4
    564c:  2781                 sext.w a5,a5
    564e:  c789                 beqz a5,5658 <FUN_00005064+0x5f4>
    5650:  57e1                 li a5,-8
    5652:  fef42423           sw a5,-24(s0)
    5656:  a8d1                 j 572a <FUN_00005064+0x6c6>
    5658:  f9043783           ld a5,-112(s0)
    565c:  43dc                 lw a5,4(a5)
    565e:  8ba1                 andi a5,a5,8
    5660:  2781                 sext.w a5,a5
    5662:  c3bd                 beqz a5,56c8 <FUN_00005064+0x664>
    5664:  31b040ef           jal ra,a17e <rdtime>
    5668:  fca43023           sd a0,-64(s0)
    566c:  0c800593           li a1,200
    5670:  fd843503           ld a0,-40(s0)
    5674:  bc5fe0ef           jal ra,4238 <FUN_00004238>
    5678:  faa43823           sd a0,-80(s0)
    567c:  303040ef           jal ra,a17e <rdtime>
    5680:  872a                 mv a4,a0
    5682:  fc043783           ld a5,-64(s0)
    5686:  40f707b3           sub a5,a4,a5
    568a:  faf43c23           sd a5,-72(s0)
    568e:  fd043783           ld a5,-48(s0)
    5692:  5fdc                 lw a5,60(a5)
    5694:  fcf42623           sw a5,-52(s0)
    5698:  fcc42783           lw a5,-52(s0)
    569c:  2007f793           andi a5,a5,512
    56a0:  2781                 sext.w a5,a5
    56a2:  cb81                 beqz a5,56b2 <FUN_00005064+0x64e>
    56a4:  fb843703           ld a4,-72(s0)
    56a8:  fb043783           ld a5,-80(s0)
    56ac:  fcf768e3           bltu a4,a5,567c <FUN_00005064+0x618>
    56b0:  a011                 j 56b4 <FUN_00005064+0x650>
    56b2:  0001                 nop
    56b4:  fb843703           ld a4,-72(s0)
    56b8:  fb043783           ld a5,-80(s0)
    56bc:  00f76663           bltu a4,a5,56c8 <FUN_00005064+0x664>
    56c0:  57f5                 li a5,-3
    56c2:  fef42423           sw a5,-24(s0)
    56c6:  a095                 j 572a <FUN_00005064+0x6c6>
    56c8:  f9043783           ld a5,-112(s0)
    56cc:  43dc                 lw a5,4(a5)
    56ce:  8b89                 andi a5,a5,2
    56d0:  2781                 sext.w a5,a5
    56d2:  c3b1                 beqz a5,5716 <FUN_00005064+0x6b2>
    56d4:  fd043783           ld a5,-48(s0)
    56d8:  57dc                 lw a5,44(a5)
    56da:  0007871b           sext.w a4,a5
    56de:  f9043783           ld a5,-112(s0)
    56e2:  c7d8                 sw a4,12(a5)
    56e4:  fd043783           ld a5,-48(s0)
    56e8:  579c                 lw a5,40(a5)
    56ea:  0007871b           sext.w a4,a5
    56ee:  f9043783           ld a5,-112(s0)
    56f2:  cb98                 sw a4,16(a5)
    56f4:  fd043783           ld a5,-48(s0)
    56f8:  53dc                 lw a5,36(a5)
    56fa:  0007871b           sext.w a4,a5
    56fe:  f9043783           ld a5,-112(s0)
    5702:  cbd8                 sw a4,20(a5)
    5704:  fd043783           ld a5,-48(s0)
    5708:  539c                 lw a5,32(a5)
    570a:  0007871b           sext.w a4,a5
    570e:  f9043783           ld a5,-112(s0)
    5712:  cf98                 sw a4,24(a5)
    5714:  a819                 j 572a <FUN_00005064+0x6c6>
    5716:  fd043783           ld a5,-48(s0)
    571a:  539c                 lw a5,32(a5)
    571c:  0007871b           sext.w a4,a5
    5720:  f9043783           ld a5,-112(s0)
    5724:  c7d8                 sw a4,12(a5)
    5726:  a011                 j 572a <FUN_00005064+0x6c6>
    5728:  0001                 nop
    572a:  f8843783           ld a5,-120(s0)
    572e:  c7a1                 beqz a5,5776 <FUN_00005064+0x712>
    5730:  fe442783           lw a5,-28(s0)
    5734:  2781                 sext.w a5,a5
    5736:  c3a1                 beqz a5,5776 <FUN_00005064+0x712>
    5738:  fd043783           ld a5,-48(s0)
    573c:  0887a783           lw a5,136(a5)
    5740:  fcf42623           sw a5,-52(s0)
    5744:  fd043783           ld a5,-48(s0)
    5748:  fcc42703           lw a4,-52(s0)
    574c:  08e7a423           sw a4,136(a5)
    5750:  fd043783           ld a5,-48(s0)
    5754:  0807a623           sw zero,140(a5)
    5758:  fd043783           ld a5,-48(s0)
    575c:  0807a023           sw zero,128(a5)
    5760:  fd043783           ld a5,-48(s0)
    5764:  439c                 lw a5,0(a5)
    5766:  2781                 sext.w a5,a5
    5768:  fdf7f793           andi a5,a5,-33
    576c:  0007871b           sext.w a4,a5
    5770:  fd043783           ld a5,-48(s0)
    5774:  c398                 sw a4,0(a5)
    5776:  fe842783           lw a5,-24(s0)
    577a:  2781                 sext.w a5,a5
    577c:  c79d                 beqz a5,57aa <FUN_00005064+0x746>
    577e:  fd043783           ld a5,-48(s0)
    5782:  471d                 li a4,7
    5784:  c398                 sw a4,0(a5)
    5786:  f9843503           ld a0,-104(s0)
    578a:  e0dfe0ef           jal ra,4596 <FUN_00004596>
    578e:  87aa                 mv a5,a0
    5790:  faf42423           sw a5,-88(s0)
    5794:  fa842783           lw a5,-88(s0)
    5798:  2781                 sext.w a5,a5
    579a:  c781                 beqz a5,57a2 <FUN_00005064+0x73e>
    579c:  fa842783           lw a5,-88(s0)
    57a0:  a819                 j 57b6 <FUN_00005064+0x752>
    57a2:  f9843503           ld a0,-104(s0)
    57a6:  d33fe0ef           jal ra,44d8 <FUN_000044d8>
    57aa:  fd043783           ld a5,-48(s0)
    57ae:  577d                 li a4,-1
    57b0:  df98                 sw a4,56(a5)
    57b2:  fe842783           lw a5,-24(s0)
    57b6:  853e                 mv a0,a5
    57b8:  70e6                 ld ra,120(sp)
    57ba:  7446                 ld s0,112(sp)
    57bc:  6109                 addi sp,sp,128
    57be:  8082                 ret

00000000000057c0 <FUN_000057c0>:
    57c0:  7179                 addi sp,sp,-48
    57c2:  f406                 sd ra,40(sp)
    57c4:  f022                 sd s0,32(sp)
    57c6:  1800                 addi s0,sp,48
    57c8:  87aa                 mv a5,a0
    57ca:  fcb43823           sd a1,-48(s0)
    57ce:  fcf42e23           sw a5,-36(s0)
    57d2:  fd043783           ld a5,-48(s0)
    57d6:  639c                 ld a5,0(a5)
    57d8:  fef43423           sd a5,-24(s0)
    57dc:  fdc42783           lw a5,-36(s0)
    57e0:  fe843583           ld a1,-24(s0)
    57e4:  853e                 mv a0,a5
    57e6:  a7ffe0ef           jal ra,4264 <FUN_00004264>
    57ea:  fe843783           ld a5,-24(s0)
    57ee:  639c                 ld a5,0(a5)
    57f0:  471d                 li a4,7
    57f2:  c398                 sw a4,0(a5)
    57f4:  fd043503           ld a0,-48(s0)
    57f8:  d9ffe0ef           jal ra,4596 <FUN_00004596>
    57fc:  87aa                 mv a5,a0
    57fe:  fef42223           sw a5,-28(s0)
    5802:  fe442783           lw a5,-28(s0)
    5806:  2781                 sext.w a5,a5
    5808:  c781                 beqz a5,5810 <FUN_000057c0+0x50>
    580a:  fe442783           lw a5,-28(s0)
    580e:  a081                 j 584e <FUN_000057c0+0x8e>
    5810:  fd043783           ld a5,-48(s0)
    5814:  6705                 lui a4,0x1
    5816:  9117071b           addiw a4,a4,-1775
    581a:  d798                 sw a4,40(a5)
    581c:  fd043783           ld a5,-48(s0)
    5820:  00fe0737           lui a4,0xfe0
    5824:  c798                 sw a4,8(a5)
    5826:  fd043783           ld a5,-48(s0)
    582a:  00062737           lui a4,0x62
    582e:  a807071b           addiw a4,a4,-1408
    5832:  cb98                 sw a4,16(a5)
    5834:  fd043783           ld a5,-48(s0)
    5838:  03197737           lui a4,0x3197
    583c:  5007071b           addiw a4,a4,1280
    5840:  cbd8                 sw a4,20(a5)
    5842:  fd043783           ld a5,-48(s0)
    5846:  fdc42703           lw a4,-36(s0)
    584a:  cbb8                 sw a4,80(a5)
    584c:  4781                 li a5,0
    584e:  853e                 mv a0,a5
    5850:  70a2                 ld ra,40(sp)
    5852:  7402                 ld s0,32(sp)
    5854:  6145                 addi sp,sp,48
    5856:  8082                 ret

0000000000005858 <FUN_00005858>:
    5858:  7179                 addi sp,sp,-48
    585a:  f406                 sd ra,40(sp)
    585c:  f022                 sd s0,32(sp)
    585e:  1800                 addi s0,sp,48
    5860:  87aa                 mv a5,a0
    5862:  fcb43823           sd a1,-48(s0)
    5866:  fcf42e23           sw a5,-36(s0)
    586a:  fd043783           ld a5,-48(s0)
    586e:  639c                 ld a5,0(a5)
    5870:  fef43423           sd a5,-24(s0)
    5874:  fdc42783           lw a5,-36(s0)
    5878:  fe843583           ld a1,-24(s0)
    587c:  853e                 mv a0,a5
    587e:  b65fe0ef           jal ra,43e2 <FUN_000043e2>
    5882:  4781                 li a5,0
    5884:  853e                 mv a0,a5
    5886:  70a2                 ld ra,40(sp)
    5888:  7402                 ld s0,32(sp)
    588a:  6145                 addi sp,sp,48
    588c:  8082                 ret

000000000000588e <FUN_0000588e>:
    588e:  715d                 addi sp,sp,-80
    5890:  e486                 sd ra,72(sp)
    5892:  e0a2                 sd s0,64(sp)
    5894:  0880                 addi s0,sp,80
    5896:  faa43c23           sd a0,-72(s0)
    589a:  87ae                 mv a5,a1
    589c:  faf42a23           sw a5,-76(s0)
    58a0:  47b5                 li a5,13
    58a2:  fcf42423           sw a5,-56(s0)
    58a6:  47d5                 li a5,21
    58a8:  fcf42623           sw a5,-52(s0)
    58ac:  fb843783           ld a5,-72(s0)
    58b0:  5f9c                 lw a5,56(a5)
    58b2:  0107979b           slliw a5,a5,0x10
    58b6:  2781                 sext.w a5,a5
    58b8:  fcf42823           sw a5,-48(s0)
    58bc:  fe042223           sw zero,-28(s0)
    58c0:  fc840793           addi a5,s0,-56
    58c4:  4601                 li a2,0
    58c6:  85be                 mv a1,a5
    58c8:  fb843503           ld a0,-72(s0)
    58cc:  f98ff0ef           jal ra,5064 <FUN_00005064>
    58d0:  87aa                 mv a5,a0
    58d2:  fef42623           sw a5,-20(s0)
    58d6:  fec42783           lw a5,-20(s0)
    58da:  2781                 sext.w a5,a5
    58dc:  c781                 beqz a5,58e4 <FUN_0000588e+0x56>
    58de:  fec42783           lw a5,-20(s0)
    58e2:  a0b9                 j 5930 <FUN_0000588e+0xa2>
    58e4:  fd442783           lw a5,-44(s0)
    58e8:  1007f793           andi a5,a5,256
    58ec:  2781                 sext.w a5,a5
    58ee:  eb85                 bnez a5,591e <FUN_0000588e+0x90>
    58f0:  4505                 li a0,1
    58f2:  0bd040ef           jal ra,a1ae <udelay_x800>
    58f6:  fd442783           lw a5,-44(s0)
    58fa:  873e                 mv a4,a5
    58fc:  fdf947b7           lui a5,0xfdf94
    5900:  08078793           addi a5,a5,128 # fffffffffdf94080 <gpio_get_boot_device+
    5904:  8ff9                 and a5,a5,a4
    5906:  2781                 sext.w a5,a5
    5908:  c399                 beqz a5,590e <FUN_0000588e+0x80>
    590a:  57b9                 li a5,-18
    590c:  a015                 j 5930 <FUN_0000588e+0xa2>
    590e:  fb442783           lw a5,-76(s0)
    5912:  fff7871b           addiw a4,a5,-1
    5916:  fae42a23           sw a4,-76(s0)
    591a:  f3dd                 bnez a5,58c0 <FUN_0000588e+0x32>
    591c:  a011                 j 5920 <FUN_0000588e+0x92>
    591e:  0001                 nop
    5920:  fb442783           lw a5,-76(s0)
    5924:  2781                 sext.w a5,a5
    5926:  00f04463           bgtz a5,592e <FUN_0000588e+0xa0>
    592a:  57b5                 li a5,-19
    592c:  a011                 j 5930 <FUN_0000588e+0xa2>
    592e:  4781                 li a5,0
    5930:  853e                 mv a0,a5
    5932:  60a6                 ld ra,72(sp)
    5934:  6406                 ld s0,64(sp)
    5936:  6161                 addi sp,sp,80
    5938:  8082                 ret

000000000000593a <FUN_0000593a>:
    593a:  715d                 addi sp,sp,-80
    593c:  e486                 sd ra,72(sp)
    593e:  e0a2                 sd s0,64(sp)
    5940:  0880                 addi s0,sp,80
    5942:  faa43c23           sd a0,-72(s0)
    5946:  fe042623           sw zero,-20(s0)
    594a:  fc042423           sw zero,-56(s0)
    594e:  fc042823           sw zero,-48(s0)
    5952:  fc042623           sw zero,-52(s0)
    5956:  fe042223           sw zero,-28(s0)
    595a:  fc840793           addi a5,s0,-56
    595e:  4601                 li a2,0
    5960:  85be                 mv a1,a5
    5962:  fb843503           ld a0,-72(s0)
    5966:  efeff0ef           jal ra,5064 <FUN_00005064>
    596a:  87aa                 mv a5,a0
    596c:  fef42623           sw a5,-20(s0)
    5970:  4505                 li a0,1
    5972:  03d040ef           jal ra,a1ae <udelay_x800>
    5976:  fec42783           lw a5,-20(s0)
    597a:  853e                 mv a0,a5
    597c:  60a6                 ld ra,72(sp)
    597e:  6406                 ld s0,64(sp)
    5980:  6161                 addi sp,sp,80
    5982:  8082                 ret

0000000000005984 <FUN_00005984>:
    5984:  715d                 addi sp,sp,-80
    5986:  e486                 sd ra,72(sp)
    5988:  e0a2                 sd s0,64(sp)
    598a:  0880                 addi s0,sp,80
    598c:  faa43c23           sd a0,-72(s0)
    5990:  fe042623           sw zero,-20(s0)
    5994:  fc042423           sw zero,-56(s0)
    5998:  f0f0f7b7           lui a5,0xf0f0f
    599c:  0f07879b           addiw a5,a5,240
    59a0:  fcf42823           sw a5,-48(s0)
    59a4:  fc042623           sw zero,-52(s0)
    59a8:  fe042223           sw zero,-28(s0)
    59ac:  fc840793           addi a5,s0,-56
    59b0:  4601                 li a2,0
    59b2:  85be                 mv a1,a5
    59b4:  fb843503           ld a0,-72(s0)
    59b8:  eacff0ef           jal ra,5064 <FUN_00005064>
    59bc:  87aa                 mv a5,a0
    59be:  fef42623           sw a5,-20(s0)
    59c2:  fec42783           lw a5,-20(s0)
    59c6:  853e                 mv a0,a5
    59c8:  60a6                 ld ra,72(sp)
    59ca:  6406                 ld s0,64(sp)
    59cc:  6161                 addi sp,sp,80
    59ce:  8082                 ret

00000000000059d0 <FUN_000059d0>:
    59d0:  715d                 addi sp,sp,-80
    59d2:  e486                 sd ra,72(sp)
    59d4:  e0a2                 sd s0,64(sp)
    59d6:  0880                 addi s0,sp,80
    59d8:  faa43c23           sd a0,-72(s0)
    59dc:  fe042623           sw zero,-20(s0)
    59e0:  fc042423           sw zero,-56(s0)
    59e4:  f0f0f7b7           lui a5,0xf0f0f
    59e8:  0fa7879b           addiw a5,a5,250
    59ec:  fcf42823           sw a5,-48(s0)
    59f0:  fc042623           sw zero,-52(s0)
    59f4:  fe042223           sw zero,-28(s0)
    59f8:  fc840793           addi a5,s0,-56
    59fc:  4601                 li a2,0
    59fe:  85be                 mv a1,a5
    5a00:  fb843503           ld a0,-72(s0)
    5a04:  e60ff0ef           jal ra,5064 <FUN_00005064>
    5a08:  87aa                 mv a5,a0
    5a0a:  fef42623           sw a5,-20(s0)
    5a0e:  4505                 li a0,1
    5a10:  79e040ef           jal ra,a1ae <udelay_x800>
    5a14:  fec42783           lw a5,-20(s0)
    5a18:  853e                 mv a0,a5
    5a1a:  60a6                 ld ra,72(sp)
    5a1c:  6406                 ld s0,64(sp)
    5a1e:  6161                 addi sp,sp,80
    5a20:  8082                 ret

0000000000005a22 <FUN_00005a22>:
    5a22:  715d                 addi sp,sp,-80
    5a24:  e486                 sd ra,72(sp)
    5a26:  e0a2                 sd s0,64(sp)
    5a28:  0880                 addi s0,sp,80
    5a2a:  faa43c23           sd a0,-72(s0)
    5a2e:  3e800793           li a5,1000
    5a32:  fef42623           sw a5,-20(s0)
    5a36:  03700793           li a5,55
    5a3a:  fcf42023           sw a5,-64(s0)
    5a3e:  47d5                 li a5,21
    5a40:  fcf42223           sw a5,-60(s0)
    5a44:  fc042423           sw zero,-56(s0)
    5a48:  fc042e23           sw zero,-36(s0)
    5a4c:  fc040793           addi a5,s0,-64
    5a50:  4601                 li a2,0
    5a52:  85be                 mv a1,a5
    5a54:  fb843503           ld a0,-72(s0)
    5a58:  e0cff0ef           jal ra,5064 <FUN_00005064>
    5a5c:  87aa                 mv a5,a0
    5a5e:  fef42423           sw a5,-24(s0)
    5a62:  fe842783           lw a5,-24(s0)
    5a66:  2781                 sext.w a5,a5
    5a68:  c781                 beqz a5,5a70 <FUN_00005a22+0x4e>
    5a6a:  fe842783           lw a5,-24(s0)
    5a6e:  a8c5                 j 5b5e <FUN_00005a22+0x13c>
    5a70:  02900793           li a5,41
    5a74:  fcf42023           sw a5,-64(s0)
    5a78:  4785                 li a5,1
    5a7a:  fcf42223           sw a5,-60(s0)
    5a7e:  fb843783           ld a5,-72(s0)
    5a82:  479c                 lw a5,8(a5)
    5a84:  873e                 mv a4,a5
    5a86:  00ff87b7           lui a5,0xff8
    5a8a:  8ff9                 and a5,a5,a4
    5a8c:  2781                 sext.w a5,a5
    5a8e:  fcf42423           sw a5,-56(s0)
    5a92:  fb843783           ld a5,-72(s0)
    5a96:  47dc                 lw a5,12(a5)
    5a98:  873e                 mv a4,a5
    5a9a:  000207b7           lui a5,0x20
    5a9e:  02078793           addi a5,a5,32 # 20020 <gpio_get_boot_device+0x11c8a>
    5aa2:  00f71b63           bne a4,a5,5ab8 <FUN_00005a22+0x96>
    5aa6:  fc842783           lw a5,-56(s0)
    5aaa:  873e                 mv a4,a5
    5aac:  400007b7           lui a5,0x40000
    5ab0:  8fd9                 or a5,a5,a4
    5ab2:  2781                 sext.w a5,a5
    5ab4:  fcf42423           sw a5,-56(s0)
    5ab8:  fc040793           addi a5,s0,-64
    5abc:  4601                 li a2,0
    5abe:  85be                 mv a1,a5
    5ac0:  fb843503           ld a0,-72(s0)
    5ac4:  da0ff0ef           jal ra,5064 <FUN_00005064>
    5ac8:  87aa                 mv a5,a0
    5aca:  fef42423           sw a5,-24(s0)
    5ace:  fe842783           lw a5,-24(s0)
    5ad2:  2781                 sext.w a5,a5
    5ad4:  c781                 beqz a5,5adc <FUN_00005a22+0xba>
    5ad6:  fe842783           lw a5,-24(s0)
    5ada:  a051                 j 5b5e <FUN_00005a22+0x13c>
    5adc:  4505                 li a0,1
    5ade:  6d0040ef           jal ra,a1ae <udelay_x800>
    5ae2:  fcc42783           lw a5,-52(s0)
    5ae6:  2781                 sext.w a5,a5
    5ae8:  0007c963           bltz a5,5afa <FUN_00005a22+0xd8>
    5aec:  fec42783           lw a5,-20(s0)
    5af0:  fff7871b           addiw a4,a5,-1
    5af4:  fee42623           sw a4,-20(s0)
    5af8:  ff9d                 bnez a5,5a36 <FUN_00005a22+0x14>
    5afa:  fec42783           lw a5,-20(s0)
    5afe:  2781                 sext.w a5,a5
    5b00:  00f04463           bgtz a5,5b08 <FUN_00005a22+0xe6>
    5b04:  57bd                 li a5,-17
    5b06:  a8a1                 j 5b5e <FUN_00005a22+0x13c>
    5b08:  fb843783           ld a5,-72(s0)
    5b0c:  47dc                 lw a5,12(a5)
    5b0e:  873e                 mv a4,a5
    5b10:  000207b7           lui a5,0x20
    5b14:  02078793           addi a5,a5,32 # 20020 <gpio_get_boot_device+0x11c8a>
    5b18:  00f70863           beq a4,a5,5b28 <FUN_00005a22+0x106>
    5b1c:  fb843783           ld a5,-72(s0)
    5b20:  00020737           lui a4,0x20
    5b24:  2741                 addiw a4,a4,16
    5b26:  c7d8                 sw a4,12(a5)
    5b28:  fcc42703           lw a4,-52(s0)
    5b2c:  fb843783           ld a5,-72(s0)
    5b30:  d7d8                 sw a4,44(a5)
    5b32:  fb843783           ld a5,-72(s0)
    5b36:  57dc                 lw a5,44(a5)
    5b38:  873e                 mv a4,a5
    5b3a:  400007b7           lui a5,0x40000
    5b3e:  8ff9                 and a5,a5,a4
    5b40:  2781                 sext.w a5,a5
    5b42:  00f037b3           snez a5,a5
    5b46:  0ff7f793           andi a5,a5,255
    5b4a:  0007871b           sext.w a4,a5
    5b4e:  fb843783           ld a5,-72(s0)
    5b52:  cf98                 sw a4,24(a5)
    5b54:  fb843783           ld a5,-72(s0)
    5b58:  0207ac23           sw zero,56(a5) # 40000038 <gpio_get_boot_device+0x3fff1c
    5b5c:  4781                 li a5,0
    5b5e:  853e                 mv a0,a5
    5b60:  60a6                 ld ra,72(sp)
    5b62:  6406                 ld s0,64(sp)
    5b64:  6161                 addi sp,sp,80
    5b66:  8082                 ret

0000000000005b68 <FUN_00005b68>:
    5b68:  715d                 addi sp,sp,-80
    5b6a:  e486                 sd ra,72(sp)
    5b6c:  e0a2                 sd s0,64(sp)
    5b6e:  0880                 addi s0,sp,80
    5b70:  faa43c23           sd a0,-72(s0)
    5b74:  3e800793           li a5,1000
    5b78:  fef42623           sw a5,-20(s0)
    5b7c:  fb843503           ld a0,-72(s0)
    5b80:  dbbff0ef           jal ra,593a <FUN_0000593a>
    5b84:  4785                 li a5,1
    5b86:  fcf42023           sw a5,-64(s0)
    5b8a:  4785                 li a5,1
    5b8c:  fcf42223           sw a5,-60(s0)
    5b90:  fc042423           sw zero,-56(s0)
    5b94:  fc042e23           sw zero,-36(s0)
    5b98:  fc040793           addi a5,s0,-64
    5b9c:  4601                 li a2,0
    5b9e:  85be                 mv a1,a5
    5ba0:  fb843503           ld a0,-72(s0)
    5ba4:  cc0ff0ef           jal ra,5064 <FUN_00005064>
    5ba8:  87aa                 mv a5,a0
    5baa:  fef42423           sw a5,-24(s0)
    5bae:  fe842783           lw a5,-24(s0)
    5bb2:  2781                 sext.w a5,a5
    5bb4:  c781                 beqz a5,5bbc <FUN_00005b68+0x54>
    5bb6:  fe842783           lw a5,-24(s0)
    5bba:  a201                 j 5cba <FUN_00005b68+0x152>
    5bbc:  4505                 li a0,1
    5bbe:  5f0040ef           jal ra,a1ae <udelay_x800>
    5bc2:  4785                 li a5,1
    5bc4:  fcf42023           sw a5,-64(s0)
    5bc8:  4785                 li a5,1
    5bca:  fcf42223           sw a5,-60(s0)
    5bce:  fb843783           ld a5,-72(s0)
    5bd2:  4798                 lw a4,8(a5)
    5bd4:  fcc42783           lw a5,-52(s0)
    5bd8:  8ff9                 and a5,a5,a4
    5bda:  2781                 sext.w a5,a5
    5bdc:  873e                 mv a4,a5
    5bde:  010007b7           lui a5,0x1000
    5be2:  f8078793           addi a5,a5,-128 # ffff80 <gpio_get_boot_device+0xff1bea>
    5be6:  8ff9                 and a5,a5,a4
    5be8:  0007871b           sext.w a4,a5
    5bec:  fcc42783           lw a5,-52(s0)
    5bf0:  86be                 mv a3,a5
    5bf2:  600007b7           lui a5,0x60000
    5bf6:  8ff5                 and a5,a5,a3
    5bf8:  2781                 sext.w a5,a5
    5bfa:  8fd9                 or a5,a5,a4
    5bfc:  2781                 sext.w a5,a5
    5bfe:  fcf42423           sw a5,-56(s0)
    5c02:  fb843783           ld a5,-72(s0)
    5c06:  579c                 lw a5,40(a5)
    5c08:  873e                 mv a4,a5
    5c0a:  6785                 lui a5,0x1
    5c0c:  80078793           addi a5,a5,-2048 # 800 <FUN_00000660+0x1a0>
    5c10:  8ff9                 and a5,a5,a4
    5c12:  2781                 sext.w a5,a5
    5c14:  cb91                 beqz a5,5c28 <FUN_00005b68+0xc0>
    5c16:  fc842783           lw a5,-56(s0)
    5c1a:  873e                 mv a4,a5
    5c1c:  400007b7           lui a5,0x40000
    5c20:  8fd9                 or a5,a5,a4
    5c22:  2781                 sext.w a5,a5
    5c24:  fcf42423           sw a5,-56(s0)
    5c28:  fc042e23           sw zero,-36(s0)
    5c2c:  fc040793           addi a5,s0,-64
    5c30:  4601                 li a2,0
    5c32:  85be                 mv a1,a5
    5c34:  fb843503           ld a0,-72(s0)
    5c38:  c2cff0ef           jal ra,5064 <FUN_00005064>
    5c3c:  87aa                 mv a5,a0
    5c3e:  fef42423           sw a5,-24(s0)
    5c42:  fe842783           lw a5,-24(s0)
    5c46:  2781                 sext.w a5,a5
    5c48:  c781                 beqz a5,5c50 <FUN_00005b68+0xe8>
    5c4a:  fe842783           lw a5,-24(s0)
    5c4e:  a0b5                 j 5cba <FUN_00005b68+0x152>
    5c50:  4505                 li a0,1
    5c52:  55c040ef           jal ra,a1ae <udelay_x800>
    5c56:  fcc42783           lw a5,-52(s0)
    5c5a:  2781                 sext.w a5,a5
    5c5c:  0007c963           bltz a5,5c6e <FUN_00005b68+0x106>
    5c60:  fec42783           lw a5,-20(s0)
    5c64:  fff7871b           addiw a4,a5,-1
    5c68:  fee42623           sw a4,-20(s0)
    5c6c:  fbb9                 bnez a5,5bc2 <FUN_00005b68+0x5a>
    5c6e:  fec42783           lw a5,-20(s0)
    5c72:  2781                 sext.w a5,a5
    5c74:  00f04463           bgtz a5,5c7c <FUN_00005b68+0x114>
    5c78:  57bd                 li a5,-17
    5c7a:  a081                 j 5cba <FUN_00005b68+0x152>
    5c7c:  fb843783           ld a5,-72(s0)
    5c80:  6741                 lui a4,0x10
    5c82:  c7d8                 sw a4,12(a5)
    5c84:  fcc42703           lw a4,-52(s0)
    5c88:  fb843783           ld a5,-72(s0)
    5c8c:  d7d8                 sw a4,44(a5)
    5c8e:  fb843783           ld a5,-72(s0)
    5c92:  57dc                 lw a5,44(a5)
    5c94:  873e                 mv a4,a5
    5c96:  400007b7           lui a5,0x40000
    5c9a:  8ff9                 and a5,a5,a4
    5c9c:  2781                 sext.w a5,a5
    5c9e:  00f037b3           snez a5,a5
    5ca2:  0ff7f793           andi a5,a5,255
    5ca6:  0007871b           sext.w a4,a5
    5caa:  fb843783           ld a5,-72(s0)
    5cae:  cf98                 sw a4,24(a5)
    5cb0:  fb843783           ld a5,-72(s0)
    5cb4:  4705                 li a4,1
    5cb6:  df98                 sw a4,56(a5)
    5cb8:  4781                 li a5,0
    5cba:  853e                 mv a0,a5
    5cbc:  60a6                 ld ra,72(sp)
    5cbe:  6406                 ld s0,64(sp)
    5cc0:  6161                 addi sp,sp,80
    5cc2:  8082                 ret

0000000000005cc4 <FUN_00005cc4>:
    5cc4:  711d                 addi sp,sp,-96
    5cc6:  ec86                 sd ra,88(sp)
    5cc8:  e8a2                 sd s0,80(sp)
    5cca:  1080                 addi s0,sp,96
    5ccc:  faa43423           sd a0,-88(s0)
    5cd0:  fab43023           sd a1,-96(s0)
    5cd4:  47a1                 li a5,8
    5cd6:  fcf42423           sw a5,-56(s0)
    5cda:  47d5                 li a5,21
    5cdc:  fcf42623           sw a5,-52(s0)
    5ce0:  fc042823           sw zero,-48(s0)
    5ce4:  fe042223           sw zero,-28(s0)
    5ce8:  fa043783           ld a5,-96(s0)
    5cec:  faf43823           sd a5,-80(s0)
    5cf0:  4785                 li a5,1
    5cf2:  faf42e23           sw a5,-68(s0)
    5cf6:  20000793           li a5,512
    5cfa:  fcf42023           sw a5,-64(s0)
    5cfe:  4785                 li a5,1
    5d00:  faf42c23           sw a5,-72(s0)
    5d04:  fb040713           addi a4,s0,-80
    5d08:  fc840793           addi a5,s0,-56
    5d0c:  863a                 mv a2,a4
    5d0e:  85be                 mv a1,a5
    5d10:  fa843503           ld a0,-88(s0)
    5d14:  b50ff0ef           jal ra,5064 <FUN_00005064>
    5d18:  87aa                 mv a5,a0
    5d1a:  fef42623           sw a5,-20(s0)
    5d1e:  fec42783           lw a5,-20(s0)
    5d22:  853e                 mv a0,a5
    5d24:  60e6                 ld ra,88(sp)
    5d26:  6446                 ld s0,80(sp)
    5d28:  6125                 addi sp,sp,96
    5d2a:  8082                 ret

0000000000005d2c <FUN_00005d2c>:
    5d2c:  715d                 addi sp,sp,-80
    5d2e:  e486                 sd ra,72(sp)
    5d30:  e0a2                 sd s0,64(sp)
    5d32:  0880                 addi s0,sp,80
    5d34:  faa43c23           sd a0,-72(s0)
    5d38:  87ae                 mv a5,a1
    5d3a:  8736                 mv a4,a3
    5d3c:  faf40ba3           sb a5,-73(s0)
    5d40:  87b2                 mv a5,a2
    5d42:  faf40b23           sb a5,-74(s0)
    5d46:  87ba                 mv a5,a4
    5d48:  faf40aa3           sb a5,-75(s0)
    5d4c:  3e800793           li a5,1000
    5d50:  fef42623           sw a5,-20(s0)
    5d54:  4799                 li a5,6
    5d56:  fcf42023           sw a5,-64(s0)
    5d5a:  47f5                 li a5,29
    5d5c:  fcf42223           sw a5,-60(s0)
    5d60:  fb644783           lbu a5,-74(s0)
    5d64:  2781                 sext.w a5,a5
    5d66:  0107979b           slliw a5,a5,0x10
    5d6a:  0007871b           sext.w a4,a5
    5d6e:  030007b7           lui a5,0x3000
    5d72:  8fd9                 or a5,a5,a4
    5d74:  0007871b           sext.w a4,a5
    5d78:  fb544783           lbu a5,-75(s0)
    5d7c:  2781                 sext.w a5,a5
    5d7e:  0087979b           slliw a5,a5,0x8
    5d82:  2781                 sext.w a5,a5
    5d84:  8fd9                 or a5,a5,a4
    5d86:  2781                 sext.w a5,a5
    5d88:  2781                 sext.w a5,a5
    5d8a:  fcf42423           sw a5,-56(s0)
    5d8e:  fc042e23           sw zero,-36(s0)
    5d92:  fc040793           addi a5,s0,-64
    5d96:  4601                 li a2,0
    5d98:  85be                 mv a1,a5
    5d9a:  fb843503           ld a0,-72(s0)
    5d9e:  ac6ff0ef           jal ra,5064 <FUN_00005064>
    5da2:  87aa                 mv a5,a0
    5da4:  fef42423           sw a5,-24(s0)
    5da8:  fec42783           lw a5,-20(s0)
    5dac:  85be                 mv a1,a5
    5dae:  fb843503           ld a0,-72(s0)
    5db2:  addff0ef           jal ra,588e <FUN_0000588e>
    5db6:  fe842783           lw a5,-24(s0)
    5dba:  853e                 mv a0,a5
    5dbc:  60a6                 ld ra,72(sp)
    5dbe:  6406                 ld s0,64(sp)
    5dc0:  6161                 addi sp,sp,80
    5dc2:  8082                 ret

0000000000005dc4 <FUN_00005dc4>:
    5dc4:  1101                 addi sp,sp,-32
    5dc6:  ec22                 sd s0,24(sp)
    5dc8:  1000                 addi s0,sp,32
    5dca:  fea43423           sd a0,-24(s0)
    5dce:  feb43023           sd a1,-32(s0)
    5dd2:  fe843783           ld a5,-24(s0)
    5dd6:  0207a223           sw zero,36(a5) # 3000024 <gpio_get_boot_device+0x2ff1c8e
    5dda:  fe843783           ld a5,-24(s0)
    5dde:  47dc                 lw a5,12(a5)
    5de0:  873e                 mv a4,a5
    5de2:  67c1                 lui a5,0x10
    5de4:  03f78793           addi a5,a5,63 # 1003f <gpio_get_boot_device+0x1ca9>
    5de8:  00e7e463           bltu a5,a4,5df0 <FUN_00005dc4+0x2c>
    5dec:  4781                 li a5,0
    5dee:  a035                 j 5e1a <FUN_00005dc4+0x56>
    5df0:  fe843783           ld a5,-24(s0)
    5df4:  53dc                 lw a5,36(a5)
    5df6:  1007e793           ori a5,a5,256
    5dfa:  0007871b           sext.w a4,a5
    5dfe:  fe843783           ld a5,-24(s0)
    5e02:  d3d8                 sw a4,36(a5)
    5e04:  fe843783           ld a5,-24(s0)
    5e08:  53dc                 lw a5,36(a5)
    5e0a:  0017e793           ori a5,a5,1
    5e0e:  0007871b           sext.w a4,a5
    5e12:  fe843783           ld a5,-24(s0)
    5e16:  d3d8                 sw a4,36(a5)
    5e18:  4781                 li a5,0
    5e1a:  853e                 mv a0,a5
    5e1c:  6462                 ld s0,24(sp)
    5e1e:  6105                 addi sp,sp,32
    5e20:  8082                 ret

0000000000005e22 <FUN_00005e22>:
    5e22:  7159                 addi sp,sp,-112
    5e24:  f486                 sd ra,104(sp)
    5e26:  f0a2                 sd s0,96(sp)
    5e28:  1880                 addi s0,sp,112
    5e2a:  f8a43c23           sd a0,-104(s0)
    5e2e:  f9843783           ld a5,-104(s0)
    5e32:  0207a223           sw zero,36(a5)
    5e36:  03700793           li a5,55
    5e3a:  fcf42023           sw a5,-64(s0)
    5e3e:  47d5                 li a5,21
    5e40:  fcf42223           sw a5,-60(s0)
    5e44:  f9843783           ld a5,-104(s0)
    5e48:  5f9c                 lw a5,56(a5)
    5e4a:  0107979b           slliw a5,a5,0x10
    5e4e:  2781                 sext.w a5,a5
    5e50:  fcf42423           sw a5,-56(s0)
    5e54:  fc042e23           sw zero,-36(s0)
    5e58:  fc040793           addi a5,s0,-64
    5e5c:  4601                 li a2,0
    5e5e:  85be                 mv a1,a5
    5e60:  f9843503           ld a0,-104(s0)
    5e64:  a00ff0ef           jal ra,5064 <FUN_00005064>
    5e68:  87aa                 mv a5,a0
    5e6a:  fef42423           sw a5,-24(s0)
    5e6e:  fe842783           lw a5,-24(s0)
    5e72:  2781                 sext.w a5,a5
    5e74:  c781                 beqz a5,5e7c <FUN_00005e22+0x5a>
    5e76:  fe842783           lw a5,-24(s0)
    5e7a:  a265                 j 6022 <FUN_00005e22+0x200>
    5e7c:  03300793           li a5,51
    5e80:  fcf42023           sw a5,-64(s0)
    5e84:  47d5                 li a5,21
    5e86:  fcf42223           sw a5,-60(s0)
    5e8a:  fc042423           sw zero,-56(s0)
    5e8e:  fc042e23           sw zero,-36(s0)
    5e92:  478d                 li a5,3
    5e94:  fef42623           sw a5,-20(s0)
    5e98:  fb840793           addi a5,s0,-72
    5e9c:  faf43023           sd a5,-96(s0)
    5ea0:  47a1                 li a5,8
    5ea2:  faf42823           sw a5,-80(s0)
    5ea6:  4785                 li a5,1
    5ea8:  faf42623           sw a5,-84(s0)
    5eac:  4785                 li a5,1
    5eae:  faf42423           sw a5,-88(s0)
    5eb2:  fa040713           addi a4,s0,-96
    5eb6:  fc040793           addi a5,s0,-64
    5eba:  863a                 mv a2,a4
    5ebc:  85be                 mv a1,a5
    5ebe:  f9843503           ld a0,-104(s0)
    5ec2:  9a2ff0ef           jal ra,5064 <FUN_00005064>
    5ec6:  87aa                 mv a5,a0
    5ec8:  fef42423           sw a5,-24(s0)
    5ecc:  fe842783           lw a5,-24(s0)
    5ed0:  2781                 sext.w a5,a5
    5ed2:  cf81                 beqz a5,5eea <FUN_00005e22+0xc8>
    5ed4:  fec42783           lw a5,-20(s0)
    5ed8:  fff7871b           addiw a4,a5,-1
    5edc:  fee42623           sw a4,-20(s0)
    5ee0:  c391                 beqz a5,5ee4 <FUN_00005e22+0xc2>
    5ee2:  bf5d                 j 5e98 <FUN_00005e22+0x76>
    5ee4:  fe842783           lw a5,-24(s0)
    5ee8:  aa2d                 j 6022 <FUN_00005e22+0x200>
    5eea:  fb842783           lw a5,-72(s0)
    5eee:  0187d79b           srliw a5,a5,0x18
    5ef2:  0007871b           sext.w a4,a5
    5ef6:  fb842783           lw a5,-72(s0)
    5efa:  0087d79b           srliw a5,a5,0x8
    5efe:  2781                 sext.w a5,a5
    5f00:  86be                 mv a3,a5
    5f02:  67c1                 lui a5,0x10
    5f04:  f0078793           addi a5,a5,-256 # ff00 <gpio_get_boot_device+0x1b6a>
    5f08:  8ff5                 and a5,a5,a3
    5f0a:  2781                 sext.w a5,a5
    5f0c:  8fd9                 or a5,a5,a4
    5f0e:  0007871b           sext.w a4,a5
    5f12:  fb842783           lw a5,-72(s0)
    5f16:  0087979b           slliw a5,a5,0x8
    5f1a:  2781                 sext.w a5,a5
    5f1c:  86be                 mv a3,a5
    5f1e:  00ff07b7           lui a5,0xff0
    5f22:  8ff5                 and a5,a5,a3
    5f24:  2781                 sext.w a5,a5
    5f26:  8fd9                 or a5,a5,a4
    5f28:  0007871b           sext.w a4,a5
    5f2c:  fb842783           lw a5,-72(s0)
    5f30:  0187979b           slliw a5,a5,0x18
    5f34:  2781                 sext.w a5,a5
    5f36:  8fd9                 or a5,a5,a4
    5f38:  0007871b           sext.w a4,a5
    5f3c:  f9843783           ld a5,-104(s0)
    5f40:  db98                 sw a4,48(a5)
    5f42:  fbc42783           lw a5,-68(s0)
    5f46:  0187d79b           srliw a5,a5,0x18
    5f4a:  0007871b           sext.w a4,a5
    5f4e:  fbc42783           lw a5,-68(s0)
    5f52:  0087d79b           srliw a5,a5,0x8
    5f56:  2781                 sext.w a5,a5
    5f58:  86be                 mv a3,a5
    5f5a:  67c1                 lui a5,0x10
    5f5c:  f0078793           addi a5,a5,-256 # ff00 <gpio_get_boot_device+0x1b6a>
    5f60:  8ff5                 and a5,a5,a3
    5f62:  2781                 sext.w a5,a5
    5f64:  8fd9                 or a5,a5,a4
    5f66:  0007871b           sext.w a4,a5
    5f6a:  fbc42783           lw a5,-68(s0)
    5f6e:  0087979b           slliw a5,a5,0x8
    5f72:  2781                 sext.w a5,a5
    5f74:  86be                 mv a3,a5
    5f76:  00ff07b7           lui a5,0xff0
    5f7a:  8ff5                 and a5,a5,a3
    5f7c:  2781                 sext.w a5,a5
    5f7e:  8fd9                 or a5,a5,a4
    5f80:  0007871b           sext.w a4,a5
    5f84:  fbc42783           lw a5,-68(s0)
    5f88:  0187979b           slliw a5,a5,0x18
    5f8c:  2781                 sext.w a5,a5
    5f8e:  8fd9                 or a5,a5,a4
    5f90:  0007871b           sext.w a4,a5
    5f94:  f9843783           ld a5,-104(s0)
    5f98:  dbd8                 sw a4,52(a5)
    5f9a:  f9843783           ld a5,-104(s0)
    5f9e:  5b9c                 lw a5,48(a5)
    5fa0:  0187d79b           srliw a5,a5,0x18
    5fa4:  2781                 sext.w a5,a5
    5fa6:  8bbd                 andi a5,a5,15
    5fa8:  2781                 sext.w a5,a5
    5faa:  86be                 mv a3,a5
    5fac:  4705                 li a4,1
    5fae:  02e68063           beq a3,a4,5fce <FUN_00005e22+0x1ac>
    5fb2:  873e                 mv a4,a5
    5fb4:  c711                 beqz a4,5fc0 <FUN_00005e22+0x19e>
    5fb6:  873e                 mv a4,a5
    5fb8:  4789                 li a5,2
    5fba:  02f70163           beq a4,a5,5fdc <FUN_00005e22+0x1ba>
    5fbe:  a03d                 j 5fec <FUN_00005e22+0x1ca>
    5fc0:  f9843783           ld a5,-104(s0)
    5fc4:  00020737           lui a4,0x20
    5fc8:  2741                 addiw a4,a4,16
    5fca:  c7d8                 sw a4,12(a5)
    5fcc:  a03d                 j 5ffa <FUN_00005e22+0x1d8>
    5fce:  f9843783           ld a5,-104(s0)
    5fd2:  00020737           lui a4,0x20
    5fd6:  2769                 addiw a4,a4,26
    5fd8:  c7d8                 sw a4,12(a5)
    5fda:  a005                 j 5ffa <FUN_00005e22+0x1d8>
    5fdc:  f9843783           ld a5,-104(s0)
    5fe0:  00020737           lui a4,0x20
    5fe4:  0207071b           addiw a4,a4,32
    5fe8:  c7d8                 sw a4,12(a5)
    5fea:  a801                 j 5ffa <FUN_00005e22+0x1d8>
    5fec:  f9843783           ld a5,-104(s0)
    5ff0:  00020737           lui a4,0x20
    5ff4:  2741                 addiw a4,a4,16
    5ff6:  c7d8                 sw a4,12(a5)
    5ff8:  0001                 nop
    5ffa:  f9843783           ld a5,-104(s0)
    5ffe:  5b9c                 lw a5,48(a5)
    6000:  873e                 mv a4,a5
    6002:  000407b7           lui a5,0x40
    6006:  8ff9                 and a5,a5,a4
    6008:  2781                 sext.w a5,a5
    600a:  cb99                 beqz a5,6020 <FUN_00005e22+0x1fe>
    600c:  f9843783           ld a5,-104(s0)
    6010:  53dc                 lw a5,36(a5)
    6012:  1007e793           ori a5,a5,256
    6016:  0007871b           sext.w a4,a5
    601a:  f9843783           ld a5,-104(s0)
    601e:  d3d8                 sw a4,36(a5)
    6020:  4781                 li a5,0
    6022:  853e                 mv a0,a5
    6024:  70a6                 ld ra,104(sp)
    6026:  7406                 ld s0,96(sp)
    6028:  6165                 addi sp,sp,112
    602a:  8082                 ret

000000000000602c <FUN_0000602c>:
    602c:  1101                 addi sp,sp,-32
    602e:  ec06                 sd ra,24(sp)
    6030:  e822                 sd s0,16(sp)
    6032:  1000                 addi s0,sp,32
    6034:  fea43423           sd a0,-24(s0)
    6038:  87ae                 mv a5,a1
    603a:  fef42223           sw a5,-28(s0)
    603e:  fe843783           ld a5,-24(s0)
    6042:  4bd8                 lw a4,20(a5)
    6044:  fe442783           lw a5,-28(s0)
    6048:  2781                 sext.w a5,a5
    604a:  00f77763           bgeu a4,a5,6058 <FUN_0000602c+0x2c>
    604e:  fe843783           ld a5,-24(s0)
    6052:  4bdc                 lw a5,20(a5)
    6054:  fef42223           sw a5,-28(s0)
    6058:  fe843783           ld a5,-24(s0)
    605c:  4b98                 lw a4,16(a5)
    605e:  fe442783           lw a5,-28(s0)
    6062:  2781                 sext.w a5,a5
    6064:  00e7f763           bgeu a5,a4,6072 <FUN_0000602c+0x46>
    6068:  fe843783           ld a5,-24(s0)
    606c:  4b9c                 lw a5,16(a5)
    606e:  fef42223           sw a5,-28(s0)
    6072:  fe843783           ld a5,-24(s0)
    6076:  fe442703           lw a4,-28(s0)
    607a:  d398                 sw a4,32(a5)
    607c:  fe843503           ld a0,-24(s0)
    6080:  8a5fe0ef           jal ra,4924 <FUN_00004924>
    6084:  0001                 nop
    6086:  60e2                 ld ra,24(sp)
    6088:  6442                 ld s0,16(sp)
    608a:  6105                 addi sp,sp,32
    608c:  8082                 ret

000000000000608e <FUN_0000608e>:
    608e:  1101                 addi sp,sp,-32
    6090:  ec06                 sd ra,24(sp)
    6092:  e822                 sd s0,16(sp)
    6094:  1000                 addi s0,sp,32
    6096:  fea43423           sd a0,-24(s0)
    609a:  87ae                 mv a5,a1
    609c:  fef42223           sw a5,-28(s0)
    60a0:  fe843783           ld a5,-24(s0)
    60a4:  fe442703           lw a4,-28(s0)
    60a8:  cfd8                 sw a4,28(a5)
    60aa:  fe843503           ld a0,-24(s0)
    60ae:  877fe0ef           jal ra,4924 <FUN_00004924>
    60b2:  0001                 nop
    60b4:  60e2                 ld ra,24(sp)
    60b6:  6442                 ld s0,16(sp)
    60b8:  6105                 addi sp,sp,32
    60ba:  8082                 ret

00000000000060bc <FUN_000060bc>:
    60bc:  db010113           addi sp,sp,-592
    60c0:  24113423           sd ra,584(sp)
    60c4:  24813023           sd s0,576(sp)
    60c8:  0c80                 addi s0,sp,592
    60ca:  daa43c23           sd a0,-584(s0)
    60ce:  3e800793           li a5,1000
    60d2:  fef42423           sw a5,-24(s0)
    60d6:  4789                 li a5,2
    60d8:  fcf42023           sw a5,-64(s0)
    60dc:  479d                 li a5,7
    60de:  fcf42223           sw a5,-60(s0)
    60e2:  fc042423           sw zero,-56(s0)
    60e6:  fc042e23           sw zero,-36(s0)
    60ea:  fc040793           addi a5,s0,-64
    60ee:  4601                 li a2,0
    60f0:  85be                 mv a1,a5
    60f2:  db843503           ld a0,-584(s0)
    60f6:  f6ffe0ef           jal ra,5064 <FUN_00005064>
    60fa:  87aa                 mv a5,a0
    60fc:  fef42623           sw a5,-20(s0)
    6100:  fec42783           lw a5,-20(s0)
    6104:  2781                 sext.w a5,a5
    6106:  c781                 beqz a5,610e <FUN_000060bc+0x52>
    6108:  fec42783           lw a5,-20(s0)
    610c:  a9c9                 j 65de <FUN_000060bc+0x522>
    610e:  478d                 li a5,3
    6110:  fcf42023           sw a5,-64(s0)
    6114:  db843783           ld a5,-584(s0)
    6118:  5f9c                 lw a5,56(a5)
    611a:  0107979b           slliw a5,a5,0x10
    611e:  2781                 sext.w a5,a5
    6120:  fcf42423           sw a5,-56(s0)
    6124:  47d5                 li a5,21
    6126:  fcf42223           sw a5,-60(s0)
    612a:  fc042e23           sw zero,-36(s0)
    612e:  fc040793           addi a5,s0,-64
    6132:  4601                 li a2,0
    6134:  85be                 mv a1,a5
    6136:  db843503           ld a0,-584(s0)
    613a:  f2bfe0ef           jal ra,5064 <FUN_00005064>
    613e:  87aa                 mv a5,a0
    6140:  fef42623           sw a5,-20(s0)
    6144:  fec42783           lw a5,-20(s0)
    6148:  2781                 sext.w a5,a5
    614a:  c781                 beqz a5,6152 <FUN_000060bc+0x96>
    614c:  fec42783           lw a5,-20(s0)
    6150:  a179                 j 65de <FUN_000060bc+0x522>
    6152:  db843783           ld a5,-584(s0)
    6156:  47dc                 lw a5,12(a5)
    6158:  873e                 mv a4,a5
    615a:  000207b7           lui a5,0x20
    615e:  8ff9                 and a5,a5,a4
    6160:  2781                 sext.w a5,a5
    6162:  cb91                 beqz a5,6176 <FUN_000060bc+0xba>
    6164:  fcc42783           lw a5,-52(s0)
    6168:  0107d79b           srliw a5,a5,0x10
    616c:  0007871b           sext.w a4,a5
    6170:  db843783           ld a5,-584(s0)
    6174:  df98                 sw a4,56(a5)
    6176:  005b97b7           lui a5,0x5b9
    617a:  d8078593           addi a1,a5,-640 # 5b8d80 <gpio_get_boot_device+0x5aa9ea>
    617e:  db843503           ld a0,-584(s0)
    6182:  eabff0ef           jal ra,602c <FUN_0000602c>
    6186:  47a5                 li a5,9
    6188:  fcf42023           sw a5,-64(s0)
    618c:  479d                 li a5,7
    618e:  fcf42223           sw a5,-60(s0)
    6192:  db843783           ld a5,-584(s0)
    6196:  5f9c                 lw a5,56(a5)
    6198:  0107979b           slliw a5,a5,0x10
    619c:  2781                 sext.w a5,a5
    619e:  fcf42423           sw a5,-56(s0)
    61a2:  fc042e23           sw zero,-36(s0)
    61a6:  fc040793           addi a5,s0,-64
    61aa:  4601                 li a2,0
    61ac:  85be                 mv a1,a5
    61ae:  db843503           ld a0,-584(s0)
    61b2:  eb3fe0ef           jal ra,5064 <FUN_00005064>
    61b6:  87aa                 mv a5,a0
    61b8:  fef42623           sw a5,-20(s0)
    61bc:  fec42783           lw a5,-20(s0)
    61c0:  2781                 sext.w a5,a5
    61c2:  c781                 beqz a5,61ca <FUN_000060bc+0x10e>
    61c4:  fec42783           lw a5,-20(s0)
    61c8:  a919                 j 65de <FUN_000060bc+0x522>
    61ca:  fe842783           lw a5,-24(s0)
    61ce:  85be                 mv a1,a5
    61d0:  db843503           ld a0,-584(s0)
    61d4:  ebaff0ef           jal ra,588e <FUN_0000588e>
    61d8:  db843783           ld a5,-584(s0)
    61dc:  47dc                 lw a5,12(a5)
    61de:  873e                 mv a4,a5
    61e0:  67c1                 lui a5,0x10
    61e2:  08f71363           bne a4,a5,6268 <FUN_000060bc+0x1ac>
    61e6:  fcc42783           lw a5,-52(s0)
    61ea:  01a7d79b           srliw a5,a5,0x1a
    61ee:  2781                 sext.w a5,a5
    61f0:  2781                 sext.w a5,a5
    61f2:  8bbd                 andi a5,a5,15
    61f4:  fef42223           sw a5,-28(s0)
    61f8:  fe442783           lw a5,-28(s0)
    61fc:  0007871b           sext.w a4,a5
    6200:  4791                 li a5,4
    6202:  04e7ed63           bltu a5,a4,625c <FUN_000060bc+0x1a0>
    6206:  fe446783           lwu a5,-28(s0)
    620a:  00279713           slli a4,a5,0x2
    620e:  67b9                 lui a5,0xe
    6210:  4dc78793           addi a5,a5,1244 # e4dc <gpio_get_boot_device+0x146>
    6214:  97ba                 add a5,a5,a4
    6216:  439c                 lw a5,0(a5)
    6218:  8782                 jr a5
    621a:  db843783           ld a5,-584(s0)
    621e:  6741                 lui a4,0x10
    6220:  2749                 addiw a4,a4,18
    6222:  c7d8                 sw a4,12(a5)
    6224:  a099                 j 626a <FUN_000060bc+0x1ae>
    6226:  db843783           ld a5,-584(s0)
    622a:  6741                 lui a4,0x10
    622c:  2751                 addiw a4,a4,20
    622e:  c7d8                 sw a4,12(a5)
    6230:  a82d                 j 626a <FUN_000060bc+0x1ae>
    6232:  db843783           ld a5,-584(s0)
    6236:  6741                 lui a4,0x10
    6238:  0227071b           addiw a4,a4,34
    623c:  c7d8                 sw a4,12(a5)
    623e:  a035                 j 626a <FUN_000060bc+0x1ae>
    6240:  db843783           ld a5,-584(s0)
    6244:  6741                 lui a4,0x10
    6246:  0307071b           addiw a4,a4,48
    624a:  c7d8                 sw a4,12(a5)
    624c:  a839                 j 626a <FUN_000060bc+0x1ae>
    624e:  db843783           ld a5,-584(s0)
    6252:  6741                 lui a4,0x10
    6254:  0407071b           addiw a4,a4,64
    6258:  c7d8                 sw a4,12(a5)
    625a:  a801                 j 626a <FUN_000060bc+0x1ae>
    625c:  db843783           ld a5,-584(s0)
    6260:  6741                 lui a4,0x10
    6262:  2749                 addiw a4,a4,18
    6264:  c7d8                 sw a4,12(a5)
    6266:  a011                 j 626a <FUN_000060bc+0x1ae>
    6268:  0001                 nop
    626a:  fd042783           lw a5,-48(s0)
    626e:  0107d79b           srliw a5,a5,0x10
    6272:  2781                 sext.w a5,a5
    6274:  8bbd                 andi a5,a5,15
    6276:  2781                 sext.w a5,a5
    6278:  4705                 li a4,1
    627a:  00f717bb           sllw a5,a4,a5
    627e:  2781                 sext.w a5,a5
    6280:  0007871b           sext.w a4,a5
    6284:  db843783           ld a5,-584(s0)
    6288:  c7b8                 sw a4,72(a5)
    628a:  db843783           ld a5,-584(s0)
    628e:  47bc                 lw a5,72(a5)
    6290:  873e                 mv a4,a5
    6292:  20000793           li a5,512
    6296:  00e7f763           bgeu a5,a4,62a4 <FUN_000060bc+0x1e8>
    629a:  db843783           ld a5,-584(s0)
    629e:  20000713           li a4,512
    62a2:  c7b8                 sw a4,72(a5)
    62a4:  479d                 li a5,7
    62a6:  fcf42023           sw a5,-64(s0)
    62aa:  47f5                 li a5,29
    62ac:  fcf42223           sw a5,-60(s0)
    62b0:  db843783           ld a5,-584(s0)
    62b4:  5f9c                 lw a5,56(a5)
    62b6:  0107979b           slliw a5,a5,0x10
    62ba:  2781                 sext.w a5,a5
    62bc:  fcf42423           sw a5,-56(s0)
    62c0:  fc042e23           sw zero,-36(s0)
    62c4:  fc040793           addi a5,s0,-64
    62c8:  4601                 li a2,0
    62ca:  85be                 mv a1,a5
    62cc:  db843503           ld a0,-584(s0)
    62d0:  d95fe0ef           jal ra,5064 <FUN_00005064>
    62d4:  87aa                 mv a5,a0
    62d6:  fef42623           sw a5,-20(s0)
    62da:  fec42783           lw a5,-20(s0)
    62de:  2781                 sext.w a5,a5
    62e0:  c781                 beqz a5,62e8 <FUN_000060bc+0x22c>
    62e2:  fec42783           lw a5,-20(s0)
    62e6:  ace5                 j 65de <FUN_000060bc+0x522>
    62e8:  db843783           ld a5,-584(s0)
    62ec:  0ff00713           li a4,255
    62f0:  dfd8                 sw a4,60(a5)
    62f2:  db843783           ld a5,-584(s0)
    62f6:  0ff00713           li a4,255
    62fa:  c3b8                 sw a4,64(a5)
    62fc:  db843783           ld a5,-584(s0)
    6300:  47dc                 lw a5,12(a5)
    6302:  873e                 mv a4,a5
    6304:  000207b7           lui a5,0x20
    6308:  8ff9                 and a5,a5,a4
    630a:  2781                 sext.w a5,a5
    630c:  ebf1                 bnez a5,63e0 <FUN_000060bc+0x324>
    630e:  db843783           ld a5,-584(s0)
    6312:  47dc                 lw a5,12(a5)
    6314:  873e                 mv a4,a5
    6316:  67c1                 lui a5,0x10
    6318:  03f78793           addi a5,a5,63 # 1003f <gpio_get_boot_device+0x1ca9>
    631c:  0ce7f263           bgeu a5,a4,63e0 <FUN_000060bc+0x324>
    6320:  dc040793           addi a5,s0,-576
    6324:  85be                 mv a1,a5
    6326:  db843503           ld a0,-584(s0)
    632a:  99bff0ef           jal ra,5cc4 <FUN_00005cc4>
    632e:  87aa                 mv a5,a0
    6330:  fef42623           sw a5,-20(s0)
    6334:  e8044783           lbu a5,-384(s0)
    6338:  2781                 sext.w a5,a5
    633a:  86be                 mv a3,a5
    633c:  4719                 li a4,6
    633e:  06d76463           bltu a4,a3,63a6 <FUN_000060bc+0x2ea>
    6342:  00279713           slli a4,a5,0x2
    6346:  67b9                 lui a5,0xe
    6348:  4f078793           addi a5,a5,1264 # e4f0 <gpio_get_boot_device+0x15a>
    634c:  97ba                 add a5,a5,a4
    634e:  439c                 lw a5,0(a5)
    6350:  8782                 jr a5
    6352:  db843783           ld a5,-584(s0)
    6356:  6741                 lui a4,0x10
    6358:  0407071b           addiw a4,a4,64
    635c:  c7d8                 sw a4,12(a5)
    635e:  a0a1                 j 63a6 <FUN_000060bc+0x2ea>
    6360:  db843783           ld a5,-584(s0)
    6364:  6741                 lui a4,0x10
    6366:  0417071b           addiw a4,a4,65
    636a:  c7d8                 sw a4,12(a5)
    636c:  a82d                 j 63a6 <FUN_000060bc+0x2ea>
    636e:  db843783           ld a5,-584(s0)
    6372:  6741                 lui a4,0x10
    6374:  0427071b           addiw a4,a4,66
    6378:  c7d8                 sw a4,12(a5)
    637a:  a035                 j 63a6 <FUN_000060bc+0x2ea>
    637c:  db843783           ld a5,-584(s0)
    6380:  6741                 lui a4,0x10
    6382:  0437071b           addiw a4,a4,67
    6386:  c7d8                 sw a4,12(a5)
    6388:  a839                 j 63a6 <FUN_000060bc+0x2ea>
    638a:  db843783           ld a5,-584(s0)
    638e:  6741                 lui a4,0x10
    6390:  0447071b           addiw a4,a4,68
    6394:  c7d8                 sw a4,12(a5)
    6396:  a801                 j 63a6 <FUN_000060bc+0x2ea>
    6398:  db843783           ld a5,-584(s0)
    639c:  6741                 lui a4,0x10
    639e:  0457071b           addiw a4,a4,69
    63a2:  c7d8                 sw a4,12(a5)
    63a4:  0001                 nop
    63a6:  e6044783           lbu a5,-416(s0)
    63aa:  2781                 sext.w a5,a5
    63ac:  8b85                 andi a5,a5,1
    63ae:  2781                 sext.w a5,a5
    63b0:  cb81                 beqz a5,63c0 <FUN_000060bc+0x304>
    63b2:  e7344783           lbu a5,-397(s0)
    63b6:  0007871b           sext.w a4,a5
    63ba:  db843783           ld a5,-584(s0)
    63be:  dfd8                 sw a4,60(a5)
    63c0:  db843783           ld a5,-584(s0)
    63c4:  47dc                 lw a5,12(a5)
    63c6:  873e                 mv a4,a5
    63c8:  67c1                 lui a5,0x10
    63ca:  04278793           addi a5,a5,66 # 10042 <gpio_get_boot_device+0x1cac>
    63ce:  00e7f963           bgeu a5,a4,63e0 <FUN_000060bc+0x324>
    63d2:  e7144783           lbu a5,-399(s0)
    63d6:  0007871b           sext.w a4,a5
    63da:  db843783           ld a5,-584(s0)
    63de:  c3b8                 sw a4,64(a5)
    63e0:  db843783           ld a5,-584(s0)
    63e4:  47dc                 lw a5,12(a5)
    63e6:  873e                 mv a4,a5
    63e8:  000207b7           lui a5,0x20
    63ec:  8ff9                 and a5,a5,a4
    63ee:  2781                 sext.w a5,a5
    63f0:  cb89                 beqz a5,6402 <FUN_000060bc+0x346>
    63f2:  db843503           ld a0,-584(s0)
    63f6:  a2dff0ef           jal ra,5e22 <FUN_00005e22>
    63fa:  87aa                 mv a5,a0
    63fc:  fef42623           sw a5,-20(s0)
    6400:  a819                 j 6416 <FUN_000060bc+0x35a>
    6402:  dc040793           addi a5,s0,-576
    6406:  85be                 mv a1,a5
    6408:  db843503           ld a0,-584(s0)
    640c:  9b9ff0ef           jal ra,5dc4 <FUN_00005dc4>
    6410:  87aa                 mv a5,a0
    6412:  fef42623           sw a5,-20(s0)
    6416:  fec42783           lw a5,-20(s0)
    641a:  2781                 sext.w a5,a5
    641c:  c781                 beqz a5,6424 <FUN_000060bc+0x368>
    641e:  fec42783           lw a5,-20(s0)
    6422:  aa75                 j 65de <FUN_000060bc+0x522>
    6424:  db843783           ld a5,-584(s0)
    6428:  53d8                 lw a4,36(a5)
    642a:  db843783           ld a5,-584(s0)
    642e:  579c                 lw a5,40(a5)
    6430:  8ff9                 and a5,a5,a4
    6432:  0007871b           sext.w a4,a5
    6436:  db843783           ld a5,-584(s0)
    643a:  d3d8                 sw a4,36(a5)
    643c:  db843783           ld a5,-584(s0)
    6440:  47dc                 lw a5,12(a5)
    6442:  873e                 mv a4,a5
    6444:  000207b7           lui a5,0x20
    6448:  8ff9                 and a5,a5,a4
    644a:  2781                 sext.w a5,a5
    644c:  c7e9                 beqz a5,6516 <FUN_000060bc+0x45a>
    644e:  db843783           ld a5,-584(s0)
    6452:  53dc                 lw a5,36(a5)
    6454:  1007f793           andi a5,a5,256
    6458:  2781                 sext.w a5,a5
    645a:  c7d1                 beqz a5,64e6 <FUN_000060bc+0x42a>
    645c:  03700793           li a5,55
    6460:  fcf42023           sw a5,-64(s0)
    6464:  47d5                 li a5,21
    6466:  fcf42223           sw a5,-60(s0)
    646a:  db843783           ld a5,-584(s0)
    646e:  5f9c                 lw a5,56(a5)
    6470:  0107979b           slliw a5,a5,0x10
    6474:  2781                 sext.w a5,a5
    6476:  fcf42423           sw a5,-56(s0)
    647a:  fc042e23           sw zero,-36(s0)
    647e:  fc040793           addi a5,s0,-64
    6482:  4601                 li a2,0
    6484:  85be                 mv a1,a5
    6486:  db843503           ld a0,-584(s0)
    648a:  bdbfe0ef           jal ra,5064 <FUN_00005064>
    648e:  87aa                 mv a5,a0
    6490:  fef42623           sw a5,-20(s0)
    6494:  fec42783           lw a5,-20(s0)
    6498:  2781                 sext.w a5,a5
    649a:  c781                 beqz a5,64a2 <FUN_000060bc+0x3e6>
    649c:  fec42783           lw a5,-20(s0)
    64a0:  aa3d                 j 65de <FUN_000060bc+0x522>
    64a2:  4799                 li a5,6
    64a4:  fcf42023           sw a5,-64(s0)
    64a8:  47d5                 li a5,21
    64aa:  fcf42223           sw a5,-60(s0)
    64ae:  4789                 li a5,2
    64b0:  fcf42423           sw a5,-56(s0)
    64b4:  fc042e23           sw zero,-36(s0)
    64b8:  fc040793           addi a5,s0,-64
    64bc:  4601                 li a2,0
    64be:  85be                 mv a1,a5
    64c0:  db843503           ld a0,-584(s0)
    64c4:  ba1fe0ef           jal ra,5064 <FUN_00005064>
    64c8:  87aa                 mv a5,a0
    64ca:  fef42623           sw a5,-20(s0)
    64ce:  fec42783           lw a5,-20(s0)
    64d2:  2781                 sext.w a5,a5
    64d4:  c781                 beqz a5,64dc <FUN_000060bc+0x420>
    64d6:  fec42783           lw a5,-20(s0)
    64da:  a211                 j 65de <FUN_000060bc+0x522>
    64dc:  4591                 li a1,4
    64de:  db843503           ld a0,-584(s0)
    64e2:  badff0ef           jal ra,608e <FUN_0000608e>
    64e6:  db843783           ld a5,-584(s0)
    64ea:  53dc                 lw a5,36(a5)
    64ec:  8b85                 andi a5,a5,1
    64ee:  2781                 sext.w a5,a5
    64f0:  cb91                 beqz a5,6504 <FUN_000060bc+0x448>
    64f2:  02faf7b7           lui a5,0x2faf
    64f6:  08078593           addi a1,a5,128 # 2faf080 <gpio_get_boot_device+0x2fa0cea
    64fa:  db843503           ld a0,-584(s0)
    64fe:  b2fff0ef           jal ra,602c <FUN_0000602c>
    6502:  a8e9                 j 65dc <FUN_000060bc+0x520>
    6504:  017d87b7           lui a5,0x17d8
    6508:  84078593           addi a1,a5,-1984 # 17d7840 <gpio_get_boot_device+0x17c94
    650c:  db843503           ld a0,-584(s0)
    6510:  b1dff0ef           jal ra,602c <FUN_0000602c>
    6514:  a0e1                 j 65dc <FUN_000060bc+0x520>
    6516:  db843783           ld a5,-584(s0)
    651a:  53dc                 lw a5,36(a5)
    651c:  1007f793           andi a5,a5,256
    6520:  2781                 sext.w a5,a5
    6522:  cb8d                 beqz a5,6554 <FUN_000060bc+0x498>
    6524:  4685                 li a3,1
    6526:  0b700613           li a2,183
    652a:  4585                 li a1,1
    652c:  db843503           ld a0,-584(s0)
    6530:  ffcff0ef           jal ra,5d2c <FUN_00005d2c>
    6534:  87aa                 mv a5,a0
    6536:  fef42623           sw a5,-20(s0)
    653a:  fec42783           lw a5,-20(s0)
    653e:  2781                 sext.w a5,a5
    6540:  c781                 beqz a5,6548 <FUN_000060bc+0x48c>
    6542:  fec42783           lw a5,-20(s0)
    6546:  a861                 j 65de <FUN_000060bc+0x522>
    6548:  4591                 li a1,4
    654a:  db843503           ld a0,-584(s0)
    654e:  b41ff0ef           jal ra,608e <FUN_0000608e>
    6552:  a83d                 j 6590 <FUN_000060bc+0x4d4>
    6554:  db843783           ld a5,-584(s0)
    6558:  53dc                 lw a5,36(a5)
    655a:  2007f793           andi a5,a5,512
    655e:  2781                 sext.w a5,a5
    6560:  cb85                 beqz a5,6590 <FUN_000060bc+0x4d4>
    6562:  4689                 li a3,2
    6564:  0b700613           li a2,183
    6568:  4585                 li a1,1
    656a:  db843503           ld a0,-584(s0)
    656e:  fbeff0ef           jal ra,5d2c <FUN_00005d2c>
    6572:  87aa                 mv a5,a0
    6574:  fef42623           sw a5,-20(s0)
    6578:  fec42783           lw a5,-20(s0)
    657c:  2781                 sext.w a5,a5
    657e:  c781                 beqz a5,6586 <FUN_000060bc+0x4ca>
    6580:  fec42783           lw a5,-20(s0)
    6584:  a8a9                 j 65de <FUN_000060bc+0x522>
    6586:  45a1                 li a1,8
    6588:  db843503           ld a0,-584(s0)
    658c:  b03ff0ef           jal ra,608e <FUN_0000608e>
    6590:  db843783           ld a5,-584(s0)
    6594:  53dc                 lw a5,36(a5)
    6596:  8b85                 andi a5,a5,1
    6598:  2781                 sext.w a5,a5
    659a:  cb8d                 beqz a5,65cc <FUN_000060bc+0x510>
    659c:  db843783           ld a5,-584(s0)
    65a0:  53dc                 lw a5,36(a5)
    65a2:  8bc1                 andi a5,a5,16
    65a4:  2781                 sext.w a5,a5
    65a6:  cb91                 beqz a5,65ba <FUN_000060bc+0x4fe>
    65a8:  031977b7           lui a5,0x3197
    65ac:  50078593           addi a1,a5,1280 # 3197500 <gpio_get_boot_device+0x318916
    65b0:  db843503           ld a0,-584(s0)
    65b4:  a79ff0ef           jal ra,602c <FUN_0000602c>
    65b8:  a015                 j 65dc <FUN_000060bc+0x520>
    65ba:  018cc7b7           lui a5,0x18cc
    65be:  a8078593           addi a1,a5,-1408 # 18cba80 <gpio_get_boot_device+0x18bd6
    65c2:  db843503           ld a0,-584(s0)
    65c6:  a67ff0ef           jal ra,602c <FUN_0000602c>
    65ca:  a809                 j 65dc <FUN_000060bc+0x520>
    65cc:  013137b7           lui a5,0x1313
    65d0:  d0078593           addi a1,a5,-768 # 1312d00 <gpio_get_boot_device+0x130496
    65d4:  db843503           ld a0,-584(s0)
    65d8:  a55ff0ef           jal ra,602c <FUN_0000602c>
    65dc:  4781                 li a5,0
    65de:  853e                 mv a0,a5
    65e0:  24813083           ld ra,584(sp)
    65e4:  24013403           ld s0,576(sp)
    65e8:  25010113           addi sp,sp,592
    65ec:  8082                 ret

00000000000065ee <FUN_000065ee>:
    65ee:  715d                 addi sp,sp,-80
    65f0:  e486                 sd ra,72(sp)
    65f2:  e0a2                 sd s0,64(sp)
    65f4:  0880                 addi s0,sp,80
    65f6:  faa43c23           sd a0,-72(s0)
    65fa:  47a1                 li a5,8
    65fc:  fcf42423           sw a5,-56(s0)
    6600:  fb843783           ld a5,-72(s0)
    6604:  479c                 lw a5,8(a5)
    6606:  873e                 mv a4,a5
    6608:  00ff87b7           lui a5,0xff8
    660c:  8ff9                 and a5,a5,a4
    660e:  2781                 sext.w a5,a5
    6610:  c781                 beqz a5,6618 <FUN_000065ee+0x2a>
    6612:  1aa00793           li a5,426
    6616:  a019                 j 661c <FUN_000065ee+0x2e>
    6618:  0aa00793           li a5,170
    661c:  fcf42823           sw a5,-48(s0)
    6620:  47d5                 li a5,21
    6622:  fcf42623           sw a5,-52(s0)
    6626:  fe042223           sw zero,-28(s0)
    662a:  fc840793           addi a5,s0,-56
    662e:  4601                 li a2,0
    6630:  85be                 mv a1,a5
    6632:  fb843503           ld a0,-72(s0)
    6636:  a2ffe0ef           jal ra,5064 <FUN_00005064>
    663a:  87aa                 mv a5,a0
    663c:  fef42623           sw a5,-20(s0)
    6640:  fec42783           lw a5,-20(s0)
    6644:  2781                 sext.w a5,a5
    6646:  c781                 beqz a5,664e <FUN_000065ee+0x60>
    6648:  fec42783           lw a5,-20(s0)
    664c:  a02d                 j 6676 <FUN_000065ee+0x88>
    664e:  fd442783           lw a5,-44(s0)
    6652:  0ff7f793           andi a5,a5,255
    6656:  2781                 sext.w a5,a5
    6658:  873e                 mv a4,a5
    665a:  0aa00793           li a5,170
    665e:  00f70463           beq a4,a5,6666 <FUN_000065ee+0x78>
    6662:  57bd                 li a5,-17
    6664:  a809                 j 6676 <FUN_000065ee+0x88>
    6666:  fb843783           ld a5,-72(s0)
    666a:  00020737           lui a4,0x20
    666e:  0207071b           addiw a4,a4,32
    6672:  c7d8                 sw a4,12(a5)
    6674:  4781                 li a5,0
    6676:  853e                 mv a0,a5
    6678:  60a6                 ld ra,72(sp)
    667a:  6406                 ld s0,64(sp)
    667c:  6161                 addi sp,sp,80
    667e:  8082                 ret

0000000000006680 <FUN_00006680>:
    6680:  7159                 addi sp,sp,-112
    6682:  f486                 sd ra,104(sp)
    6684:  f0a2                 sd s0,96(sp)
    6686:  1880                 addi s0,sp,112
    6688:  faa43423           sd a0,-88(s0)
    668c:  fab43023           sd a1,-96(s0)
    6690:  87b2                 mv a5,a2
    6692:  8736                 mv a4,a3
    6694:  f8f42e23           sw a5,-100(s0)
    6698:  87ba                 mv a5,a4
    669a:  f8f42c23           sw a5,-104(s0)
    669e:  f9842783           lw a5,-104(s0)
    66a2:  2781                 sext.w a5,a5
    66a4:  cb99                 beqz a5,66ba <FUN_00006680+0x3a>
    66a6:  47c9                 li a5,18
    66a8:  fcf42423           sw a5,-56(s0)
    66ac:  fe042423           sw zero,-24(s0)
    66b0:  fa843783           ld a5,-88(s0)
    66b4:  4f9c                 lw a5,24(a5)
    66b6:  cb89                 beqz a5,66c8 <FUN_00006680+0x48>
    66b8:  a019                 j 66be <FUN_00006680+0x3e>
    66ba:  4781                 li a5,0
    66bc:  a84d                 j 676e <FUN_00006680+0xee>
    66be:  f9c42783           lw a5,-100(s0)
    66c2:  fcf42823           sw a5,-48(s0)
    66c6:  a819                 j 66dc <FUN_00006680+0x5c>
    66c8:  fa843783           ld a5,-88(s0)
    66cc:  47bc                 lw a5,72(a5)
    66ce:  f9c42703           lw a4,-100(s0)
    66d2:  02f707bb           mulw a5,a4,a5
    66d6:  2781                 sext.w a5,a5
    66d8:  fcf42823           sw a5,-48(s0)
    66dc:  47d5                 li a5,21
    66de:  fcf42623           sw a5,-52(s0)
    66e2:  fe042223           sw zero,-28(s0)
    66e6:  fa043783           ld a5,-96(s0)
    66ea:  faf43823           sd a5,-80(s0)
    66ee:  f9842783           lw a5,-104(s0)
    66f2:  faf42e23           sw a5,-68(s0)
    66f6:  fa843783           ld a5,-88(s0)
    66fa:  47bc                 lw a5,72(a5)
    66fc:  fcf42023           sw a5,-64(s0)
    6700:  4785                 li a5,1
    6702:  faf42c23           sw a5,-72(s0)
    6706:  fb040713           addi a4,s0,-80
    670a:  fc840793           addi a5,s0,-56
    670e:  863a                 mv a2,a4
    6710:  85be                 mv a1,a5
    6712:  fa843503           ld a0,-88(s0)
    6716:  94ffe0ef           jal ra,5064 <FUN_00005064>
    671a:  87aa                 mv a5,a0
    671c:  fef42623           sw a5,-20(s0)
    6720:  fc842783           lw a5,-56(s0)
    6724:  873e                 mv a4,a5
    6726:  47c9                 li a5,18
    6728:  02f71b63           bne a4,a5,675e <FUN_00006680+0xde>
    672c:  fe842783           lw a5,-24(s0)
    6730:  e79d                 bnez a5,675e <FUN_00006680+0xde>
    6732:  47b1                 li a5,12
    6734:  fcf42423           sw a5,-56(s0)
    6738:  47f5                 li a5,29
    673a:  fcf42623           sw a5,-52(s0)
    673e:  fc042823           sw zero,-48(s0)
    6742:  fe042223           sw zero,-28(s0)
    6746:  fc840793           addi a5,s0,-56
    674a:  4601                 li a2,0
    674c:  85be                 mv a1,a5
    674e:  fa843503           ld a0,-88(s0)
    6752:  913fe0ef           jal ra,5064 <FUN_00005064>
    6756:  87aa                 mv a5,a0
    6758:  c399                 beqz a5,675e <FUN_00006680+0xde>
    675a:  4781                 li a5,0
    675c:  a809                 j 676e <FUN_00006680+0xee>
    675e:  fec42783           lw a5,-20(s0)
    6762:  2781                 sext.w a5,a5
    6764:  c399                 beqz a5,676a <FUN_00006680+0xea>
    6766:  4781                 li a5,0
    6768:  a019                 j 676e <FUN_00006680+0xee>
    676a:  f9842783           lw a5,-104(s0)
    676e:  853e                 mv a0,a5
    6770:  70a6                 ld ra,104(sp)
    6772:  7406                 ld s0,96(sp)
    6774:  6165                 addi sp,sp,112
    6776:  8082                 ret

0000000000006778 <sd_read_sectors>:
    6778:  7139                 addi sp,sp,-64
    677a:  fc06                 sd ra,56(sp)
    677c:  f822                 sd s0,48(sp)
    677e:  0080                 addi s0,sp,64
    6780:  fca43c23           sd a0,-40(s0)
    6784:  87ae                 mv a5,a1
    6786:  8732                 mv a4,a2
    6788:  fcd43423           sd a3,-56(s0)
    678c:  fcf42a23           sw a5,-44(s0)
    6790:  87ba                 mv a5,a4
    6792:  fcf42823           sw a5,-48(s0)
    6796:  fd042783           lw a5,-48(s0)
    679a:  fef42623           sw a5,-20(s0)
    679e:  fd042783           lw a5,-48(s0)
    67a2:  2781                 sext.w a5,a5
    67a4:  e399                 bnez a5,67aa <sd_read_sectors+0x32>
    67a6:  4781                 li a5,0
    67a8:  a851                 j 683c <sd_read_sectors+0xc4>
    67aa:  fd843783           ld a5,-40(s0)
    67ae:  47fc                 lw a5,76(a5)
    67b0:  863e                 mv a2,a5
    67b2:  fec42783           lw a5,-20(s0)
    67b6:  0007869b           sext.w a3,a5
    67ba:  0006071b           sext.w a4,a2
    67be:  00d77363           bgeu a4,a3,67c4 <sd_read_sectors+0x4c>
    67c2:  87b2                 mv a5,a2
    67c4:  fef42423           sw a5,-24(s0)
    67c8:  fe842703           lw a4,-24(s0)
    67cc:  fd442783           lw a5,-44(s0)
    67d0:  86ba                 mv a3,a4
    67d2:  863e                 mv a2,a5
    67d4:  fc843583           ld a1,-56(s0)
    67d8:  fd843503           ld a0,-40(s0)
    67dc:  ea5ff0ef           jal ra,6680 <FUN_00006680>
    67e0:  87aa                 mv a5,a0
    67e2:  0007871b           sext.w a4,a5
    67e6:  fe842783           lw a5,-24(s0)
    67ea:  2781                 sext.w a5,a5
    67ec:  00e78463           beq a5,a4,67f4 <sd_read_sectors+0x7c>
    67f0:  4781                 li a5,0
    67f2:  a0a9                 j 683c <sd_read_sectors+0xc4>
    67f4:  fec42703           lw a4,-20(s0)
    67f8:  fe842783           lw a5,-24(s0)
    67fc:  40f707bb           subw a5,a4,a5
    6800:  fef42623           sw a5,-20(s0)
    6804:  fd442703           lw a4,-44(s0)
    6808:  fe842783           lw a5,-24(s0)
    680c:  9fb9                 addw a5,a5,a4
    680e:  fcf42a23           sw a5,-44(s0)
    6812:  fd843783           ld a5,-40(s0)
    6816:  47bc                 lw a5,72(a5)
    6818:  fe842703           lw a4,-24(s0)
    681c:  02f707bb           mulw a5,a4,a5
    6820:  2781                 sext.w a5,a5
    6822:  1782                 slli a5,a5,0x20
    6824:  9381                 srli a5,a5,0x20
    6826:  fc843703           ld a4,-56(s0)
    682a:  97ba                 add a5,a5,a4
    682c:  fcf43423           sd a5,-56(s0)
    6830:  fec42783           lw a5,-20(s0)
    6834:  2781                 sext.w a5,a5
    6836:  fbb5                 bnez a5,67aa <sd_read_sectors+0x32>
    6838:  fd042783           lw a5,-48(s0)
    683c:  853e                 mv a0,a5
    683e:  70e2                 ld ra,56(sp)
    6840:  7442                 ld s0,48(sp)
    6842:  6121                 addi sp,sp,64
    6844:  8082                 ret

0000000000006846 <FUN_00006846>:
    6846:  7119                 addi sp,sp,-128
    6848:  fc86                 sd ra,120(sp)
    684a:  f8a2                 sd s0,112(sp)
    684c:  0100                 addi s0,sp,128
    684e:  f8a43c23           sd a0,-104(s0)
    6852:  87ae                 mv a5,a1
    6854:  8732                 mv a4,a2
    6856:  f8d43423           sd a3,-120(s0)
    685a:  f8f42a23           sw a5,-108(s0)
    685e:  87ba                 mv a5,a4
    6860:  f8f42823           sw a5,-112(s0)
    6864:  fe042423           sw zero,-24(s0)
    6868:  4785                 li a5,1
    686a:  fef42623           sw a5,-20(s0)
    686e:  f9843783           ld a5,-104(s0)
    6872:  00b72737           lui a4,0xb72
    6876:  b007071b           addiw a4,a4,-1280
    687a:  d398                 sw a4,32(a5)
    687c:  f9843503           ld a0,-104(s0)
    6880:  85cfe0ef           jal ra,48dc <FUN_000048dc>
    6884:  f9843503           ld a0,-104(s0)
    6888:  89cfe0ef           jal ra,4924 <FUN_00004924>
    688c:  12c00513           li a0,300
    6890:  0f5030ef           jal ra,a184 <udelay>
    6894:  f9843503           ld a0,-104(s0)
    6898:  8ecff0ef           jal ra,5984 <FUN_00005984>
    689c:  fc042023           sw zero,-64(s0)
    68a0:  fc042423           sw zero,-56(s0)
    68a4:  fc042223           sw zero,-60(s0)
    68a8:  4785                 li a5,1
    68aa:  fcf42e23           sw a5,-36(s0)
    68ae:  f8843783           ld a5,-120(s0)
    68b2:  faf43423           sd a5,-88(s0)
    68b6:  f9042783           lw a5,-112(s0)
    68ba:  faf42a23           sw a5,-76(s0)
    68be:  20000793           li a5,512
    68c2:  faf42c23           sw a5,-72(s0)
    68c6:  4785                 li a5,1
    68c8:  faf42823           sw a5,-80(s0)
    68cc:  fa840713           addi a4,s0,-88
    68d0:  fc040793           addi a5,s0,-64
    68d4:  863a                 mv a2,a4
    68d6:  85be                 mv a1,a5
    68d8:  f9843503           ld a0,-104(s0)
    68dc:  f88fe0ef           jal ra,5064 <FUN_00005064>
    68e0:  87aa                 mv a5,a0
    68e2:  fef42423           sw a5,-24(s0)
    68e6:  fe842783           lw a5,-24(s0)
    68ea:  0007871b           sext.w a4,a5
    68ee:  57ed                 li a5,-5
    68f0:  00f70963           beq a4,a5,6902 <FUN_00006846+0xbc>
    68f4:  fe842783           lw a5,-24(s0)
    68f8:  0007871b           sext.w a4,a5
    68fc:  57e9                 li a5,-6
    68fe:  00f71563           bne a4,a5,6908 <FUN_00006846+0xc2>
    6902:  fe842783           lw a5,-24(s0)
    6906:  a83d                 j 6944 <FUN_00006846+0xfe>
    6908:  fe842783           lw a5,-24(s0)
    690c:  2781                 sext.w a5,a5
    690e:  c395                 beqz a5,6932 <FUN_00006846+0xec>
    6910:  fec42783           lw a5,-20(s0)
    6914:  2781                 sext.w a5,a5
    6916:  cf91                 beqz a5,6932 <FUN_00006846+0xec>
    6918:  fe042623           sw zero,-20(s0)
    691c:  f9843783           ld a5,-104(s0)
    6920:  005b9737           lui a4,0x5b9
    6924:  d807071b           addiw a4,a4,-640
    6928:  d398                 sw a4,32(a5)
    692a:  4505                 li a0,1
    692c:  083030ef           jal ra,a1ae <udelay_x800>
    6930:  b7b1                 j 687c <FUN_00006846+0x36>
    6932:  fe842783           lw a5,-24(s0)
    6936:  2781                 sext.w a5,a5
    6938:  c781                 beqz a5,6940 <FUN_00006846+0xfa>
    693a:  fe842783           lw a5,-24(s0)
    693e:  a019                 j 6944 <FUN_00006846+0xfe>
    6940:  f9042783           lw a5,-112(s0)
    6944:  853e                 mv a0,a5
    6946:  70e6                 ld ra,120(sp)
    6948:  7446                 ld s0,112(sp)
    694a:  6109                 addi sp,sp,128
    694c:  8082                 ret

000000000000694e <FUN_0000694e>:
    694e:  7179                 addi sp,sp,-48
    6950:  f406                 sd ra,40(sp)
    6952:  f022                 sd s0,32(sp)
    6954:  1800                 addi s0,sp,48
    6956:  fca43c23           sd a0,-40(s0)
    695a:  fe042623           sw zero,-20(s0)
    695e:  fd843503           ld a0,-40(s0)
    6962:  848fe0ef           jal ra,49aa <FUN_000049aa>
    6966:  87aa                 mv a5,a0
    6968:  fef42623           sw a5,-20(s0)
    696c:  fec42783           lw a5,-20(s0)
    6970:  2781                 sext.w a5,a5
    6972:  c781                 beqz a5,697a <FUN_0000694e+0x2c>
    6974:  fec42783           lw a5,-20(s0)
    6978:  a075                 j 6a24 <FUN_0000694e+0xd6>
    697a:  fd843783           ld a5,-40(s0)
    697e:  4bbc                 lw a5,80(a5)
    6980:  873e                 mv a4,a5
    6982:  4789                 li a5,2
    6984:  00f71663           bne a4,a5,6990 <FUN_0000694e+0x42>
    6988:  fd843503           ld a0,-40(s0)
    698c:  f51fd0ef           jal ra,48dc <FUN_000048dc>
    6990:  fd843783           ld a5,-40(s0)
    6994:  00062737           lui a4,0x62
    6998:  a807071b           addiw a4,a4,-1408
    699c:  d398                 sw a4,32(a5)
    699e:  fd843783           ld a5,-40(s0)
    69a2:  4705                 li a4,1
    69a4:  cfd8                 sw a4,28(a5)
    69a6:  fd843503           ld a0,-40(s0)
    69aa:  f7bfd0ef           jal ra,4924 <FUN_00004924>
    69ae:  fd843783           ld a5,-40(s0)
    69b2:  4bbc                 lw a5,80(a5)
    69b4:  873e                 mv a4,a5
    69b6:  4789                 li a5,2
    69b8:  00f71663           bne a4,a5,69c4 <FUN_0000694e+0x76>
    69bc:  12c00513           li a0,300
    69c0:  7c4030ef           jal ra,a184 <udelay>
    69c4:  fd843503           ld a0,-40(s0)
    69c8:  f73fe0ef           jal ra,593a <FUN_0000593a>
    69cc:  87aa                 mv a5,a0
    69ce:  fef42623           sw a5,-20(s0)
    69d2:  fec42783           lw a5,-20(s0)
    69d6:  2781                 sext.w a5,a5
    69d8:  c781                 beqz a5,69e0 <FUN_0000694e+0x92>
    69da:  fec42783           lw a5,-20(s0)
    69de:  a099                 j 6a24 <FUN_0000694e+0xd6>
    69e0:  fd843783           ld a5,-40(s0)
    69e4:  0407a223           sw zero,68(a5) # ff8044 <gpio_get_boot_device+0xfe9cae>
    69e8:  fd843503           ld a0,-40(s0)
    69ec:  c03ff0ef           jal ra,65ee <FUN_000065ee>
    69f0:  fd843503           ld a0,-40(s0)
    69f4:  82eff0ef           jal ra,5a22 <FUN_00005a22>
    69f8:  87aa                 mv a5,a0
    69fa:  fef42623           sw a5,-20(s0)
    69fe:  fec42783           lw a5,-20(s0)
    6a02:  2781                 sext.w a5,a5
    6a04:  cf91                 beqz a5,6a20 <FUN_0000694e+0xd2>
    6a06:  fd843503           ld a0,-40(s0)
    6a0a:  95eff0ef           jal ra,5b68 <FUN_00005b68>
    6a0e:  87aa                 mv a5,a0
    6a10:  fef42623           sw a5,-20(s0)
    6a14:  fec42783           lw a5,-20(s0)
    6a18:  2781                 sext.w a5,a5
    6a1a:  c399                 beqz a5,6a20 <FUN_0000694e+0xd2>
    6a1c:  57bd                 li a5,-17
    6a1e:  a019                 j 6a24 <FUN_0000694e+0xd6>
    6a20:  fec42783           lw a5,-20(s0)
    6a24:  853e                 mv a0,a5
    6a26:  70a2                 ld ra,40(sp)
    6a28:  7402                 ld s0,32(sp)
    6a2a:  6145                 addi sp,sp,48
    6a2c:  8082                 ret

0000000000006a2e <FUN_00006a2e>:
    6a2e:  7179                 addi sp,sp,-48
    6a30:  f406                 sd ra,40(sp)
    6a32:  f022                 sd s0,32(sp)
    6a34:  1800                 addi s0,sp,48
    6a36:  87aa                 mv a5,a0
    6a38:  fcb43823           sd a1,-48(s0)
    6a3c:  fcf42e23           sw a5,-36(s0)
    6a40:  57fd                 li a5,-1
    6a42:  fef42623           sw a5,-20(s0)
    6a46:  fdc42783           lw a5,-36(s0)
    6a4a:  fd043583           ld a1,-48(s0)
    6a4e:  853e                 mv a0,a5
    6a50:  d71fe0ef           jal ra,57c0 <FUN_000057c0>
    6a54:  87aa                 mv a5,a0
    6a56:  fef42623           sw a5,-20(s0)
    6a5a:  fec42783           lw a5,-20(s0)
    6a5e:  2781                 sext.w a5,a5
    6a60:  c399                 beqz a5,6a66 <FUN_00006a2e+0x38>
    6a62:  57fd                 li a5,-1
    6a64:  a089                 j 6aa6 <FUN_00006a2e+0x78>
    6a66:  fd043783           ld a5,-48(s0)
    6a6a:  12c00713           li a4,300
    6a6e:  c7f8                 sw a4,76(a5)
    6a70:  fd043503           ld a0,-48(s0)
    6a74:  edbff0ef           jal ra,694e <FUN_0000694e>
    6a78:  87aa                 mv a5,a0
    6a7a:  fef42623           sw a5,-20(s0)
    6a7e:  fec42783           lw a5,-20(s0)
    6a82:  2781                 sext.w a5,a5
    6a84:  c399                 beqz a5,6a8a <FUN_00006a2e+0x5c>
    6a86:  57fd                 li a5,-1
    6a88:  a839                 j 6aa6 <FUN_00006a2e+0x78>
    6a8a:  fd043503           ld a0,-48(s0)
    6a8e:  e2eff0ef           jal ra,60bc <FUN_000060bc>
    6a92:  87aa                 mv a5,a0
    6a94:  fef42623           sw a5,-20(s0)
    6a98:  fec42783           lw a5,-20(s0)
    6a9c:  2781                 sext.w a5,a5
    6a9e:  c399                 beqz a5,6aa4 <FUN_00006a2e+0x76>
    6aa0:  57fd                 li a5,-1
    6aa2:  a011                 j 6aa6 <FUN_00006a2e+0x78>
    6aa4:  4781                 li a5,0
    6aa6:  853e                 mv a0,a5
    6aa8:  70a2                 ld ra,40(sp)
    6aaa:  7402                 ld s0,32(sp)
    6aac:  6145                 addi sp,sp,48
    6aae:  8082                 ret

0000000000006ab0 <FUN_00006ab0>:
    6ab0:  7179                 addi sp,sp,-48
    6ab2:  f406                 sd ra,40(sp)
    6ab4:  f022                 sd s0,32(sp)
    6ab6:  1800                 addi s0,sp,48
    6ab8:  87aa                 mv a5,a0
    6aba:  fcb43823           sd a1,-48(s0)
    6abe:  fcf42e23           sw a5,-36(s0)
    6ac2:  57fd                 li a5,-1
    6ac4:  fef42623           sw a5,-20(s0)
    6ac8:  fdc42783           lw a5,-36(s0)
    6acc:  fd043583           ld a1,-48(s0)
    6ad0:  853e                 mv a0,a5
    6ad2:  ceffe0ef           jal ra,57c0 <FUN_000057c0>
    6ad6:  87aa                 mv a5,a0
    6ad8:  fef42623           sw a5,-20(s0)
    6adc:  fec42783           lw a5,-20(s0)
    6ae0:  2781                 sext.w a5,a5
    6ae2:  c399                 beqz a5,6ae8 <FUN_00006ab0+0x38>
    6ae4:  57fd                 li a5,-1
    6ae6:  a8a1                 j 6b3e <FUN_00006ab0+0x8e>
    6ae8:  fd043783           ld a5,-48(s0)
    6aec:  12c00713           li a4,300
    6af0:  c7f8                 sw a4,76(a5)
    6af2:  fd043503           ld a0,-48(s0)
    6af6:  eb5fd0ef           jal ra,49aa <FUN_000049aa>
    6afa:  87aa                 mv a5,a0
    6afc:  fef42623           sw a5,-20(s0)
    6b00:  fec42783           lw a5,-20(s0)
    6b04:  2781                 sext.w a5,a5
    6b06:  c781                 beqz a5,6b0e <FUN_00006ab0+0x5e>
    6b08:  fec42783           lw a5,-20(s0)
    6b0c:  a80d                 j 6b3e <FUN_00006ab0+0x8e>
    6b0e:  fd043503           ld a0,-48(s0)
    6b12:  dcbfd0ef           jal ra,48dc <FUN_000048dc>
    6b16:  fd043783           ld a5,-48(s0)
    6b1a:  00b72737           lui a4,0xb72
    6b1e:  b007071b           addiw a4,a4,-1280
    6b22:  d398                 sw a4,32(a5)
    6b24:  fd043783           ld a5,-48(s0)
    6b28:  4711                 li a4,4
    6b2a:  cfd8                 sw a4,28(a5)
    6b2c:  fd043503           ld a0,-48(s0)
    6b30:  df5fd0ef           jal ra,4924 <FUN_00004924>
    6b34:  12c00513           li a0,300
    6b38:  64c030ef           jal ra,a184 <udelay>
    6b3c:  4781                 li a5,0
    6b3e:  853e                 mv a0,a5
    6b40:  70a2                 ld ra,40(sp)
    6b42:  7402                 ld s0,32(sp)
    6b44:  6145                 addi sp,sp,48
    6b46:  8082                 ret

0000000000006b48 <FUN_00006b48>:
    6b48:  1101                 addi sp,sp,-32
    6b4a:  ec06                 sd ra,24(sp)
    6b4c:  e822                 sd s0,16(sp)
    6b4e:  1000                 addi s0,sp,32
    6b50:  87aa                 mv a5,a0
    6b52:  feb43023           sd a1,-32(s0)
    6b56:  fef42623           sw a5,-20(s0)
    6b5a:  fec42783           lw a5,-20(s0)
    6b5e:  fe043583           ld a1,-32(s0)
    6b62:  853e                 mv a0,a5
    6b64:  cf5fe0ef           jal ra,5858 <FUN_00005858>
    6b68:  4781                 li a5,0
    6b6a:  853e                 mv a0,a5
    6b6c:  60e2                 ld ra,24(sp)
    6b6e:  6442                 ld s0,16(sp)
    6b70:  6105                 addi sp,sp,32
    6b72:  8082                 ret

0000000000006b74 <FUN_00006b74>:
    6b74:  1101                 addi sp,sp,-32
    6b76:  ec06                 sd ra,24(sp)
    6b78:  e822                 sd s0,16(sp)
    6b7a:  1000                 addi s0,sp,32
    6b7c:  f9900793           li a5,-103
    6b80:  fef407a3           sb a5,-17(s0)
    6b84:  fef40793           addi a5,s0,-17
    6b88:  85be                 mv a1,a5
    6b8a:  4505                 li a0,1
    6b8c:  205000ef           jal ra,7590 <FUN_00007590>
    6b90:  87aa                 mv a5,a0
    6b92:  873e                 mv a4,a5
    6b94:  4789                 li a5,2
    6b96:  00f71c63           bne a4,a5,6bae <FUN_00006b74+0x3a>
    6b9a:  4605                 li a2,1
    6b9c:  00eff7b7           lui a5,0xeff
    6ba0:  80078593           addi a1,a5,-2048 # efe800 <gpio_get_boot_device+0xef046a
    6ba4:  450d                 li a0,3
    6ba6:  083010ef           jal ra,8428 <rtc_brom_debug>
    6baa:  4789                 li a5,2
    6bac:  a029                 j 6bb6 <FUN_00006b74+0x42>
    6bae:  4505                 li a0,1
    6bb0:  5fe030ef           jal ra,a1ae <udelay_x800>
    6bb4:  4781                 li a5,0
    6bb6:  853e                 mv a0,a5
    6bb8:  60e2                 ld ra,24(sp)
    6bba:  6442                 ld s0,16(sp)
    6bbc:  6105                 addi sp,sp,32
    6bbe:  8082                 ret

0000000000006bc0 <FUN_00006bc0>:
    6bc0:  1101                 addi sp,sp,-32
    6bc2:  ec06                 sd ra,24(sp)
    6bc4:  e822                 sd s0,16(sp)
    6bc6:  1000                 addi s0,sp,32
    6bc8:  06600793           li a5,102
    6bcc:  fef407a3           sb a5,-17(s0)
    6bd0:  fef40793           addi a5,s0,-17
    6bd4:  85be                 mv a1,a5
    6bd6:  4505                 li a0,1
    6bd8:  1b9000ef           jal ra,7590 <FUN_00007590>
    6bdc:  87aa                 mv a5,a0
    6bde:  873e                 mv a4,a5
    6be0:  4789                 li a5,2
    6be2:  00f71c63           bne a4,a5,6bfa <FUN_00006bc0+0x3a>
    6be6:  4609                 li a2,2
    6be8:  00eff7b7           lui a5,0xeff
    6bec:  80078593           addi a1,a5,-2048 # efe800 <gpio_get_boot_device+0xef046a
    6bf0:  450d                 li a0,3
    6bf2:  037010ef           jal ra,8428 <rtc_brom_debug>
    6bf6:  4789                 li a5,2
    6bf8:  a029                 j 6c02 <FUN_00006bc0+0x42>
    6bfa:  4505                 li a0,1
    6bfc:  5b2030ef           jal ra,a1ae <udelay_x800>
    6c00:  4781                 li a5,0
    6c02:  853e                 mv a0,a5
    6c04:  60e2                 ld ra,24(sp)
    6c06:  6442                 ld s0,16(sp)
    6c08:  6105                 addi sp,sp,32
    6c0a:  8082                 ret

0000000000006c0c <FUN_00006c0c>:
    6c0c:  1101                 addi sp,sp,-32
    6c0e:  ec22                 sd s0,24(sp)
    6c10:  1000                 addi s0,sp,32
    6c12:  020007b7           lui a5,0x2000
    6c16:  06478793           addi a5,a5,100 # 2000064 <gpio_get_boot_device+0x1ff1cce
    6c1a:  439c                 lw a5,0(a5)
    6c1c:  fef42623           sw a5,-20(s0)
    6c20:  fec42703           lw a4,-20(s0)
    6c24:  900007b7           lui a5,0x90000
    6c28:  17fd                 addi a5,a5,-1
    6c2a:  8ff9                 and a5,a5,a4
    6c2c:  fef42623           sw a5,-20(s0)
    6c30:  fec42703           lw a4,-20(s0)
    6c34:  400007b7           lui a5,0x40000
    6c38:  8fd9                 or a5,a5,a4
    6c3a:  fef42623           sw a5,-20(s0)
    6c3e:  020007b7           lui a5,0x2000
    6c42:  06478793           addi a5,a5,100 # 2000064 <gpio_get_boot_device+0x1ff1cce
    6c46:  fec42703           lw a4,-20(s0)
    6c4a:  c398                 sw a4,0(a5)
    6c4c:  020007b7           lui a5,0x2000
    6c50:  06878793           addi a5,a5,104 # 2000068 <gpio_get_boot_device+0x1ff1cd2
    6c54:  439c                 lw a5,0(a5)
    6c56:  fef42623           sw a5,-20(s0)
    6c5a:  fec42783           lw a5,-20(s0)
    6c5e:  9be1                 andi a5,a5,-8
    6c60:  fef42623           sw a5,-20(s0)
    6c64:  fec42783           lw a5,-20(s0)
    6c68:  0047e793           ori a5,a5,4
    6c6c:  fef42623           sw a5,-20(s0)
    6c70:  020007b7           lui a5,0x2000
    6c74:  06878793           addi a5,a5,104 # 2000068 <gpio_get_boot_device+0x1ff1cd2
    6c78:  fec42703           lw a4,-20(s0)
    6c7c:  c398                 sw a4,0(a5)
    6c7e:  020007b7           lui a5,0x2000
    6c82:  08478793           addi a5,a5,132 # 2000084 <gpio_get_boot_device+0x1ff1cee
    6c86:  439c                 lw a5,0(a5)
    6c88:  fef42623           sw a5,-20(s0)
    6c8c:  fec42703           lw a4,-20(s0)
    6c90:  400007b7           lui a5,0x40000
    6c94:  17fd                 addi a5,a5,-1
    6c96:  8ff9                 and a5,a5,a4
    6c98:  fef42623           sw a5,-20(s0)
    6c9c:  fec42703           lw a4,-20(s0)
    6ca0:  400007b7           lui a5,0x40000
    6ca4:  8fd9                 or a5,a5,a4
    6ca6:  fef42623           sw a5,-20(s0)
    6caa:  020007b7           lui a5,0x2000
    6cae:  08478793           addi a5,a5,132 # 2000084 <gpio_get_boot_device+0x1ff1cee
    6cb2:  fec42703           lw a4,-20(s0)
    6cb6:  c398                 sw a4,0(a5)
    6cb8:  020007b7           lui a5,0x2000
    6cbc:  08478793           addi a5,a5,132 # 2000084 <gpio_get_boot_device+0x1ff1cee
    6cc0:  439c                 lw a5,0(a5)
    6cc2:  fef42623           sw a5,-20(s0)
    6cc6:  fec42703           lw a4,-20(s0)
    6cca:  400007b7           lui a5,0x40000
    6cce:  17fd                 addi a5,a5,-1
    6cd0:  8ff9                 and a5,a5,a4
    6cd2:  fef42623           sw a5,-20(s0)
    6cd6:  020007b7           lui a5,0x2000
    6cda:  08478793           addi a5,a5,132 # 2000084 <gpio_get_boot_device+0x1ff1cee
    6cde:  fec42703           lw a4,-20(s0)
    6ce2:  c398                 sw a4,0(a5)
    6ce4:  0001                 nop
    6ce6:  6462                 ld s0,24(sp)
    6ce8:  6105                 addi sp,sp,32
    6cea:  8082                 ret

0000000000006cec <FUN_00006cec>:
    6cec:  1101                 addi sp,sp,-32
    6cee:  ec22                 sd s0,24(sp)
    6cf0:  1000                 addi s0,sp,32
    6cf2:  040257b7           lui a5,0x4025
    6cf6:  08878793           addi a5,a5,136 # 4025088 <gpio_get_boot_device+0x4016cf2
    6cfa:  439c                 lw a5,0(a5)
    6cfc:  fef42623           sw a5,-20(s0)
    6d00:  fec42703           lw a4,-20(s0)
    6d04:  e00007b7           lui a5,0xe0000
    6d08:  17fd                 addi a5,a5,-1
    6d0a:  8ff9                 and a5,a5,a4
    6d0c:  fef42623           sw a5,-20(s0)
    6d10:  fec42703           lw a4,-20(s0)
    6d14:  200007b7           lui a5,0x20000
    6d18:  8fd9                 or a5,a5,a4
    6d1a:  fef42623           sw a5,-20(s0)
    6d1e:  040257b7           lui a5,0x4025
    6d22:  08878793           addi a5,a5,136 # 4025088 <gpio_get_boot_device+0x4016cf2
    6d26:  fec42703           lw a4,-20(s0)
    6d2a:  c398                 sw a4,0(a5)
    6d2c:  0001                 nop
    6d2e:  6462                 ld s0,24(sp)
    6d30:  6105                 addi sp,sp,32
    6d32:  8082                 ret

0000000000006d34 <FUN_00006d34>:
    6d34:  7179                 addi sp,sp,-48
    6d36:  f422                 sd s0,40(sp)
    6d38:  1800                 addi s0,sp,48
    6d3a:  87aa                 mv a5,a0
    6d3c:  fcf42e23           sw a5,-36(s0)
    6d40:  040257b7           lui a5,0x4025
    6d44:  07a1                 addi a5,a5,8
    6d46:  439c                 lw a5,0(a5)
    6d48:  2781                 sext.w a5,a5
    6d4a:  fcf7f793           andi a5,a5,-49
    6d4e:  fef42623           sw a5,-20(s0)
    6d52:  fdc42783           lw a5,-36(s0)
    6d56:  0047979b           slliw a5,a5,0x4
    6d5a:  0007871b           sext.w a4,a5
    6d5e:  fec42783           lw a5,-20(s0)
    6d62:  8fd9                 or a5,a5,a4
    6d64:  fef42623           sw a5,-20(s0)
    6d68:  040257b7           lui a5,0x4025
    6d6c:  07a1                 addi a5,a5,8
    6d6e:  fec42703           lw a4,-20(s0)
    6d72:  c398                 sw a4,0(a5)
    6d74:  0001                 nop
    6d76:  7422                 ld s0,40(sp)
    6d78:  6145                 addi sp,sp,48
    6d7a:  8082                 ret

0000000000006d7c <FUN_00006d7c>:
    6d7c:  1101                 addi sp,sp,-32
    6d7e:  ec06                 sd ra,24(sp)
    6d80:  e822                 sd s0,16(sp)
    6d82:  1000                 addi s0,sp,32
    6d84:  fe042623           sw zero,-20(s0)
    6d88:  fe042423           sw zero,-24(s0)
    6d8c:  020007b7           lui a5,0x2000
    6d90:  34878793           addi a5,a5,840 # 2000348 <gpio_get_boot_device+0x1ff1fb2
    6d94:  439c                 lw a5,0(a5)
    6d96:  fef42623           sw a5,-20(s0)
    6d9a:  fec42783           lw a5,-20(s0)
    6d9e:  8b91                 andi a5,a5,4
    6da0:  fef42623           sw a5,-20(s0)
    6da4:  fec42783           lw a5,-20(s0)
    6da8:  2781                 sext.w a5,a5
    6daa:  c795                 beqz a5,6dd6 <FUN_00006d7c+0x5a>
    6dac:  020007b7           lui a5,0x2000
    6db0:  34078793           addi a5,a5,832 # 2000340 <gpio_get_boot_device+0x1ff1faa
    6db4:  439c                 lw a5,0(a5)
    6db6:  fef42423           sw a5,-24(s0)
    6dba:  fe842783           lw a5,-24(s0)
    6dbe:  0047e793           ori a5,a5,4
    6dc2:  fef42423           sw a5,-24(s0)
    6dc6:  020007b7           lui a5,0x2000
    6dca:  34078793           addi a5,a5,832 # 2000340 <gpio_get_boot_device+0x1ff1faa
    6dce:  fe842703           lw a4,-24(s0)
    6dd2:  c398                 sw a4,0(a5)
    6dd4:  a025                 j 6dfc <FUN_00006d7c+0x80>
    6dd6:  020007b7           lui a5,0x2000
    6dda:  34078793           addi a5,a5,832 # 2000340 <gpio_get_boot_device+0x1ff1faa
    6dde:  439c                 lw a5,0(a5)
    6de0:  fef42423           sw a5,-24(s0)
    6de4:  fe842783           lw a5,-24(s0)
    6de8:  9bed                 andi a5,a5,-5
    6dea:  fef42423           sw a5,-24(s0)
    6dee:  020007b7           lui a5,0x2000
    6df2:  34078793           addi a5,a5,832 # 2000340 <gpio_get_boot_device+0x1ff1faa
    6df6:  fe842703           lw a4,-24(s0)
    6dfa:  c398                 sw a4,0(a5)
    6dfc:  4529                 li a0,10
    6dfe:  386030ef           jal ra,a184 <udelay>
    6e02:  0001                 nop
    6e04:  60e2                 ld ra,24(sp)
    6e06:  6442                 ld s0,16(sp)
    6e08:  6105                 addi sp,sp,32
    6e0a:  8082                 ret

0000000000006e0c <FUN_00006e0c>:
    6e0c:  1101                 addi sp,sp,-32
    6e0e:  ec22                 sd s0,24(sp)
    6e10:  1000                 addi s0,sp,32
    6e12:  fe042623           sw zero,-20(s0)
    6e16:  020007b7           lui a5,0x2000
    6e1a:  34078793           addi a5,a5,832 # 2000340 <gpio_get_boot_device+0x1ff1faa
    6e1e:  439c                 lw a5,0(a5)
    6e20:  fef42623           sw a5,-20(s0)
    6e24:  fec42783           lw a5,-20(s0)
    6e28:  9bed                 andi a5,a5,-5
    6e2a:  fef42623           sw a5,-20(s0)
    6e2e:  020007b7           lui a5,0x2000
    6e32:  34078793           addi a5,a5,832 # 2000340 <gpio_get_boot_device+0x1ff1faa
    6e36:  fec42703           lw a4,-20(s0)
    6e3a:  c398                 sw a4,0(a5)
    6e3c:  0001                 nop
    6e3e:  6462                 ld s0,24(sp)
    6e40:  6105                 addi sp,sp,32
    6e42:  8082                 ret

0000000000006e44 <FUN_00006e44>:
    6e44:  1101                 addi sp,sp,-32
    6e46:  ec06                 sd ra,24(sp)
    6e48:  e822                 sd s0,16(sp)
    6e4a:  1000                 addi s0,sp,32
    6e4c:  87aa                 mv a5,a0
    6e4e:  fef42623           sw a5,-20(s0)
    6e52:  f2bff0ef           jal ra,6d7c <FUN_00006d7c>
    6e56:  020007b7           lui a5,0x2000
    6e5a:  06078793           addi a5,a5,96 # 2000060 <gpio_get_boot_device+0x1ff1cca>
    6e5e:  22222737           lui a4,0x22222
    6e62:  2ff7071b           addiw a4,a4,767
    6e66:  c398                 sw a4,0(a5)
    6e68:  020007b7           lui a5,0x2000
    6e6c:  07078793           addi a5,a5,112 # 2000070 <gpio_get_boot_device+0x1ff1cda
    6e70:  0c000713           li a4,192
    6e74:  c398                 sw a4,0(a5)
    6e76:  020007b7           lui a5,0x2000
    6e7a:  08478793           addi a5,a5,132 # 2000084 <gpio_get_boot_device+0x1ff1cee
    6e7e:  04000713           li a4,64
    6e82:  c398                 sw a4,0(a5)
    6e84:  fec42783           lw a5,-20(s0)
    6e88:  0007871b           sext.w a4,a5
    6e8c:  47a1                 li a5,8
    6e8e:  00f71463           bne a4,a5,6e96 <FUN_00006e44+0x52>
    6e92:  d7bff0ef           jal ra,6c0c <FUN_00006c0c>
    6e96:  0001                 nop
    6e98:  60e2                 ld ra,24(sp)
    6e9a:  6442                 ld s0,16(sp)
    6e9c:  6105                 addi sp,sp,32
    6e9e:  8082                 ret

0000000000006ea0 <FUN_00006ea0>:
    6ea0:  1141                 addi sp,sp,-16
    6ea2:  e406                 sd ra,8(sp)
    6ea4:  e022                 sd s0,0(sp)
    6ea6:  0800                 addi s0,sp,16
    6ea8:  020007b7           lui a5,0x2000
    6eac:  06078793           addi a5,a5,96 # 2000060 <gpio_get_boot_device+0x1ff1cca>
    6eb0:  577d                 li a4,-1
    6eb2:  c398                 sw a4,0(a5)
    6eb4:  020007b7           lui a5,0x2000
    6eb8:  07078793           addi a5,a5,112 # 2000070 <gpio_get_boot_device+0x1ff1cda
    6ebc:  0007a023           sw zero,0(a5)
    6ec0:  020007b7           lui a5,0x2000
    6ec4:  08478793           addi a5,a5,132 # 2000084 <gpio_get_boot_device+0x1ff1cee
    6ec8:  54000713           li a4,1344
    6ecc:  c398                 sw a4,0(a5)
    6ece:  f3fff0ef           jal ra,6e0c <FUN_00006e0c>
    6ed2:  0001                 nop
    6ed4:  60a2                 ld ra,8(sp)
    6ed6:  6402                 ld s0,0(sp)
    6ed8:  0141                 addi sp,sp,16
    6eda:  8082                 ret

0000000000006edc <FUN_00006edc>:
    6edc:  1101                 addi sp,sp,-32
    6ede:  ec06                 sd ra,24(sp)
    6ee0:  e822                 sd s0,16(sp)
    6ee2:  1000                 addi s0,sp,32
    6ee4:  87aa                 mv a5,a0
    6ee6:  fef42623           sw a5,-20(s0)
    6eea:  020027b7           lui a5,0x2002
    6eee:  96c78793           addi a5,a5,-1684 # 200196c <gpio_get_boot_device+0x1ff35
    6ef2:  439c                 lw a5,0(a5)
    6ef4:  0007871b           sext.w a4,a5
    6ef8:  020027b7           lui a5,0x2002
    6efc:  96c78793           addi a5,a5,-1684 # 200196c <gpio_get_boot_device+0x1ff35
    6f00:  86ba                 mv a3,a4
    6f02:  6741                 lui a4,0x10
    6f04:  8f55                 or a4,a4,a3
    6f06:  2701                 sext.w a4,a4
    6f08:  c398                 sw a4,0(a5)
    6f0a:  020027b7           lui a5,0x2002
    6f0e:  96c78793           addi a5,a5,-1684 # 200196c <gpio_get_boot_device+0x1ff35
    6f12:  439c                 lw a5,0(a5)
    6f14:  0007871b           sext.w a4,a5
    6f18:  020027b7           lui a5,0x2002
    6f1c:  96c78793           addi a5,a5,-1684 # 200196c <gpio_get_boot_device+0x1ff35
    6f20:  00176713           ori a4,a4,1
    6f24:  2701                 sext.w a4,a4
    6f26:  c398                 sw a4,0(a5)
    6f28:  020027b7           lui a5,0x2002
    6f2c:  94078793           addi a5,a5,-1728 # 2001940 <gpio_get_boot_device+0x1ff35
    6f30:  80000737           lui a4,0x80000
    6f34:  c398                 sw a4,0(a5)
    6f36:  fec42783           lw a5,-20(s0)
    6f3a:  853e                 mv a0,a5
    6f3c:  f09ff0ef           jal ra,6e44 <FUN_00006e44>
    6f40:  fec42783           lw a5,-20(s0)
    6f44:  0007871b           sext.w a4,a5
    6f48:  47a1                 li a5,8
    6f4a:  00f71463           bne a4,a5,6f52 <FUN_00006edc+0x76>
    6f4e:  d9fff0ef           jal ra,6cec <FUN_00006cec>
    6f52:  637020ef           jal ra,9d88 <FUN_00009d88>
    6f56:  040257b7           lui a5,0x4025
    6f5a:  0791                 addi a5,a5,4
    6f5c:  80000737           lui a4,0x80000
    6f60:  0837071b           addiw a4,a4,131
    6f64:  c398                 sw a4,0(a5)
    6f66:  0003b7b7           lui a5,0x3b
    6f6a:  98078613           addi a2,a5,-1664 # 3a980 <gpio_get_boot_device+0x2c5ea>
    6f6e:  800005b7           lui a1,0x80000
    6f72:  040257b7           lui a5,0x4025
    6f76:  00478513           addi a0,a5,4 # 4025004 <gpio_get_boot_device+0x4016c6e>
    6f7a:  1cc000ef           jal ra,7146 <FUN_00007146>
    6f7e:  040257b7           lui a5,0x4025
    6f82:  07a1                 addi a5,a5,8
    6f84:  18400713           li a4,388
    6f88:  c398                 sw a4,0(a5)
    6f8a:  040257b7           lui a5,0x4025
    6f8e:  07e1                 addi a5,a5,24
    6f90:  80208737           lui a4,0x80208
    6f94:  0207071b           addiw a4,a4,32
    6f98:  c398                 sw a4,0(a5)
    6f9a:  0003b7b7           lui a5,0x3b
    6f9e:  98078613           addi a2,a5,-1664 # 3a980 <gpio_get_boot_device+0x2c5ea>
    6fa2:  800085b7           lui a1,0x80008
    6fa6:  040257b7           lui a5,0x4025
    6faa:  01878513           addi a0,a5,24 # 4025018 <gpio_get_boot_device+0x4016c82>
    6fae:  198000ef           jal ra,7146 <FUN_00007146>
    6fb2:  040257b7           lui a5,0x4025
    6fb6:  07c1                 addi a5,a5,16
    6fb8:  0007a023           sw zero,0(a5) # 4025000 <gpio_get_boot_device+0x4016c6a>
    6fbc:  040257b7           lui a5,0x4025
    6fc0:  07d1                 addi a5,a5,20
    6fc2:  577d                 li a4,-1
    6fc4:  c398                 sw a4,0(a5)
    6fc6:  0001                 nop
    6fc8:  60e2                 ld ra,24(sp)
    6fca:  6442                 ld s0,16(sp)
    6fcc:  6105                 addi sp,sp,32
    6fce:  8082                 ret

0000000000006fd0 <FUN_00006fd0>:
    6fd0:  1141                 addi sp,sp,-16
    6fd2:  e406                 sd ra,8(sp)
    6fd4:  e022                 sd s0,0(sp)
    6fd6:  0800                 addi s0,sp,16
    6fd8:  040257b7           lui a5,0x4025
    6fdc:  0791                 addi a5,a5,4
    6fde:  0007a023           sw zero,0(a5) # 4025000 <gpio_get_boot_device+0x4016c6a>
    6fe2:  ebfff0ef           jal ra,6ea0 <FUN_00006ea0>
    6fe6:  020027b7           lui a5,0x2002
    6fea:  94078793           addi a5,a5,-1728 # 2001940 <gpio_get_boot_device+0x1ff35
    6fee:  0007a023           sw zero,0(a5)
    6ff2:  020027b7           lui a5,0x2002
    6ff6:  96c78793           addi a5,a5,-1684 # 200196c <gpio_get_boot_device+0x1ff35
    6ffa:  439c                 lw a5,0(a5)
    6ffc:  0007871b           sext.w a4,a5
    7000:  020027b7           lui a5,0x2002
    7004:  96c78793           addi a5,a5,-1684 # 200196c <gpio_get_boot_device+0x1ff35
    7008:  86ba                 mv a3,a4
    700a:  7741                 lui a4,0xffff0
    700c:  177d                 addi a4,a4,-1
    700e:  8f75                 and a4,a4,a3
    7010:  2701                 sext.w a4,a4
    7012:  c398                 sw a4,0(a5)
    7014:  020027b7           lui a5,0x2002
    7018:  96c78793           addi a5,a5,-1684 # 200196c <gpio_get_boot_device+0x1ff35
    701c:  439c                 lw a5,0(a5)
    701e:  0007871b           sext.w a4,a5
    7022:  020027b7           lui a5,0x2002
    7026:  96c78793           addi a5,a5,-1684 # 200196c <gpio_get_boot_device+0x1ff35
    702a:  9b79                 andi a4,a4,-2
    702c:  2701                 sext.w a4,a4
    702e:  c398                 sw a4,0(a5)
    7030:  020017b7           lui a5,0x2001
    7034:  70c78793           addi a5,a5,1804 # 200170c <gpio_get_boot_device+0x1ff337
    7038:  439c                 lw a5,0(a5)
    703a:  0007871b           sext.w a4,a5
    703e:  020017b7           lui a5,0x2001
    7042:  70c78793           addi a5,a5,1804 # 200170c <gpio_get_boot_device+0x1ff337
    7046:  86ba                 mv a3,a4
    7048:  7741                 lui a4,0xffff0
    704a:  177d                 addi a4,a4,-1
    704c:  8f75                 and a4,a4,a3
    704e:  2701                 sext.w a4,a4
    7050:  c398                 sw a4,0(a5)
    7052:  020017b7           lui a5,0x2001
    7056:  70c78793           addi a5,a5,1804 # 200170c <gpio_get_boot_device+0x1ff337
    705a:  439c                 lw a5,0(a5)
    705c:  0007871b           sext.w a4,a5
    7060:  020017b7           lui a5,0x2001
    7064:  70c78793           addi a5,a5,1804 # 200170c <gpio_get_boot_device+0x1ff337
    7068:  9b79                 andi a4,a4,-2
    706a:  2701                 sext.w a4,a4
    706c:  c398                 sw a4,0(a5)
    706e:  0001                 nop
    7070:  60a2                 ld ra,8(sp)
    7072:  6402                 ld s0,0(sp)
    7074:  0141                 addi sp,sp,16
    7076:  8082                 ret

0000000000007078 <FUN_00007078>:
    7078:  7139                 addi sp,sp,-64
    707a:  fc06                 sd ra,56(sp)
    707c:  f822                 sd s0,48(sp)
    707e:  0080                 addi s0,sp,64
    7080:  87aa                 mv a5,a0
    7082:  fcf42623           sw a5,-52(s0)
    7086:  fe043423           sd zero,-24(s0)
    708a:  fe043023           sd zero,-32(s0)
    708e:  fcc46783           lwu a5,-52(s0)
    7092:  fcf43c23           sd a5,-40(s0)
    7096:  0e8030ef           jal ra,a17e <rdtime>
    709a:  fea43423           sd a0,-24(s0)
    709e:  030027b7           lui a5,0x3002
    70a2:  03078793           addi a5,a5,48 # 3002030 <gpio_get_boot_device+0x2ff3c9a>
    70a6:  439c                 lw a5,0(a5)
    70a8:  2781                 sext.w a5,a5
    70aa:  8b85                 andi a5,a5,1
    70ac:  2781                 sext.w a5,a5
    70ae:  e399                 bnez a5,70b4 <FUN_00007078+0x3c>
    70b0:  4781                 li a5,0
    70b2:  a00d                 j 70d4 <FUN_00007078+0x5c>
    70b4:  0ca030ef           jal ra,a17e <rdtime>
    70b8:  872a                 mv a4,a0
    70ba:  fe843783           ld a5,-24(s0)
    70be:  40f707b3           sub a5,a4,a5
    70c2:  fef43023           sd a5,-32(s0)
    70c6:  fe043703           ld a4,-32(s0)
    70ca:  fd843783           ld a5,-40(s0)
    70ce:  fcf768e3           bltu a4,a5,709e <FUN_00007078+0x26>
    70d2:  4789                 li a5,2
    70d4:  853e                 mv a0,a5
    70d6:  70e2                 ld ra,56(sp)
    70d8:  7442                 ld s0,48(sp)
    70da:  6121                 addi sp,sp,64
    70dc:  8082                 ret

00000000000070de <FUN_000070de>:
    70de:  7139                 addi sp,sp,-64
    70e0:  fc06                 sd ra,56(sp)
    70e2:  f822                 sd s0,48(sp)
    70e4:  0080                 addi s0,sp,64
    70e6:  87aa                 mv a5,a0
    70e8:  fcf42623           sw a5,-52(s0)
    70ec:  fe043423           sd zero,-24(s0)
    70f0:  fe043023           sd zero,-32(s0)
    70f4:  fcc46783           lwu a5,-52(s0)
    70f8:  fcf43c23           sd a5,-40(s0)
    70fc:  082030ef           jal ra,a17e <rdtime>
    7100:  fea43423           sd a0,-24(s0)
    7104:  040257b7           lui a5,0x4025
    7108:  07d1                 addi a5,a5,20
    710a:  439c                 lw a5,0(a5)
    710c:  2781                 sext.w a5,a5
    710e:  873e                 mv a4,a5
    7110:  6785                 lui a5,0x1
    7112:  8ff9                 and a5,a5,a4
    7114:  2781                 sext.w a5,a5
    7116:  c399                 beqz a5,711c <FUN_000070de+0x3e>
    7118:  4781                 li a5,0
    711a:  a00d                 j 713c <FUN_000070de+0x5e>
    711c:  062030ef           jal ra,a17e <rdtime>
    7120:  872a                 mv a4,a0
    7122:  fe843783           ld a5,-24(s0)
    7126:  40f707b3           sub a5,a4,a5
    712a:  fef43023           sd a5,-32(s0)
    712e:  fe043703           ld a4,-32(s0)
    7132:  fd843783           ld a5,-40(s0)
    7136:  fcf767e3           bltu a4,a5,7104 <FUN_000070de+0x26>
    713a:  4789                 li a5,2
    713c:  853e                 mv a0,a5
    713e:  70e2                 ld ra,56(sp)
    7140:  7442                 ld s0,48(sp)
    7142:  6121                 addi sp,sp,64
    7144:  8082                 ret

0000000000007146 <FUN_00007146>:
    7146:  715d                 addi sp,sp,-80
    7148:  e486                 sd ra,72(sp)
    714a:  e0a2                 sd s0,64(sp)
    714c:  0880                 addi s0,sp,80
    714e:  fca43423           sd a0,-56(s0)
    7152:  87ae                 mv a5,a1
    7154:  fac43c23           sd a2,-72(s0)
    7158:  fcf42223           sw a5,-60(s0)
    715c:  fe043423           sd zero,-24(s0)
    7160:  fe043023           sd zero,-32(s0)
    7164:  fb843783           ld a5,-72(s0)
    7168:  fcf43c23           sd a5,-40(s0)
    716c:  012030ef           jal ra,a17e <rdtime>
    7170:  fea43423           sd a0,-24(s0)
    7174:  00a030ef           jal ra,a17e <rdtime>
    7178:  872a                 mv a4,a0
    717a:  fe843783           ld a5,-24(s0)
    717e:  40f707b3           sub a5,a4,a5
    7182:  fef43023           sd a5,-32(s0)
    7186:  fc843783           ld a5,-56(s0)
    718a:  439c                 lw a5,0(a5)
    718c:  0007871b           sext.w a4,a5
    7190:  fc442783           lw a5,-60(s0)
    7194:  8ff9                 and a5,a5,a4
    7196:  2781                 sext.w a5,a5
    7198:  e399                 bnez a5,719e <FUN_00007146+0x58>
    719a:  4781                 li a5,0
    719c:  a801                 j 71ac <FUN_00007146+0x66>
    719e:  fe043703           ld a4,-32(s0)
    71a2:  fd843783           ld a5,-40(s0)
    71a6:  fcf767e3           bltu a4,a5,7174 <FUN_00007146+0x2e>
    71aa:  4789                 li a5,2
    71ac:  853e                 mv a0,a5
    71ae:  60a6                 ld ra,72(sp)
    71b0:  6406                 ld s0,64(sp)
    71b2:  6161                 addi sp,sp,80
    71b4:  8082                 ret

00000000000071b6 <FUN_000071b6>:
    71b6:  715d                 addi sp,sp,-80
    71b8:  e486                 sd ra,72(sp)
    71ba:  e0a2                 sd s0,64(sp)
    71bc:  0880                 addi s0,sp,80
    71be:  87aa                 mv a5,a0
    71c0:  872e                 mv a4,a1
    71c2:  fcc43023           sd a2,-64(s0)
    71c6:  fad43c23           sd a3,-72(s0)
    71ca:  fcf42623           sw a5,-52(s0)
    71ce:  87ba                 mv a5,a4
    71d0:  fcf42423           sw a5,-56(s0)
    71d4:  47c1                 li a5,16
    71d6:  fef42423           sw a5,-24(s0)
    71da:  048007b7           lui a5,0x4800
    71de:  5967879b           addiw a5,a5,1430
    71e2:  fef42223           sw a5,-28(s0)
    71e6:  040257b7           lui a5,0x4025
    71ea:  3007879b           addiw a5,a5,768
    71ee:  fef42023           sw a5,-32(s0)
    71f2:  040257b7           lui a5,0x4025
    71f6:  2007879b           addiw a5,a5,512
    71fa:  fcf42e23           sw a5,-36(s0)
    71fe:  fcc42703           lw a4,-52(s0)
    7202:  fc842783           lw a5,-56(s0)
    7206:  9fb9                 addw a5,a5,a4
    7208:  0007871b           sext.w a4,a5
    720c:  0003b7b7           lui a5,0x3b
    7210:  9807879b           addiw a5,a5,-1664
    7214:  9fb9                 addw a5,a5,a4
    7216:  fcf42c23           sw a5,-40(s0)
    721a:  040257b7           lui a5,0x4025
    721e:  03478793           addi a5,a5,52 # 4025034 <gpio_get_boot_device+0x4016c9e>
    7222:  fcc42703           lw a4,-52(s0)
    7226:  c398                 sw a4,0(a5)
    7228:  040257b7           lui a5,0x4025
    722c:  03078793           addi a5,a5,48 # 4025030 <gpio_get_boot_device+0x4016c9a>
    7230:  fcc42683           lw a3,-52(s0)
    7234:  fc842703           lw a4,-56(s0)
    7238:  9f35                 addw a4,a4,a3
    723a:  2701                 sext.w a4,a4
    723c:  c398                 sw a4,0(a5)
    723e:  040257b7           lui a5,0x4025
    7242:  03878793           addi a5,a5,56 # 4025038 <gpio_get_boot_device+0x4016ca2>
    7246:  fcc42703           lw a4,-52(s0)
    724a:  c398                 sw a4,0(a5)
    724c:  040257b7           lui a5,0x4025
    7250:  07e1                 addi a5,a5,24
    7252:  439c                 lw a5,0(a5)
    7254:  0007871b           sext.w a4,a5
    7258:  040257b7           lui a5,0x4025
    725c:  07e1                 addi a5,a5,24
    725e:  10076713           ori a4,a4,256
    7262:  2701                 sext.w a4,a4
    7264:  c398                 sw a4,0(a5)
    7266:  fc842703           lw a4,-56(s0)
    726a:  fe042603           lw a2,-32(s0)
    726e:  fe842583           lw a1,-24(s0)
    7272:  fe442783           lw a5,-28(s0)
    7276:  fb843683           ld a3,-72(s0)
    727a:  853e                 mv a0,a5
    727c:  1c1020ef           jal ra,9c3c <FUN_00009c3c>
    7280:  fe042623           sw zero,-20(s0)
    7284:  a00d                 j 72a6 <FUN_000071b6+0xf0>
    7286:  fec46783           lwu a5,-20(s0)
    728a:  fc043703           ld a4,-64(s0)
    728e:  97ba                 add a5,a5,a4
    7290:  fdc46703           lwu a4,-36(s0)
    7294:  0007c783           lbu a5,0(a5) # 4025000 <gpio_get_boot_device+0x4016c6a>
    7298:  00f70023           sb a5,0(a4) # ffffffffffff0000 <gpio_get_boot_device+0xf
    729c:  fec42783           lw a5,-20(s0)
    72a0:  2785                 addiw a5,a5,1
    72a2:  fef42623           sw a5,-20(s0)
    72a6:  fec42703           lw a4,-20(s0)
    72aa:  fcc42783           lw a5,-52(s0)
    72ae:  2701                 sext.w a4,a4
    72b0:  2781                 sext.w a5,a5
    72b2:  fcf76ae3           bltu a4,a5,7286 <FUN_000071b6+0xd0>
    72b6:  040257b7           lui a5,0x4025
    72ba:  07a1                 addi a5,a5,8
    72bc:  439c                 lw a5,0(a5)
    72be:  0007871b           sext.w a4,a5
    72c2:  040257b7           lui a5,0x4025
    72c6:  07a1                 addi a5,a5,8
    72c8:  86ba                 mv a3,a4
    72ca:  80000737           lui a4,0x80000
    72ce:  8f55                 or a4,a4,a3
    72d0:  2701                 sext.w a4,a4
    72d2:  c398                 sw a4,0(a5)
    72d4:  fd842783           lw a5,-40(s0)
    72d8:  853e                 mv a0,a5
    72da:  d9fff0ef           jal ra,7078 <FUN_00007078>
    72de:  87aa                 mv a5,a0
    72e0:  873e                 mv a4,a5
    72e2:  4789                 li a5,2
    72e4:  00f71e63           bne a4,a5,7300 <FUN_000071b6+0x14a>
    72e8:  249020ef           jal ra,9d30 <FUN_00009d30>
    72ec:  4615                 li a2,5
    72ee:  00eff7b7           lui a5,0xeff
    72f2:  80078593           addi a1,a5,-2048 # efe800 <gpio_get_boot_device+0xef046a
    72f6:  450d                 li a0,3
    72f8:  130010ef           jal ra,8428 <rtc_brom_debug>
    72fc:  4789                 li a5,2
    72fe:  a0ad                 j 7368 <FUN_000071b6+0x1b2>
    7300:  fd842783           lw a5,-40(s0)
    7304:  853e                 mv a0,a5
    7306:  dd9ff0ef           jal ra,70de <FUN_000070de>
    730a:  87aa                 mv a5,a0
    730c:  873e                 mv a4,a5
    730e:  4789                 li a5,2
    7310:  00f71e63           bne a4,a5,732c <FUN_000071b6+0x176>
    7314:  21d020ef           jal ra,9d30 <FUN_00009d30>
    7318:  4619                 li a2,6
    731a:  00eff7b7           lui a5,0xeff
    731e:  80078593           addi a1,a5,-2048 # efe800 <gpio_get_boot_device+0xef046a
    7322:  450d                 li a0,3
    7324:  104010ef           jal ra,8428 <rtc_brom_debug>
    7328:  4789                 li a5,2
    732a:  a83d                 j 7368 <FUN_000071b6+0x1b2>
    732c:  205020ef           jal ra,9d30 <FUN_00009d30>
    7330:  040257b7           lui a5,0x4025
    7334:  07d1                 addi a5,a5,20
    7336:  6705                 lui a4,0x1
    7338:  c398                 sw a4,0(a5)
    733a:  040257b7           lui a5,0x4025
    733e:  07d1                 addi a5,a5,20
    7340:  439c                 lw a5,0(a5)
    7342:  2781                 sext.w a5,a5
    7344:  873e                 mv a4,a5
    7346:  6785                 lui a5,0x1
    7348:  f0078793           addi a5,a5,-256 # f00 <sunxi_sha_calc+0x232>
    734c:  8ff9                 and a5,a5,a4
    734e:  2781                 sext.w a5,a5
    7350:  cb99                 beqz a5,7366 <FUN_000071b6+0x1b0>
    7352:  461d                 li a2,7
    7354:  00eff7b7           lui a5,0xeff
    7358:  80078593           addi a1,a5,-2048 # efe800 <gpio_get_boot_device+0xef046a
    735c:  450d                 li a0,3
    735e:  0ca010ef           jal ra,8428 <rtc_brom_debug>
    7362:  4789                 li a5,2
    7364:  a011                 j 7368 <FUN_000071b6+0x1b2>
    7366:  4781                 li a5,0
    7368:  853e                 mv a0,a5
    736a:  60a6                 ld ra,72(sp)
    736c:  6406                 ld s0,64(sp)
    736e:  6161                 addi sp,sp,80
    7370:  8082                 ret
    7372:  7139                 addi sp,sp,-64
    7374:  fc06                 sd ra,56(sp)
    7376:  f822                 sd s0,48(sp)
    7378:  0080                 addi s0,sp,64
    737a:  87aa                 mv a5,a0
    737c:  fcb43023           sd a1,-64(s0)
    7380:  8732                 mv a4,a2
    7382:  fcf42623           sw a5,-52(s0)
    7386:  87ba                 mv a5,a4
    7388:  fcf42423           sw a5,-56(s0)
    738c:  fc043783           ld a5,-64(s0)
    7390:  fef43023           sd a5,-32(s0)
    7394:  fe042423           sw zero,-24(s0)
    7398:  fcc42783           lw a5,-52(s0)
    739c:  0087979b           slliw a5,a5,0x8
    73a0:  fef42623           sw a5,-20(s0)
    73a4:  fc842783           lw a5,-56(s0)
    73a8:  0087979b           slliw a5,a5,0x8
    73ac:  fcf42e23           sw a5,-36(s0)
    73b0:  a05d                 j 7456 <FUN_000071b6+0x2a0>
    73b2:  478d                 li a5,3
    73b4:  fcf40823           sb a5,-48(s0)
    73b8:  fec42783           lw a5,-20(s0)
    73bc:  0107d79b           srliw a5,a5,0x10
    73c0:  2781                 sext.w a5,a5
    73c2:  0ff7f793           andi a5,a5,255
    73c6:  fcf408a3           sb a5,-47(s0)
    73ca:  fec42783           lw a5,-20(s0)
    73ce:  0087d79b           srliw a5,a5,0x8
    73d2:  2781                 sext.w a5,a5
    73d4:  0ff7f793           andi a5,a5,255
    73d8:  fcf40923           sb a5,-46(s0)
    73dc:  fec42783           lw a5,-20(s0)
    73e0:  0ff7f793           andi a5,a5,255
    73e4:  fcf409a3           sb a5,-45(s0)
    73e8:  fdc42703           lw a4,-36(s0)
    73ec:  fe842783           lw a5,-24(s0)
    73f0:  40f707bb           subw a5,a4,a5
    73f4:  2781                 sext.w a5,a5
    73f6:  0007869b           sext.w a3,a5
    73fa:  6705                 lui a4,0x1
    73fc:  80070713           addi a4,a4,-2048 # 800 <FUN_00000660+0x1a0>
    7400:  00d77563           bgeu a4,a3,740a <FUN_000071b6+0x254>
    7404:  6785                 lui a5,0x1
    7406:  8007879b           addiw a5,a5,-2048
    740a:  fcf42c23           sw a5,-40(s0)
    740e:  fe846703           lwu a4,-24(s0)
    7412:  fe043783           ld a5,-32(s0)
    7416:  97ba                 add a5,a5,a4
    7418:  86be                 mv a3,a5
    741a:  fd040713           addi a4,s0,-48
    741e:  fd842783           lw a5,-40(s0)
    7422:  863a                 mv a2,a4
    7424:  85be                 mv a1,a5
    7426:  4511                 li a0,4
    7428:  d8fff0ef           jal ra,71b6 <FUN_000071b6>
    742c:  87aa                 mv a5,a0
    742e:  873e                 mv a4,a5
    7430:  4789                 li a5,2
    7432:  00f71463           bne a4,a5,743a <FUN_000071b6+0x284>
    7436:  4789                 li a5,2
    7438:  a805                 j 7468 <FUN_000071b6+0x2b2>
    743a:  fec42703           lw a4,-20(s0)
    743e:  fd842783           lw a5,-40(s0)
    7442:  9fb9                 addw a5,a5,a4
    7444:  fef42623           sw a5,-20(s0)
    7448:  fe842703           lw a4,-24(s0)
    744c:  fd842783           lw a5,-40(s0)
    7450:  9fb9                 addw a5,a5,a4
    7452:  fef42423           sw a5,-24(s0)
    7456:  fe842703           lw a4,-24(s0)
    745a:  fdc42783           lw a5,-36(s0)
    745e:  2701                 sext.w a4,a4
    7460:  2781                 sext.w a5,a5
    7462:  f4f768e3           bltu a4,a5,73b2 <FUN_000071b6+0x1fc>
    7466:  4781                 li a5,0
    7468:  853e                 mv a0,a5
    746a:  70e2                 ld ra,56(sp)
    746c:  7442                 ld s0,48(sp)
    746e:  6121                 addi sp,sp,64
    7470:  8082                 ret
    7472:  7139                 addi sp,sp,-64
    7474:  fc06                 sd ra,56(sp)
    7476:  f822                 sd s0,48(sp)
    7478:  0080                 addi s0,sp,64
    747a:  87aa                 mv a5,a0
    747c:  fcb43023           sd a1,-64(s0)
    7480:  8732                 mv a4,a2
    7482:  fcf42623           sw a5,-52(s0)
    7486:  87ba                 mv a5,a4
    7488:  fcf42423           sw a5,-56(s0)
    748c:  fc043783           ld a5,-64(s0)
    7490:  fcf43c23           sd a5,-40(s0)
    7494:  fd040793           addi a5,s0,-48
    7498:  0791                 addi a5,a5,4
    749a:  0007a023           sw zero,0(a5) # 1000 <FUN_00000f2c+0xd4>
    749e:  fe042623           sw zero,-20(s0)
    74a2:  fe042223           sw zero,-28(s0)
    74a6:  fcc42783           lw a5,-52(s0)
    74aa:  0097979b           slliw a5,a5,0x9
    74ae:  fef42423           sw a5,-24(s0)
    74b2:  a059                 j 7538 <FUN_000071b6+0x382>
    74b4:  57a1                 li a5,-24
    74b6:  fcf40823           sb a5,-48(s0)
    74ba:  fe842783           lw a5,-24(s0)
    74be:  0107d79b           srliw a5,a5,0x10
    74c2:  2781                 sext.w a5,a5
    74c4:  0ff7f793           andi a5,a5,255
    74c8:  fcf408a3           sb a5,-47(s0)
    74cc:  fe842783           lw a5,-24(s0)
    74d0:  0087d79b           srliw a5,a5,0x8
    74d4:  2781                 sext.w a5,a5
    74d6:  0ff7f793           andi a5,a5,255
    74da:  fcf40923           sb a5,-46(s0)
    74de:  fe842783           lw a5,-24(s0)
    74e2:  0ff7f793           andi a5,a5,255
    74e6:  fcf409a3           sb a5,-45(s0)
    74ea:  fe446703           lwu a4,-28(s0)
    74ee:  fd843783           ld a5,-40(s0)
    74f2:  97ba                 add a5,a5,a4
    74f4:  873e                 mv a4,a5
    74f6:  fd040793           addi a5,s0,-48
    74fa:  86ba                 mv a3,a4
    74fc:  863e                 mv a2,a5
    74fe:  10000593           li a1,256
    7502:  4521                 li a0,8
    7504:  cb3ff0ef           jal ra,71b6 <FUN_000071b6>
    7508:  87aa                 mv a5,a0
    750a:  873e                 mv a4,a5
    750c:  4789                 li a5,2
    750e:  00f71463           bne a4,a5,7516 <FUN_000071b6+0x360>
    7512:  4789                 li a5,2
    7514:  a81d                 j 754a <FUN_000071b6+0x394>
    7516:  fec42783           lw a5,-20(s0)
    751a:  2785                 addiw a5,a5,1
    751c:  fef42623           sw a5,-20(s0)
    7520:  fe442783           lw a5,-28(s0)
    7524:  1007879b           addiw a5,a5,256
    7528:  fef42223           sw a5,-28(s0)
    752c:  fe842783           lw a5,-24(s0)
    7530:  2007879b           addiw a5,a5,512
    7534:  fef42423           sw a5,-24(s0)
    7538:  fec42703           lw a4,-20(s0)
    753c:  fc842783           lw a5,-56(s0)
    7540:  2701                 sext.w a4,a4
    7542:  2781                 sext.w a5,a5
    7544:  f6f768e3           bltu a4,a5,74b4 <FUN_000071b6+0x2fe>
    7548:  4781                 li a5,0
    754a:  853e                 mv a0,a5
    754c:  70e2                 ld ra,56(sp)
    754e:  7442                 ld s0,48(sp)
    7550:  6121                 addi sp,sp,64
    7552:  8082                 ret

0000000000007554 <FUN_00007554>:
    7554:  7179                 addi sp,sp,-48
    7556:  f422                 sd s0,40(sp)
    7558:  1800                 addi s0,sp,48
    755a:  87aa                 mv a5,a0
    755c:  fcf42e23           sw a5,-36(s0)
    7560:  000077b7           lui a5,0x7
    7564:  37278793           addi a5,a5,882 # 7372 <FUN_000071b6+0x1bc>
    7568:  fef43023           sd a5,-32(s0)
    756c:  000077b7           lui a5,0x7
    7570:  47278793           addi a5,a5,1138 # 7472 <FUN_000071b6+0x2bc>
    7574:  fef43423           sd a5,-24(s0)
    7578:  fdc46783           lwu a5,-36(s0)
    757c:  078e                 slli a5,a5,0x3
    757e:  ff040713           addi a4,s0,-16
    7582:  97ba                 add a5,a5,a4
    7584:  ff07b783           ld a5,-16(a5)
    7588:  853e                 mv a0,a5
    758a:  7422                 ld s0,40(sp)
    758c:  6145                 addi sp,sp,48
    758e:  8082                 ret

0000000000007590 <FUN_00007590>:
    7590:  7179                 addi sp,sp,-48
    7592:  f406                 sd ra,40(sp)
    7594:  f022                 sd s0,32(sp)
    7596:  1800                 addi s0,sp,48
    7598:  87aa                 mv a5,a0
    759a:  fcb43823           sd a1,-48(s0)
    759e:  fcf42e23           sw a5,-36(s0)
    75a2:  040257b7           lui a5,0x4025
    75a6:  2007879b           addiw a5,a5,512
    75aa:  fef42423           sw a5,-24(s0)
    75ae:  040257b7           lui a5,0x4025
    75b2:  03478793           addi a5,a5,52 # 4025034 <gpio_get_boot_device+0x4016c9e>
    75b6:  fdc42703           lw a4,-36(s0)
    75ba:  c398                 sw a4,0(a5)
    75bc:  040257b7           lui a5,0x4025
    75c0:  03078793           addi a5,a5,48 # 4025030 <gpio_get_boot_device+0x4016c9a>
    75c4:  fdc42703           lw a4,-36(s0)
    75c8:  c398                 sw a4,0(a5)
    75ca:  040257b7           lui a5,0x4025
    75ce:  03878793           addi a5,a5,56 # 4025038 <gpio_get_boot_device+0x4016ca2>
    75d2:  fdc42703           lw a4,-36(s0)
    75d6:  c398                 sw a4,0(a5)
    75d8:  fdc42703           lw a4,-36(s0)
    75dc:  0003b7b7           lui a5,0x3b
    75e0:  9807879b           addiw a5,a5,-1664
    75e4:  9fb9                 addw a5,a5,a4
    75e6:  fef42223           sw a5,-28(s0)
    75ea:  fe042623           sw zero,-20(s0)
    75ee:  a00d                 j 7610 <FUN_00007590+0x80>
    75f0:  fec46783           lwu a5,-20(s0)
    75f4:  fd043703           ld a4,-48(s0)
    75f8:  97ba                 add a5,a5,a4
    75fa:  fe846703           lwu a4,-24(s0)
    75fe:  0007c783           lbu a5,0(a5) # 3b000 <gpio_get_boot_device+0x2cc6a>
    7602:  00f70023           sb a5,0(a4)
    7606:  fec42783           lw a5,-20(s0)
    760a:  2785                 addiw a5,a5,1
    760c:  fef42623           sw a5,-20(s0)
    7610:  fec42703           lw a4,-20(s0)
    7614:  fdc42783           lw a5,-36(s0)
    7618:  2701                 sext.w a4,a4
    761a:  2781                 sext.w a5,a5
    761c:  fcf76ae3           bltu a4,a5,75f0 <FUN_00007590+0x60>
    7620:  040257b7           lui a5,0x4025
    7624:  07a1                 addi a5,a5,8
    7626:  439c                 lw a5,0(a5)
    7628:  0007871b           sext.w a4,a5
    762c:  040257b7           lui a5,0x4025
    7630:  07a1                 addi a5,a5,8
    7632:  86ba                 mv a3,a4
    7634:  80000737           lui a4,0x80000
    7638:  8f55                 or a4,a4,a3
    763a:  2701                 sext.w a4,a4
    763c:  c398                 sw a4,0(a5)
    763e:  fe442783           lw a5,-28(s0)
    7642:  853e                 mv a0,a5
    7644:  a9bff0ef           jal ra,70de <FUN_000070de>
    7648:  87aa                 mv a5,a0
    764a:  873e                 mv a4,a5
    764c:  4789                 li a5,2
    764e:  00f71463           bne a4,a5,7656 <FUN_00007590+0xc6>
    7652:  4789                 li a5,2
    7654:  a02d                 j 767e <FUN_00007590+0xee>
    7656:  040257b7           lui a5,0x4025
    765a:  07d1                 addi a5,a5,20
    765c:  6705                 lui a4,0x1
    765e:  c398                 sw a4,0(a5)
    7660:  040257b7           lui a5,0x4025
    7664:  07d1                 addi a5,a5,20
    7666:  439c                 lw a5,0(a5)
    7668:  2781                 sext.w a5,a5
    766a:  873e                 mv a4,a5
    766c:  6785                 lui a5,0x1
    766e:  f0078793           addi a5,a5,-256 # f00 <sunxi_sha_calc+0x232>
    7672:  8ff9                 and a5,a5,a4
    7674:  2781                 sext.w a5,a5
    7676:  c399                 beqz a5,767c <FUN_00007590+0xec>
    7678:  4789                 li a5,2
    767a:  a011                 j 767e <FUN_00007590+0xee>
    767c:  4781                 li a5,0
    767e:  853e                 mv a0,a5
    7680:  70a2                 ld ra,40(sp)
    7682:  7402                 ld s0,32(sp)
    7684:  6145                 addi sp,sp,48
    7686:  8082                 ret

0000000000007688 <FUN_00007688>:
    7688:  1101                 addi sp,sp,-32
    768a:  ec06                 sd ra,24(sp)
    768c:  e822                 sd s0,16(sp)
    768e:  1000                 addi s0,sp,32
    7690:  57fd                 li a5,-1
    7692:  fef407a3           sb a5,-17(s0)
    7696:  fef40793           addi a5,s0,-17
    769a:  85be                 mv a1,a5
    769c:  4505                 li a0,1
    769e:  ef3ff0ef           jal ra,7590 <FUN_00007590>
    76a2:  87aa                 mv a5,a0
    76a4:  873e                 mv a4,a5
    76a6:  4789                 li a5,2
    76a8:  00f71463           bne a4,a5,76b0 <FUN_00007688+0x28>
    76ac:  4789                 li a5,2
    76ae:  a029                 j 76b8 <FUN_00007688+0x30>
    76b0:  4505                 li a0,1
    76b2:  2fd020ef           jal ra,a1ae <udelay_x800>
    76b6:  4781                 li a5,0
    76b8:  853e                 mv a0,a5
    76ba:  60e2                 ld ra,24(sp)
    76bc:  6442                 ld s0,16(sp)
    76be:  6105                 addi sp,sp,32
    76c0:  8082                 ret

00000000000076c2 <FUN_000076c2>:
    76c2:  7119                 addi sp,sp,-128
    76c4:  fc86                 sd ra,120(sp)
    76c6:  f8a2                 sd s0,112(sp)
    76c8:  0100                 addi s0,sp,128
    76ca:  88aa                 mv a7,a0
    76cc:  f8b43823           sd a1,-112(s0)
    76d0:  8532                 mv a0,a2
    76d2:  85b6                 mv a1,a3
    76d4:  863a                 mv a2,a4
    76d6:  86be                 mv a3,a5
    76d8:  8742                 mv a4,a6
    76da:  87c6                 mv a5,a7
    76dc:  f8f42e23           sw a5,-100(s0)
    76e0:  87aa                 mv a5,a0
    76e2:  f8f42c23           sw a5,-104(s0)
    76e6:  87ae                 mv a5,a1
    76e8:  f8f42623           sw a5,-116(s0)
    76ec:  87b2                 mv a5,a2
    76ee:  f8f42423           sw a5,-120(s0)
    76f2:  87b6                 mv a5,a3
    76f4:  f8f42223           sw a5,-124(s0)
    76f8:  87ba                 mv a5,a4
    76fa:  f8f42023           sw a5,-128(s0)
    76fe:  fe042223           sw zero,-28(s0)
    7702:  f9043783           ld a5,-112(s0)
    7706:  fcf43c23           sd a5,-40(s0)
    770a:  fa0407a3           sb zero,-81(s0)
    770e:  fc043823           sd zero,-48(s0)
    7712:  fc043423           sd zero,-56(s0)
    7716:  fc043023           sd zero,-64(s0)
    771a:  f9c42783           lw a5,-100(s0)
    771e:  fef42423           sw a5,-24(s0)
    7722:  aa4d                 j 78d4 <FUN_000076c2+0x212>
    7724:  47cd                 li a5,19
    7726:  faf40c23           sb a5,-72(s0)
    772a:  fe842783           lw a5,-24(s0)
    772e:  0107d79b           srliw a5,a5,0x10
    7732:  2781                 sext.w a5,a5
    7734:  0ff7f793           andi a5,a5,255
    7738:  faf40ca3           sb a5,-71(s0)
    773c:  fe842783           lw a5,-24(s0)
    7740:  0087d79b           srliw a5,a5,0x8
    7744:  2781                 sext.w a5,a5
    7746:  0ff7f793           andi a5,a5,255
    774a:  faf40d23           sb a5,-70(s0)
    774e:  fe842783           lw a5,-24(s0)
    7752:  0ff7f793           andi a5,a5,255
    7756:  faf40da3           sb a5,-69(s0)
    775a:  fb840793           addi a5,s0,-72
    775e:  85be                 mv a1,a5
    7760:  4511                 li a0,4
    7762:  e2fff0ef           jal ra,7590 <FUN_00007590>
    7766:  87aa                 mv a5,a0
    7768:  873e                 mv a4,a5
    776a:  4789                 li a5,2
    776c:  00f71663           bne a4,a5,7778 <FUN_000076c2+0xb6>
    7770:  4789                 li a5,2
    7772:  fef42223           sw a5,-28(s0)
    7776:  aaa5                 j 78ee <FUN_000076c2+0x22c>
    7778:  47bd                 li a5,15
    777a:  faf40823           sb a5,-80(s0)
    777e:  fc000793           li a5,-64
    7782:  faf408a3           sb a5,-79(s0)
    7786:  67b1                 lui a5,0xc
    7788:  b8078793           addi a5,a5,-1152 # bb80 <FUN_0000bb76+0xa>
    778c:  fcf43023           sd a5,-64(s0)
    7790:  1ef020ef           jal ra,a17e <rdtime>
    7794:  fca43823           sd a0,-48(s0)
    7798:  1e7020ef           jal ra,a17e <rdtime>
    779c:  872a                 mv a4,a0
    779e:  fd043783           ld a5,-48(s0)
    77a2:  40f707b3           sub a5,a4,a5
    77a6:  fcf43423           sd a5,-56(s0)
    77aa:  faf40713           addi a4,s0,-81
    77ae:  fb040793           addi a5,s0,-80
    77b2:  86ba                 mv a3,a4
    77b4:  863e                 mv a2,a5
    77b6:  4585                 li a1,1
    77b8:  4509                 li a0,2
    77ba:  9fdff0ef           jal ra,71b6 <FUN_000071b6>
    77be:  87aa                 mv a5,a0
    77c0:  873e                 mv a4,a5
    77c2:  4789                 li a5,2
    77c4:  00f71663           bne a4,a5,77d0 <FUN_000076c2+0x10e>
    77c8:  4789                 li a5,2
    77ca:  fef42223           sw a5,-28(s0)
    77ce:  a205                 j 78ee <FUN_000076c2+0x22c>
    77d0:  faf44783           lbu a5,-81(s0)
    77d4:  8b85                 andi a5,a5,1
    77d6:  0ff7f793           andi a5,a5,255
    77da:  faf407a3           sb a5,-81(s0)
    77de:  faf44783           lbu a5,-81(s0)
    77e2:  cb81                 beqz a5,77f2 <FUN_000076c2+0x130>
    77e4:  fc843703           ld a4,-56(s0)
    77e8:  fc043783           ld a5,-64(s0)
    77ec:  faf766e3           bltu a4,a5,7798 <FUN_000076c2+0xd6>
    77f0:  a011                 j 77f4 <FUN_000076c2+0x132>
    77f2:  0001                 nop
    77f4:  fc843703           ld a4,-56(s0)
    77f8:  fc043783           ld a5,-64(s0)
    77fc:  00f76c63           bltu a4,a5,7814 <FUN_000076c2+0x152>
    7800:  faf44783           lbu a5,-81(s0)
    7804:  2781                 sext.w a5,a5
    7806:  8b85                 andi a5,a5,1
    7808:  2781                 sext.w a5,a5
    780a:  c789                 beqz a5,7814 <FUN_000076c2+0x152>
    780c:  4789                 li a5,2
    780e:  fef42223           sw a5,-28(s0)
    7812:  a8f1                 j 78ee <FUN_000076c2+0x22c>
    7814:  47ad                 li a5,11
    7816:  faf40c23           sb a5,-72(s0)
    781a:  f8442783           lw a5,-124(s0)
    781e:  0007871b           sext.w a4,a5
    7822:  4785                 li a5,1
    7824:  02f71063           bne a4,a5,7844 <FUN_000076c2+0x182>
    7828:  fe842703           lw a4,-24(s0)
    782c:  f8042783           lw a5,-128(s0)
    7830:  02f757bb           divuw a5,a4,a5
    7834:  2781                 sext.w a5,a5
    7836:  8b85                 andi a5,a5,1
    7838:  2781                 sext.w a5,a5
    783a:  c789                 beqz a5,7844 <FUN_000076c2+0x182>
    783c:  47c1                 li a5,16
    783e:  faf40ca3           sb a5,-71(s0)
    7842:  a019                 j 7848 <FUN_000076c2+0x186>
    7844:  fa040ca3           sb zero,-71(s0)
    7848:  fa040d23           sb zero,-70(s0)
    784c:  fa040da3           sb zero,-69(s0)
    7850:  4791                 li a5,4
    7852:  fef407a3           sb a5,-17(s0)
    7856:  f8c42783           lw a5,-116(s0)
    785a:  0007871b           sext.w a4,a5
    785e:  4785                 li a5,1
    7860:  00f71d63           bne a4,a5,787a <FUN_000076c2+0x1b8>
    7864:  fa040ca3           sb zero,-71(s0)
    7868:  fa040d23           sb zero,-70(s0)
    786c:  fa040da3           sb zero,-69(s0)
    7870:  fa040e23           sb zero,-68(s0)
    7874:  4795                 li a5,5
    7876:  fef407a3           sb a5,-17(s0)
    787a:  fef44783           lbu a5,-17(s0)
    787e:  0007851b           sext.w a0,a5
    7882:  fe842703           lw a4,-24(s0)
    7886:  f9c42783           lw a5,-100(s0)
    788a:  40f707bb           subw a5,a4,a5
    788e:  2781                 sext.w a5,a5
    7890:  f8842703           lw a4,-120(s0)
    7894:  02f707bb           mulw a5,a4,a5
    7898:  2781                 sext.w a5,a5
    789a:  02079713           slli a4,a5,0x20
    789e:  9301                 srli a4,a4,0x20
    78a0:  fd843783           ld a5,-40(s0)
    78a4:  97ba                 add a5,a5,a4
    78a6:  86be                 mv a3,a5
    78a8:  fb840713           addi a4,s0,-72
    78ac:  f8842783           lw a5,-120(s0)
    78b0:  863a                 mv a2,a4
    78b2:  85be                 mv a1,a5
    78b4:  903ff0ef           jal ra,71b6 <FUN_000071b6>
    78b8:  87aa                 mv a5,a0
    78ba:  873e                 mv a4,a5
    78bc:  4789                 li a5,2
    78be:  00f71663           bne a4,a5,78ca <FUN_000076c2+0x208>
    78c2:  4789                 li a5,2
    78c4:  fef42223           sw a5,-28(s0)
    78c8:  a01d                 j 78ee <FUN_000076c2+0x22c>
    78ca:  fe842783           lw a5,-24(s0)
    78ce:  2785                 addiw a5,a5,1
    78d0:  fef42423           sw a5,-24(s0)
    78d4:  f9c42703           lw a4,-100(s0)
    78d8:  f9842783           lw a5,-104(s0)
    78dc:  9fb9                 addw a5,a5,a4
    78de:  0007871b           sext.w a4,a5
    78e2:  fe842783           lw a5,-24(s0)
    78e6:  2781                 sext.w a5,a5
    78e8:  e2e7eee3           bltu a5,a4,7724 <FUN_000076c2+0x62>
    78ec:  0001                 nop
    78ee:  fe442783           lw a5,-28(s0)
    78f2:  853e                 mv a0,a5
    78f4:  70e6                 ld ra,120(sp)
    78f6:  7446                 ld s0,112(sp)
    78f8:  6109                 addi sp,sp,128
    78fa:  8082                 ret

00000000000078fc <FUN_000078fc>:
    78fc:  1141                 addi sp,sp,-16
    78fe:  e406                 sd ra,8(sp)
    7900:  e022                 sd s0,0(sp)
    7902:  0800                 addi s0,sp,16
    7904:  abcff0ef           jal ra,6bc0 <FUN_00006bc0>
    7908:  a6cff0ef           jal ra,6b74 <FUN_00006b74>
    790c:  0001                 nop
    790e:  60a2                 ld ra,8(sp)
    7910:  6402                 ld s0,0(sp)
    7912:  0141                 addi sp,sp,16
    7914:  8082                 ret

0000000000007916 <FUN_00007916>:
    7916:  7139                 addi sp,sp,-64
    7918:  fc06                 sd ra,56(sp)
    791a:  f822                 sd s0,48(sp)
    791c:  0080                 addi s0,sp,64
    791e:  87aa                 mv a5,a0
    7920:  fcf42623           sw a5,-52(s0)
    7924:  fe043023           sd zero,-32(s0)
    7928:  fc043c23           sd zero,-40(s0)
    792c:  fcc42783           lw a5,-52(s0)
    7930:  853e                 mv a0,a5
    7932:  daaff0ef           jal ra,6edc <FUN_00006edc>
    7936:  64a000ef           jal ra,7f80 <brom_config_bit_13>
    793a:  87aa                 mv a5,a0
    793c:  e399                 bnez a5,7942 <FUN_00007916+0x2c>
    793e:  fbfff0ef           jal ra,78fc <FUN_000078fc>
    7942:  fe042623           sw zero,-20(s0)
    7946:  aa85                 j 7ab6 <FUN_00007916+0x1a0>
    7948:  fec42783           lw a5,-20(s0)
    794c:  853e                 mv a0,a5
    794e:  c07ff0ef           jal ra,7554 <FUN_00007554>
    7952:  fca43823           sd a0,-48(s0)
    7956:  fd043783           ld a5,-48(s0)
    795a:  4605                 li a2,1
    795c:  000205b7           lui a1,0x20
    7960:  4501                 li a0,0
    7962:  9782                 jalr a5
    7964:  87aa                 mv a5,a0
    7966:  873e                 mv a4,a5
    7968:  4789                 li a5,2
    796a:  00f71963           bne a4,a5,797c <FUN_00007916+0x66>
    796e:  0f000613           li a2,240
    7972:  4581                 li a1,0
    7974:  450d                 li a0,3
    7976:  2b3000ef           jal ra,8428 <rtc_brom_debug>
    797a:  aa0d                 j 7aac <FUN_00007916+0x196>
    797c:  000487b7           lui a5,0x48
    7980:  e107a783           lw a5,-496(a5) # 47e10 <gpio_get_boot_device+0x39a7a>
    7984:  cba1                 beqz a5,79d4 <FUN_00007916+0xbe>
    7986:  67b9                 lui a5,0xe
    7988:  51078593           addi a1,a5,1296 # e510 <gpio_get_boot_device+0x17a>
    798c:  00020537           lui a0,0x20
    7990:  483000ef           jal ra,8612 <boot0_check_magic>
    7994:  87aa                 mv a5,a0
    7996:  cb81                 beqz a5,79a6 <FUN_00007916+0x90>
    7998:  0f100613           li a2,241
    799c:  4581                 li a1,0
    799e:  450d                 li a0,3
    79a0:  289000ef           jal ra,8428 <rtc_brom_debug>
    79a4:  a221                 j 7aac <FUN_00007916+0x196>
    79a6:  000207b7           lui a5,0x20
    79aa:  fcf43c23           sd a5,-40(s0)
    79ae:  fd843783           ld a5,-40(s0)
    79b2:  01c7c703           lbu a4,28(a5) # 2001c <gpio_get_boot_device+0x11c86>
    79b6:  01d7c683           lbu a3,29(a5)
    79ba:  06a2                 slli a3,a3,0x8
    79bc:  8f55                 or a4,a4,a3
    79be:  01e7c683           lbu a3,30(a5)
    79c2:  06c2                 slli a3,a3,0x10
    79c4:  8f55                 or a4,a4,a3
    79c6:  01f7c783           lbu a5,31(a5)
    79ca:  07e2                 slli a5,a5,0x18
    79cc:  8fd9                 or a5,a5,a4
    79ce:  fef42423           sw a5,-24(s0)
    79d2:  a815                 j 7a06 <FUN_00007916+0xf0>
    79d4:  67b9                 lui a5,0xe
    79d6:  52078593           addi a1,a5,1312 # e520 <gpio_get_boot_device+0x18a>
    79da:  00020537           lui a0,0x20
    79de:  435000ef           jal ra,8612 <boot0_check_magic>
    79e2:  87aa                 mv a5,a0
    79e4:  cb81                 beqz a5,79f4 <FUN_00007916+0xde>
    79e6:  0f100613           li a2,241
    79ea:  4581                 li a1,0
    79ec:  450d                 li a0,3
    79ee:  23b000ef           jal ra,8428 <rtc_brom_debug>
    79f2:  a86d                 j 7aac <FUN_00007916+0x196>
    79f4:  000207b7           lui a5,0x20
    79f8:  fef43023           sd a5,-32(s0)
    79fc:  fe043783           ld a5,-32(s0)
    7a00:  4b9c                 lw a5,16(a5)
    7a02:  fef42423           sw a5,-24(s0)
    7a06:  fe842783           lw a5,-24(s0)
    7a0a:  1ff7f793           andi a5,a5,511
    7a0e:  2781                 sext.w a5,a5
    7a10:  cb81                 beqz a5,7a20 <FUN_00007916+0x10a>
    7a12:  0f200613           li a2,242
    7a16:  4581                 li a1,0
    7a18:  450d                 li a0,3
    7a1a:  20f000ef           jal ra,8428 <rtc_brom_debug>
    7a1e:  a079                 j 7aac <FUN_00007916+0x196>
    7a20:  fe842783           lw a5,-24(s0)
    7a24:  0087d79b           srliw a5,a5,0x8
    7a28:  2781                 sext.w a5,a5
    7a2a:  fd043703           ld a4,-48(s0)
    7a2e:  863e                 mv a2,a5
    7a30:  000205b7           lui a1,0x20
    7a34:  4501                 li a0,0
    7a36:  9702                 jalr a4
    7a38:  87aa                 mv a5,a0
    7a3a:  873e                 mv a4,a5
    7a3c:  4789                 li a5,2
    7a3e:  00f71963           bne a4,a5,7a50 <FUN_00007916+0x13a>
    7a42:  0f300613           li a2,243
    7a46:  4581                 li a1,0
    7a48:  450d                 li a0,3
    7a4a:  1df000ef           jal ra,8428 <rtc_brom_debug>
    7a4e:  a8b9                 j 7aac <FUN_00007916+0x196>
    7a50:  fe842783           lw a5,-24(s0)
    7a54:  85be                 mv a1,a5
    7a56:  00020537           lui a0,0x20
    7a5a:  45d000ef           jal ra,86b6 <FUN_000086b6>
    7a5e:  87aa                 mv a5,a0
    7a60:  e3a1                 bnez a5,7aa0 <FUN_00007916+0x18a>
    7a62:  000487b7           lui a5,0x48
    7a66:  e107a783           lw a5,-496(a5) # 47e10 <gpio_get_boot_device+0x39a7a>
    7a6a:  c799                 beqz a5,7a78 <FUN_00007916+0x162>
    7a6c:  fd843783           ld a5,-40(s0)
    7a70:  470d                 li a4,3
    7a72:  02e78023           sb a4,32(a5)
    7a76:  a031                 j 7a82 <FUN_00007916+0x16c>
    7a78:  fe043783           ld a5,-32(s0)
    7a7c:  470d                 li a4,3
    7a7e:  02e78423           sb a4,40(a5)
    7a82:  4581                 li a1,0
    7a84:  450d                 li a0,3
    7a86:  7e7010ef           jal ra,9a6c <FUN_00009a6c>
    7a8a:  6785                 lui a5,0x1
    7a8c:  fff78613           addi a2,a5,-1 # fff <FUN_00000f2c+0xd3>
    7a90:  4581                 li a1,0
    7a92:  450d                 li a0,3
    7a94:  195000ef           jal ra,8428 <rtc_brom_debug>
    7a98:  d38ff0ef           jal ra,6fd0 <FUN_00006fd0>
    7a9c:  4781                 li a5,0
    7a9e:  a035                 j 7aca <FUN_00007916+0x1b4>
    7aa0:  0f400613           li a2,244
    7aa4:  4581                 li a1,0
    7aa6:  450d                 li a0,3
    7aa8:  181000ef           jal ra,8428 <rtc_brom_debug>
    7aac:  fec42783           lw a5,-20(s0)
    7ab0:  2785                 addiw a5,a5,1
    7ab2:  fef42623           sw a5,-20(s0)
    7ab6:  fec42783           lw a5,-20(s0)
    7aba:  0007871b           sext.w a4,a5
    7abe:  4785                 li a5,1
    7ac0:  e8e7f4e3           bgeu a5,a4,7948 <FUN_00007916+0x32>
    7ac4:  d0cff0ef           jal ra,6fd0 <FUN_00006fd0>
    7ac8:  57fd                 li a5,-1
    7aca:  853e                 mv a0,a5
    7acc:  70e2                 ld ra,56(sp)
    7ace:  7442                 ld s0,48(sp)
    7ad0:  6121                 addi sp,sp,64
    7ad2:  8082                 ret

0000000000007ad4 <FUN_00007ad4>:
    7ad4:  715d                 addi sp,sp,-80
    7ad6:  e486                 sd ra,72(sp)
    7ad8:  e0a2                 sd s0,64(sp)
    7ada:  0880                 addi s0,sp,80
    7adc:  87aa                 mv a5,a0
    7ade:  faf42e23           sw a5,-68(s0)
    7ae2:  fe042223           sw zero,-28(s0)
    7ae6:  fc043c23           sd zero,-40(s0)
    7aea:  fc043823           sd zero,-48(s0)
    7aee:  fbc42783           lw a5,-68(s0)
    7af2:  853e                 mv a0,a5
    7af4:  be8ff0ef           jal ra,6edc <FUN_00006edc>
    7af8:  488000ef           jal ra,7f80 <brom_config_bit_13>
    7afc:  87aa                 mv a5,a0
    7afe:  e399                 bnez a5,7b04 <FUN_00007ad4+0x30>
    7b00:  dfdff0ef           jal ra,78fc <FUN_000078fc>
    7b04:  fe042623           sw zero,-20(s0)
    7b08:  aadd                 j 7cfe <FUN_00007ad4+0x22a>
    7b0a:  fec42783           lw a5,-20(s0)
    7b0e:  853e                 mv a0,a5
    7b10:  a45ff0ef           jal ra,7554 <FUN_00007554>
    7b14:  fca43423           sd a0,-56(s0)
    7b18:  4785                 li a5,1
    7b1a:  fef42223           sw a5,-28(s0)
    7b1e:  10000793           li a5,256
    7b22:  fef42023           sw a5,-32(s0)
    7b26:  a2c1                 j 7ce6 <FUN_00007ad4+0x212>
    7b28:  fe042783           lw a5,-32(s0)
    7b2c:  fc843703           ld a4,-56(s0)
    7b30:  4605                 li a2,1
    7b32:  000205b7           lui a1,0x20
    7b36:  853e                 mv a0,a5
    7b38:  9702                 jalr a4
    7b3a:  87aa                 mv a5,a0
    7b3c:  873e                 mv a4,a5
    7b3e:  4789                 li a5,2
    7b40:  00f71b63           bne a4,a5,7b56 <FUN_00007ad4+0x82>
    7b44:  fe442783           lw a5,-28(s0)
    7b48:  0f000613           li a2,240
    7b4c:  85be                 mv a1,a5
    7b4e:  450d                 li a0,3
    7b50:  0d9000ef           jal ra,8428 <rtc_brom_debug>
    7b54:  aab5                 j 7cd0 <FUN_00007ad4+0x1fc>
    7b56:  000487b7           lui a5,0x48
    7b5a:  e107a783           lw a5,-496(a5) # 47e10 <gpio_get_boot_device+0x39a7a>
    7b5e:  cbb1                 beqz a5,7bb2 <FUN_00007ad4+0xde>
    7b60:  67b9                 lui a5,0xe
    7b62:  51078593           addi a1,a5,1296 # e510 <gpio_get_boot_device+0x17a>
    7b66:  00020537           lui a0,0x20
    7b6a:  2a9000ef           jal ra,8612 <boot0_check_magic>
    7b6e:  87aa                 mv a5,a0
    7b70:  cb91                 beqz a5,7b84 <FUN_00007ad4+0xb0>
    7b72:  fe442783           lw a5,-28(s0)
    7b76:  0f100613           li a2,241
    7b7a:  85be                 mv a1,a5
    7b7c:  450d                 li a0,3
    7b7e:  0ab000ef           jal ra,8428 <rtc_brom_debug>
    7b82:  a2b9                 j 7cd0 <FUN_00007ad4+0x1fc>
    7b84:  000207b7           lui a5,0x20
    7b88:  fcf43823           sd a5,-48(s0)
    7b8c:  fd043783           ld a5,-48(s0)
    7b90:  01c7c703           lbu a4,28(a5) # 2001c <gpio_get_boot_device+0x11c86>
    7b94:  01d7c683           lbu a3,29(a5)
    7b98:  06a2                 slli a3,a3,0x8
    7b9a:  8f55                 or a4,a4,a3
    7b9c:  01e7c683           lbu a3,30(a5)
    7ba0:  06c2                 slli a3,a3,0x10
    7ba2:  8f55                 or a4,a4,a3
    7ba4:  01f7c783           lbu a5,31(a5)
    7ba8:  07e2                 slli a5,a5,0x18
    7baa:  8fd9                 or a5,a5,a4
    7bac:  fef42423           sw a5,-24(s0)
    7bb0:  a825                 j 7be8 <FUN_00007ad4+0x114>
    7bb2:  67b9                 lui a5,0xe
    7bb4:  52078593           addi a1,a5,1312 # e520 <gpio_get_boot_device+0x18a>
    7bb8:  00020537           lui a0,0x20
    7bbc:  257000ef           jal ra,8612 <boot0_check_magic>
    7bc0:  87aa                 mv a5,a0
    7bc2:  cb91                 beqz a5,7bd6 <FUN_00007ad4+0x102>
    7bc4:  fe442783           lw a5,-28(s0)
    7bc8:  0f100613           li a2,241
    7bcc:  85be                 mv a1,a5
    7bce:  450d                 li a0,3
    7bd0:  059000ef           jal ra,8428 <rtc_brom_debug>
    7bd4:  a8f5                 j 7cd0 <FUN_00007ad4+0x1fc>
    7bd6:  000207b7           lui a5,0x20
    7bda:  fcf43c23           sd a5,-40(s0)
    7bde:  fd843783           ld a5,-40(s0)
    7be2:  4b9c                 lw a5,16(a5)
    7be4:  fef42423           sw a5,-24(s0)
    7be8:  fe842783           lw a5,-24(s0)
    7bec:  1ff7f793           andi a5,a5,511
    7bf0:  2781                 sext.w a5,a5
    7bf2:  cb91                 beqz a5,7c06 <FUN_00007ad4+0x132>
    7bf4:  fe442783           lw a5,-28(s0)
    7bf8:  0f200613           li a2,242
    7bfc:  85be                 mv a1,a5
    7bfe:  450d                 li a0,3
    7c00:  029000ef           jal ra,8428 <rtc_brom_debug>
    7c04:  a0f1                 j 7cd0 <FUN_00007ad4+0x1fc>
    7c06:  fe842783           lw a5,-24(s0)
    7c0a:  0087d79b           srliw a5,a5,0x8
    7c0e:  0007871b           sext.w a4,a5
    7c12:  fe042783           lw a5,-32(s0)
    7c16:  fc843683           ld a3,-56(s0)
    7c1a:  863a                 mv a2,a4
    7c1c:  000205b7           lui a1,0x20
    7c20:  853e                 mv a0,a5
    7c22:  9682                 jalr a3
    7c24:  87aa                 mv a5,a0
    7c26:  873e                 mv a4,a5
    7c28:  4789                 li a5,2
    7c2a:  00f71b63           bne a4,a5,7c40 <FUN_00007ad4+0x16c>
    7c2e:  fe442783           lw a5,-28(s0)
    7c32:  0f300613           li a2,243
    7c36:  85be                 mv a1,a5
    7c38:  450d                 li a0,3
    7c3a:  7ee000ef           jal ra,8428 <rtc_brom_debug>
    7c3e:  a849                 j 7cd0 <FUN_00007ad4+0x1fc>
    7c40:  fe842783           lw a5,-24(s0)
    7c44:  85be                 mv a1,a5
    7c46:  00020537           lui a0,0x20
    7c4a:  26d000ef           jal ra,86b6 <FUN_000086b6>
    7c4e:  87aa                 mv a5,a0
    7c50:  eba5                 bnez a5,7cc0 <FUN_00007ad4+0x1ec>
    7c52:  000487b7           lui a5,0x48
    7c56:  e107a783           lw a5,-496(a5) # 47e10 <gpio_get_boot_device+0x39a7a>
    7c5a:  c395                 beqz a5,7c7e <FUN_00007ad4+0x1aa>
    7c5c:  fe442783           lw a5,-28(s0)
    7c60:  0ff7f793           andi a5,a5,255
    7c64:  0047979b           slliw a5,a5,0x4
    7c68:  0ff7f793           andi a5,a5,255
    7c6c:  0037e793           ori a5,a5,3
    7c70:  0ff7f713           andi a4,a5,255
    7c74:  fd043783           ld a5,-48(s0)
    7c78:  02e78023           sb a4,32(a5)
    7c7c:  a00d                 j 7c9e <FUN_00007ad4+0x1ca>
    7c7e:  fe442783           lw a5,-28(s0)
    7c82:  0ff7f793           andi a5,a5,255
    7c86:  0047979b           slliw a5,a5,0x4
    7c8a:  0ff7f793           andi a5,a5,255
    7c8e:  0037e793           ori a5,a5,3
    7c92:  0ff7f713           andi a4,a5,255
    7c96:  fd843783           ld a5,-40(s0)
    7c9a:  02e78423           sb a4,40(a5)
    7c9e:  4581                 li a1,0
    7ca0:  450d                 li a0,3
    7ca2:  5cb010ef           jal ra,9a6c <FUN_00009a6c>
    7ca6:  fe442703           lw a4,-28(s0)
    7caa:  6785                 lui a5,0x1
    7cac:  fff78613           addi a2,a5,-1 # fff <FUN_00000f2c+0xd3>
    7cb0:  85ba                 mv a1,a4
    7cb2:  450d                 li a0,3
    7cb4:  774000ef           jal ra,8428 <rtc_brom_debug>
    7cb8:  b18ff0ef           jal ra,6fd0 <FUN_00006fd0>
    7cbc:  4781                 li a5,0
    7cbe:  a891                 j 7d12 <FUN_00007ad4+0x23e>
    7cc0:  fe442783           lw a5,-28(s0)
    7cc4:  0f400613           li a2,244
    7cc8:  85be                 mv a1,a5
    7cca:  450d                 li a0,3
    7ccc:  75c000ef           jal ra,8428 <rtc_brom_debug>
    7cd0:  fe442783           lw a5,-28(s0)
    7cd4:  2785                 addiw a5,a5,1
    7cd6:  fef42223           sw a5,-28(s0)
    7cda:  fe042783           lw a5,-32(s0)
    7cde:  1007879b           addiw a5,a5,256
    7ce2:  fef42023           sw a5,-32(s0)
    7ce6:  fe442783           lw a5,-28(s0)
    7cea:  0007871b           sext.w a4,a5
    7cee:  478d                 li a5,3
    7cf0:  e2e7fce3           bgeu a5,a4,7b28 <FUN_00007ad4+0x54>
    7cf4:  fec42783           lw a5,-20(s0)
    7cf8:  2785                 addiw a5,a5,1
    7cfa:  fef42623           sw a5,-20(s0)
    7cfe:  fec42783           lw a5,-20(s0)
    7d02:  0007871b           sext.w a4,a5
    7d06:  4785                 li a5,1
    7d08:  e0e7f1e3           bgeu a5,a4,7b0a <FUN_00007ad4+0x36>
    7d0c:  ac4ff0ef           jal ra,6fd0 <FUN_00006fd0>
    7d10:  57fd                 li a5,-1
    7d12:  853e                 mv a0,a5
    7d14:  60a6                 ld ra,72(sp)
    7d16:  6406                 ld s0,64(sp)
    7d18:  6161                 addi sp,sp,80
    7d1a:  8082                 ret

0000000000007d1c <FUN_00007d1c>:
    7d1c:  1101                 addi sp,sp,-32
    7d1e:  ec06                 sd ra,24(sp)
    7d20:  e822                 sd s0,16(sp)
    7d22:  1000                 addi s0,sp,32
    7d24:  87aa                 mv a5,a0
    7d26:  fef42623           sw a5,-20(s0)
    7d2a:  070907b7           lui a5,0x7090
    7d2e:  31c78513           addi a0,a5,796 # 709031c <gpio_get_boot_device+0x7081f86
    7d32:  656000ef           jal ra,8388 <debug_select_word>
    7d36:  fec42783           lw a5,-20(s0)
    7d3a:  853e                 mv a0,a5
    7d3c:  bdbff0ef           jal ra,7916 <FUN_00007916>
    7d40:  87aa                 mv a5,a0
    7d42:  e399                 bnez a5,7d48 <FUN_00007d1c+0x2c>
    7d44:  4781                 li a5,0
    7d46:  a819                 j 7d5c <FUN_00007d1c+0x40>
    7d48:  fec42783           lw a5,-20(s0)
    7d4c:  853e                 mv a0,a5
    7d4e:  d87ff0ef           jal ra,7ad4 <FUN_00007ad4>
    7d52:  87aa                 mv a5,a0
    7d54:  e399                 bnez a5,7d5a <FUN_00007d1c+0x3e>
    7d56:  4781                 li a5,0
    7d58:  a011                 j 7d5c <FUN_00007d1c+0x40>
    7d5a:  57fd                 li a5,-1
    7d5c:  853e                 mv a0,a5
    7d5e:  60e2                 ld ra,24(sp)
    7d60:  6442                 ld s0,16(sp)
    7d62:  6105                 addi sp,sp,32
    7d64:  8082                 ret

0000000000007d66 <sid_readl>:
    7d66:  7179                 addi sp,sp,-48
    7d68:  f422                 sd s0,40(sp)
    7d6a:  1800                 addi s0,sp,48
    7d6c:  87aa                 mv a5,a0
    7d6e:  fcf42e23           sw a5,-36(s0)
    7d72:  fe042623           sw zero,-20(s0)
    7d76:  fdc46703           lwu a4,-36(s0)
    7d7a:  030067b7           lui a5,0x3006
    7d7e:  20078793           addi a5,a5,512 # 3006200 <gpio_get_boot_device+0x2ff7e6a
    7d82:  97ba                 add a5,a5,a4
    7d84:  439c                 lw a5,0(a5)
    7d86:  fef42623           sw a5,-20(s0)
    7d8a:  fec42783           lw a5,-20(s0)
    7d8e:  853e                 mv a0,a5
    7d90:  7422                 ld s0,40(sp)
    7d92:  6145                 addi sp,sp,48
    7d94:  8082                 ret

0000000000007d96 <FUN_00007d96>:
    7d96:  1101                 addi sp,sp,-32
    7d98:  ec22                 sd s0,24(sp)
    7d9a:  1000                 addi s0,sp,32
    7d9c:  fe042623           sw zero,-20(s0)
    7da0:  030067b7           lui a5,0x3006
    7da4:  0a078793           addi a5,a5,160 # 30060a0 <gpio_get_boot_device+0x2ff7d0a
    7da8:  439c                 lw a5,0(a5)
    7daa:  fef42623           sw a5,-20(s0)
    7dae:  fec42783           lw a5,-20(s0)
    7db2:  853e                 mv a0,a5
    7db4:  6462                 ld s0,24(sp)
    7db6:  6105                 addi sp,sp,32
    7db8:  8082                 ret

0000000000007dba <sid_init_brom_config>:
    7dba:  1101                 addi sp,sp,-32
    7dbc:  ec06                 sd ra,24(sp)
    7dbe:  e822                 sd s0,16(sp)
    7dc0:  1000                 addi s0,sp,32
    7dc2:  fe042623           sw zero,-20(s0)
    7dc6:  fe042423           sw zero,-24(s0)
    7dca:  000487b7           lui a5,0x48
    7dce:  e007a823           sw zero,-496(a5) # 47e10 <gpio_get_boot_device+0x39a7a>
    7dd2:  4541                 li a0,16
    7dd4:  f93ff0ef           jal ra,7d66 <sid_readl>
    7dd8:  87aa                 mv a5,a0
    7dda:  fef42623           sw a5,-20(s0)
    7dde:  fec42703           lw a4,-20(s0)
    7de2:  67c1                 lui a5,0x10
    7de4:  17fd                 addi a5,a5,-1
    7de6:  8ff9                 and a5,a5,a4
    7de8:  0007871b           sext.w a4,a5
    7dec:  000487b7           lui a5,0x48
    7df0:  e2e7a023           sw a4,-480(a5) # 47e20 <gpio_get_boot_device+0x39a8a>
    7df4:  fec42703           lw a4,-20(s0)
    7df8:  800007b7           lui a5,0x80000
    7dfc:  8ff9                 and a5,a5,a4
    7dfe:  0007871b           sext.w a4,a5
    7e02:  000487b7           lui a5,0x48
    7e06:  e0e7a823           sw a4,-496(a5) # 47e10 <gpio_get_boot_device+0x39a7a>
    7e0a:  0001                 nop
    7e0c:  60e2                 ld ra,24(sp)
    7e0e:  6442                 ld s0,16(sp)
    7e10:  6105                 addi sp,sp,32
    7e12:  8082                 ret

0000000000007e14 <sid_get_boot_mode>:
    7e14:  1101                 addi sp,sp,-32
    7e16:  ec06                 sd ra,24(sp)
    7e18:  e822                 sd s0,16(sp)
    7e1a:  1000                 addi s0,sp,32
    7e1c:  fe042623           sw zero,-20(s0)
    7e20:  4541                 li a0,16
    7e22:  f45ff0ef           jal ra,7d66 <sid_readl>
    7e26:  87aa                 mv a5,a0
    7e28:  fef42623           sw a5,-20(s0)
    7e2c:  fec42783           lw a5,-20(s0)
    7e30:  8b85                 andi a5,a5,1
    7e32:  fef42623           sw a5,-20(s0)
    7e36:  fec42783           lw a5,-20(s0)
    7e3a:  853e                 mv a0,a5
    7e3c:  60e2                 ld ra,24(sp)
    7e3e:  6442                 ld s0,16(sp)
    7e40:  6105                 addi sp,sp,32
    7e42:  8082                 ret

0000000000007e44 <brom_config_bit_2>:
    7e44:  1101                 addi sp,sp,-32
    7e46:  ec22                 sd s0,24(sp)
    7e48:  1000                 addi s0,sp,32
    7e4a:  fe042623           sw zero,-20(s0)
    7e4e:  000487b7           lui a5,0x48
    7e52:  e207a783           lw a5,-480(a5) # 47e20 <gpio_get_boot_device+0x39a8a>
    7e56:  8b91                 andi a5,a5,4
    7e58:  2781                 sext.w a5,a5
    7e5a:  c789                 beqz a5,7e64 <brom_config_bit_2+0x20>
    7e5c:  4785                 li a5,1
    7e5e:  fef42623           sw a5,-20(s0)
    7e62:  a019                 j 7e68 <brom_config_bit_2+0x24>
    7e64:  fe042623           sw zero,-20(s0)
    7e68:  fec42783           lw a5,-20(s0)
    7e6c:  853e                 mv a0,a5
    7e6e:  6462                 ld s0,24(sp)
    7e70:  6105                 addi sp,sp,32
    7e72:  8082                 ret

0000000000007e74 <brom_config_skip_cache_setup>:
    7e74:  1101                 addi sp,sp,-32
    7e76:  ec22                 sd s0,24(sp)
    7e78:  1000                 addi s0,sp,32
    7e7a:  fe042623           sw zero,-20(s0)
    7e7e:  000487b7           lui a5,0x48
    7e82:  e207a783           lw a5,-480(a5) # 47e20 <gpio_get_boot_device+0x39a8a>
    7e86:  8ba1                 andi a5,a5,8
    7e88:  2781                 sext.w a5,a5
    7e8a:  c789                 beqz a5,7e94 <brom_config_skip_cache_setup+0x20>
    7e8c:  4785                 li a5,1
    7e8e:  fef42623           sw a5,-20(s0)
    7e92:  a019                 j 7e98 <brom_config_skip_cache_setup+0x24>
    7e94:  fe042623           sw zero,-20(s0)
    7e98:  fec42783           lw a5,-20(s0)
    7e9c:  853e                 mv a0,a5
    7e9e:  6462                 ld s0,24(sp)
    7ea0:  6105                 addi sp,sp,32
    7ea2:  8082                 ret

0000000000007ea4 <brom_config_bit_4>:
    7ea4:  1141                 addi sp,sp,-16
    7ea6:  e422                 sd s0,8(sp)
    7ea8:  0800                 addi s0,sp,16
    7eaa:  000487b7           lui a5,0x48
    7eae:  e207a783           lw a5,-480(a5) # 47e20 <gpio_get_boot_device+0x39a8a>
    7eb2:  8bc1                 andi a5,a5,16
    7eb4:  2781                 sext.w a5,a5
    7eb6:  c399                 beqz a5,7ebc <brom_config_bit_4+0x18>
    7eb8:  4785                 li a5,1
    7eba:  a011                 j 7ebe <brom_config_bit_4+0x1a>
    7ebc:  4781                 li a5,0
    7ebe:  853e                 mv a0,a5
    7ec0:  6422                 ld s0,8(sp)
    7ec2:  0141                 addi sp,sp,16
    7ec4:  8082                 ret

0000000000007ec6 <brom_config_bit_5>:
    7ec6:  1101                 addi sp,sp,-32
    7ec8:  ec22                 sd s0,24(sp)
    7eca:  1000                 addi s0,sp,32
    7ecc:  fe042623           sw zero,-20(s0)
    7ed0:  000487b7           lui a5,0x48
    7ed4:  e207a783           lw a5,-480(a5) # 47e20 <gpio_get_boot_device+0x39a8a>
    7ed8:  0207f793           andi a5,a5,32
    7edc:  2781                 sext.w a5,a5
    7ede:  c789                 beqz a5,7ee8 <brom_config_bit_5+0x22>
    7ee0:  4785                 li a5,1
    7ee2:  fef42623           sw a5,-20(s0)
    7ee6:  a019                 j 7eec <brom_config_bit_5+0x26>
    7ee8:  fe042623           sw zero,-20(s0)
    7eec:  fec42783           lw a5,-20(s0)
    7ef0:  853e                 mv a0,a5
    7ef2:  6462                 ld s0,24(sp)
    7ef4:  6105                 addi sp,sp,32
    7ef6:  8082                 ret

0000000000007ef8 <brom_config_bit_7_switch>:
    7ef8:  1101                 addi sp,sp,-32
    7efa:  ec22                 sd s0,24(sp)
    7efc:  1000                 addi s0,sp,32
    7efe:  57fd                 li a5,-1
    7f00:  fef42623           sw a5,-20(s0)
    7f04:  fe042423           sw zero,-24(s0)
    7f08:  fe042223           sw zero,-28(s0)
    7f0c:  000487b7           lui a5,0x48
    7f10:  e207a783           lw a5,-480(a5) # 47e20 <gpio_get_boot_device+0x39a8a>
    7f14:  0807f793           andi a5,a5,128
    7f18:  2781                 sext.w a5,a5
    7f1a:  c39d                 beqz a5,7f40 <brom_config_bit_7_switch+0x48>
    7f1c:  4785                 li a5,1
    7f1e:  fef42423           sw a5,-24(s0)
    7f22:  03000793           li a5,48
    7f26:  fef42223           sw a5,-28(s0)
    7f2a:  fe842703           lw a4,-24(s0)
    7f2e:  fe442783           lw a5,-28(s0)
    7f32:  02f707bb           mulw a5,a4,a5
    7f36:  fef42623           sw a5,-20(s0)
    7f3a:  fec42783           lw a5,-20(s0)
    7f3e:  a019                 j 7f44 <brom_config_bit_7_switch+0x4c>
    7f40:  02000793           li a5,32
    7f44:  853e                 mv a0,a5
    7f46:  6462                 ld s0,24(sp)
    7f48:  6105                 addi sp,sp,32
    7f4a:  8082                 ret

0000000000007f4c <brom_config_bit_6>:
    7f4c:  1141                 addi sp,sp,-16
    7f4e:  e422                 sd s0,8(sp)
    7f50:  0800                 addi s0,sp,16
    7f52:  000487b7           lui a5,0x48
    7f56:  e207a783           lw a5,-480(a5) # 47e20 <gpio_get_boot_device+0x39a8a>
    7f5a:  0407f793           andi a5,a5,64
    7f5e:  2781                 sext.w a5,a5
    7f60:  c399                 beqz a5,7f66 <brom_config_bit_6+0x1a>
    7f62:  4785                 li a5,1
    7f64:  a011                 j 7f68 <brom_config_bit_6+0x1c>
    7f66:  4781                 li a5,0
    7f68:  853e                 mv a0,a5
    7f6a:  6422                 ld s0,8(sp)
    7f6c:  0141                 addi sp,sp,16
    7f6e:  8082                 ret

0000000000007f70 <FUN_00007f70>:
    7f70:  1141                 addi sp,sp,-16
    7f72:  e422                 sd s0,8(sp)
    7f74:  0800                 addi s0,sp,16
    7f76:  4781                 li a5,0
    7f78:  853e                 mv a0,a5
    7f7a:  6422                 ld s0,8(sp)
    7f7c:  0141                 addi sp,sp,16
    7f7e:  8082                 ret

0000000000007f80 <brom_config_bit_13>:
    7f80:  1141                 addi sp,sp,-16
    7f82:  e422                 sd s0,8(sp)
    7f84:  0800                 addi s0,sp,16
    7f86:  000487b7           lui a5,0x48
    7f8a:  e207a783           lw a5,-480(a5) # 47e20 <gpio_get_boot_device+0x39a8a>
    7f8e:  873e                 mv a4,a5
    7f90:  6789                 lui a5,0x2
    7f92:  8ff9                 and a5,a5,a4
    7f94:  2781                 sext.w a5,a5
    7f96:  c399                 beqz a5,7f9c <brom_config_bit_13+0x1c>
    7f98:  4785                 li a5,1
    7f9a:  a011                 j 7f9e <brom_config_bit_13+0x1e>
    7f9c:  4781                 li a5,0
    7f9e:  853e                 mv a0,a5
    7fa0:  6422                 ld s0,8(sp)
    7fa2:  0141                 addi sp,sp,16
    7fa4:  8082                 ret

0000000000007fa6 <brom_config_lower_ce_freq>:
    7fa6:  1141                 addi sp,sp,-16
    7fa8:  e422                 sd s0,8(sp)
    7faa:  0800                 addi s0,sp,16
    7fac:  000487b7           lui a5,0x48
    7fb0:  e207a783           lw a5,-480(a5) # 47e20 <gpio_get_boot_device+0x39a8a>
    7fb4:  873e                 mv a4,a5
    7fb6:  6791                 lui a5,0x4
    7fb8:  8ff9                 and a5,a5,a4
    7fba:  2781                 sext.w a5,a5
    7fbc:  c399                 beqz a5,7fc2 <brom_config_lower_ce_freq+0x1c>
    7fbe:  4785                 li a5,1
    7fc0:  a011                 j 7fc4 <brom_config_lower_ce_freq+0x1e>
    7fc2:  4781                 li a5,0
    7fc4:  853e                 mv a0,a5
    7fc6:  6422                 ld s0,8(sp)
    7fc8:  0141                 addi sp,sp,16
    7fca:  8082                 ret

0000000000007fcc <brom_config_disable_fel>:
    7fcc:  1141                 addi sp,sp,-16
    7fce:  e422                 sd s0,8(sp)
    7fd0:  0800                 addi s0,sp,16
    7fd2:  000487b7           lui a5,0x48
    7fd6:  e207a783           lw a5,-480(a5) # 47e20 <gpio_get_boot_device+0x39a8a>
    7fda:  2007f793           andi a5,a5,512
    7fde:  2781                 sext.w a5,a5
    7fe0:  c399                 beqz a5,7fe6 <brom_config_disable_fel+0x1a>
    7fe2:  4785                 li a5,1
    7fe4:  a011                 j 7fe8 <brom_config_disable_fel+0x1c>
    7fe6:  4781                 li a5,0
    7fe8:  853e                 mv a0,a5
    7fea:  6422                 ld s0,8(sp)
    7fec:  0141                 addi sp,sp,16
    7fee:  8082                 ret

0000000000007ff0 <FUN_00007ff0>:
    7ff0:  1141                 addi sp,sp,-16
    7ff2:  e422                 sd s0,8(sp)
    7ff4:  0800                 addi s0,sp,16
    7ff6:  4781                 li a5,0
    7ff8:  853e                 mv a0,a5
    7ffa:  6422                 ld s0,8(sp)
    7ffc:  0141                 addi sp,sp,16
    7ffe:  8082                 ret

0000000000008000 <brom_config_bit_10>:
    8000:  1141                 addi sp,sp,-16
    8002:  e422                 sd s0,8(sp)
    8004:  0800                 addi s0,sp,16
    8006:  000487b7           lui a5,0x48
    800a:  e207a783           lw a5,-480(a5) # 47e20 <gpio_get_boot_device+0x39a8a>
    800e:  4007f793           andi a5,a5,1024
    8012:  2781                 sext.w a5,a5
    8014:  c399                 beqz a5,801a <brom_config_bit_10+0x1a>
    8016:  4785                 li a5,1
    8018:  a011                 j 801c <brom_config_bit_10+0x1c>
    801a:  4781                 li a5,0
    801c:  853e                 mv a0,a5
    801e:  6422                 ld s0,8(sp)
    8020:  0141                 addi sp,sp,16
    8022:  8082                 ret

0000000000008024 <brom_config_bit_15>:
    8024:  1141                 addi sp,sp,-16
    8026:  e422                 sd s0,8(sp)
    8028:  0800                 addi s0,sp,16
    802a:  000487b7           lui a5,0x48
    802e:  e207a783           lw a5,-480(a5) # 47e20 <gpio_get_boot_device+0x39a8a>
    8032:  873e                 mv a4,a5
    8034:  67a1                 lui a5,0x8
    8036:  8ff9                 and a5,a5,a4
    8038:  2781                 sext.w a5,a5
    803a:  c399                 beqz a5,8040 <brom_config_bit_15+0x1c>
    803c:  4785                 li a5,1
    803e:  a011                 j 8042 <brom_config_bit_15+0x1e>
    8040:  4781                 li a5,0
    8042:  853e                 mv a0,a5
    8044:  6422                 ld s0,8(sp)
    8046:  0141                 addi sp,sp,16
    8048:  8082                 ret

000000000000804a <brom_config_bit_8>:
    804a:  1141                 addi sp,sp,-16
    804c:  e422                 sd s0,8(sp)
    804e:  0800                 addi s0,sp,16
    8050:  000487b7           lui a5,0x48
    8054:  e207a783           lw a5,-480(a5) # 47e20 <gpio_get_boot_device+0x39a8a>
    8058:  1007f793           andi a5,a5,256
    805c:  2781                 sext.w a5,a5
    805e:  c399                 beqz a5,8064 <brom_config_bit_8+0x1a>
    8060:  4785                 li a5,1
    8062:  a011                 j 8066 <brom_config_bit_8+0x1c>
    8064:  4781                 li a5,0
    8066:  853e                 mv a0,a5
    8068:  6422                 ld s0,8(sp)
    806a:  0141                 addi sp,sp,16
    806c:  8082                 ret

000000000000806e <brom_config_bit_1>:
    806e:  1141                 addi sp,sp,-16
    8070:  e422                 sd s0,8(sp)
    8072:  0800                 addi s0,sp,16
    8074:  000487b7           lui a5,0x48
    8078:  e207a783           lw a5,-480(a5) # 47e20 <gpio_get_boot_device+0x39a8a>
    807c:  8b89                 andi a5,a5,2
    807e:  2781                 sext.w a5,a5
    8080:  c399                 beqz a5,8086 <brom_config_bit_1+0x18>
    8082:  4785                 li a5,1
    8084:  a011                 j 8088 <brom_config_bit_1+0x1a>
    8086:  4781                 li a5,0
    8088:  853e                 mv a0,a5
    808a:  6422                 ld s0,8(sp)
    808c:  0141                 addi sp,sp,16
    808e:  8082                 ret

0000000000008090 <brom_config_bit_12>:
    8090:  1141                 addi sp,sp,-16
    8092:  e422                 sd s0,8(sp)
    8094:  0800                 addi s0,sp,16
    8096:  000487b7           lui a5,0x48
    809a:  e207a783           lw a5,-480(a5) # 47e20 <gpio_get_boot_device+0x39a8a>
    809e:  873e                 mv a4,a5
    80a0:  6785                 lui a5,0x1
    80a2:  8ff9                 and a5,a5,a4
    80a4:  2781                 sext.w a5,a5
    80a6:  c399                 beqz a5,80ac <brom_config_bit_12+0x1c>
    80a8:  4785                 li a5,1
    80aa:  a011                 j 80ae <brom_config_bit_12+0x1e>
    80ac:  4781                 li a5,0
    80ae:  853e                 mv a0,a5
    80b0:  6422                 ld s0,8(sp)
    80b2:  0141                 addi sp,sp,16
    80b4:  8082                 ret

00000000000080b6 <sid_get_boot_device>:
    80b6:  7179                 addi sp,sp,-48
    80b8:  f406                 sd ra,40(sp)
    80ba:  f022                 sd s0,32(sp)
    80bc:  1800                 addi s0,sp,48
    80be:  fe042623           sw zero,-20(s0)
    80c2:  479d                 li a5,7
    80c4:  fef42023           sw a5,-32(s0)
    80c8:  fc042e23           sw zero,-36(s0)
    80cc:  fe042423           sw zero,-24(s0)
    80d0:  fc042c23           sw zero,-40(s0)
    80d4:  4785                 li a5,1
    80d6:  fef403a3           sb a5,-25(s0)
    80da:  4541                 li a0,16
    80dc:  c8bff0ef           jal ra,7d66 <sid_readl>
    80e0:  87aa                 mv a5,a0
    80e2:  fcf42c23           sw a5,-40(s0)
    80e6:  fd842783           lw a5,-40(s0)
    80ea:  0107d79b           srliw a5,a5,0x10
    80ee:  2781                 sext.w a5,a5
    80f0:  873e                 mv a4,a5
    80f2:  6785                 lui a5,0x1
    80f4:  17fd                 addi a5,a5,-1
    80f6:  8ff9                 and a5,a5,a4
    80f8:  fcf42c23           sw a5,-40(s0)
    80fc:  fd842783           lw a5,-40(s0)
    8100:  fef42423           sw a5,-24(s0)
    8104:  fe842703           lw a4,-24(s0)
    8108:  fe042783           lw a5,-32(s0)
    810c:  8ff9                 and a5,a5,a4
    810e:  fcf42e23           sw a5,-36(s0)
    8112:  fdc42783           lw a5,-36(s0)
    8116:  0007871b           sext.w a4,a5
    811a:  479d                 li a5,7
    811c:  08f71a63           bne a4,a5,81b0 <sid_get_boot_device+0xfa>
    8120:  fe744783           lbu a5,-25(s0)
    8124:  0ff7f713           andi a4,a5,255
    8128:  478d                 li a5,3
    812a:  08e7e363           bltu a5,a4,81b0 <sid_get_boot_device+0xfa>
    812e:  fe744783           lbu a5,-25(s0)
    8132:  0ff7f713           andi a4,a5,255
    8136:  4785                 li a5,1
    8138:  02f71163           bne a4,a5,815a <sid_get_boot_device+0xa4>
    813c:  fd842783           lw a5,-40(s0)
    8140:  0037d79b           srliw a5,a5,0x3
    8144:  2781                 sext.w a5,a5
    8146:  1ff7f793           andi a5,a5,511
    814a:  fef42423           sw a5,-24(s0)
    814e:  fe744783           lbu a5,-25(s0)
    8152:  2785                 addiw a5,a5,1
    8154:  fef403a3           sb a5,-25(s0)
    8158:  b775                 j 8104 <sid_get_boot_device+0x4e>
    815a:  fe744783           lbu a5,-25(s0)
    815e:  0ff7f713           andi a4,a5,255
    8162:  4789                 li a5,2
    8164:  02f71163           bne a4,a5,8186 <sid_get_boot_device+0xd0>
    8168:  fd842783           lw a5,-40(s0)
    816c:  0067d79b           srliw a5,a5,0x6
    8170:  2781                 sext.w a5,a5
    8172:  03f7f793           andi a5,a5,63
    8176:  fef42423           sw a5,-24(s0)
    817a:  fe744783           lbu a5,-25(s0)
    817e:  2785                 addiw a5,a5,1
    8180:  fef403a3           sb a5,-25(s0)
    8184:  b741                 j 8104 <sid_get_boot_device+0x4e>
    8186:  fe744783           lbu a5,-25(s0)
    818a:  0ff7f713           andi a4,a5,255
    818e:  478d                 li a5,3
    8190:  0af71263           bne a4,a5,8234 <sid_get_boot_device+0x17e>
    8194:  fd842783           lw a5,-40(s0)
    8198:  0097d79b           srliw a5,a5,0x9
    819c:  2781                 sext.w a5,a5
    819e:  8b9d                 andi a5,a5,7
    81a0:  fef42423           sw a5,-24(s0)
    81a4:  fe744783           lbu a5,-25(s0)
    81a8:  2785                 addiw a5,a5,1
    81aa:  fef403a3           sb a5,-25(s0)
    81ae:  bf99                 j 8104 <sid_get_boot_device+0x4e>
    81b0:  fdc42783           lw a5,-36(s0)
    81b4:  0007871b           sext.w a4,a5
    81b8:  479d                 li a5,7
    81ba:  04e7eb63           bltu a5,a4,8210 <sid_get_boot_device+0x15a>
    81be:  fdc46783           lwu a5,-36(s0)
    81c2:  00279713           slli a4,a5,0x2
    81c6:  67b9                 lui a5,0xe
    81c8:  52c78793           addi a5,a5,1324 # e52c <gpio_get_boot_device+0x196>
    81cc:  97ba                 add a5,a5,a4
    81ce:  439c                 lw a5,0(a5)
    81d0:  8782                 jr a5
    81d2:  fe042623           sw zero,-20(s0)
    81d6:  a835                 j 8212 <sid_get_boot_device+0x15c>
    81d8:  4785                 li a5,1
    81da:  fef42623           sw a5,-20(s0)
    81de:  a815                 j 8212 <sid_get_boot_device+0x15c>
    81e0:  4789                 li a5,2
    81e2:  fef42623           sw a5,-20(s0)
    81e6:  a035                 j 8212 <sid_get_boot_device+0x15c>
    81e8:  478d                 li a5,3
    81ea:  fef42623           sw a5,-20(s0)
    81ee:  a015                 j 8212 <sid_get_boot_device+0x15c>
    81f0:  4791                 li a5,4
    81f2:  fef42623           sw a5,-20(s0)
    81f6:  a831                 j 8212 <sid_get_boot_device+0x15c>
    81f8:  4795                 li a5,5
    81fa:  fef42623           sw a5,-20(s0)
    81fe:  a811                 j 8212 <sid_get_boot_device+0x15c>
    8200:  4799                 li a5,6
    8202:  fef42623           sw a5,-20(s0)
    8206:  a031                 j 8212 <sid_get_boot_device+0x15c>
    8208:  479d                 li a5,7
    820a:  fef42623           sw a5,-20(s0)
    820e:  a011                 j 8212 <sid_get_boot_device+0x15c>
    8210:  0001                 nop
    8212:  fe744783           lbu a5,-25(s0)
    8216:  0ff7f713           andi a4,a5,255
    821a:  4791                 li a5,4
    821c:  00f71d63           bne a4,a5,8236 <sid_get_boot_device+0x180>
    8220:  fec42783           lw a5,-20(s0)
    8224:  0007871b           sext.w a4,a5
    8228:  479d                 li a5,7
    822a:  00f71663           bne a4,a5,8236 <sid_get_boot_device+0x180>
    822e:  fe042623           sw zero,-20(s0)
    8232:  a011                 j 8236 <sid_get_boot_device+0x180>
    8234:  0001                 nop
    8236:  fec42783           lw a5,-20(s0)
    823a:  853e                 mv a0,a5
    823c:  70a2                 ld ra,40(sp)
    823e:  7402                 ld s0,32(sp)
    8240:  6145                 addi sp,sp,48
    8242:  8082                 ret

0000000000008244 <debug_state_save>:
    8244:  7179                 addi sp,sp,-48
    8246:  f422                 sd s0,40(sp)
    8248:  1800                 addi s0,sp,48
    824a:  87aa                 mv a5,a0
    824c:  872e                 mv a4,a1
    824e:  fcf42e23           sw a5,-36(s0)
    8252:  87ba                 mv a5,a4
    8254:  fcf42c23           sw a5,-40(s0)
    8258:  fe042623           sw zero,-20(s0)
    825c:  fe042423           sw zero,-24(s0)
    8260:  070907b7           lui a5,0x7090
    8264:  30478793           addi a5,a5,772 # 7090304 <gpio_get_boot_device+0x7081f6e
    8268:  439c                 lw a5,0(a5)
    826a:  fef42623           sw a5,-20(s0)
    826e:  fec42703           lw a4,-20(s0)
    8272:  67a1                 lui a5,0x8
    8274:  8ff9                 and a5,a5,a4
    8276:  fef42423           sw a5,-24(s0)
    827a:  fe842783           lw a5,-24(s0)
    827e:  2781                 sext.w a5,a5
    8280:  cfad                 beqz a5,82fa <debug_state_save+0xb6>
    8282:  fdc42783           lw a5,-36(s0)
    8286:  2781                 sext.w a5,a5
    8288:  cb8d                 beqz a5,82ba <debug_state_save+0x76>
    828a:  fec42703           lw a4,-20(s0)
    828e:  77e1                 lui a5,0xffff8
    8290:  8ff9                 and a5,a5,a4
    8292:  fef42623           sw a5,-20(s0)
    8296:  fdc42783           lw a5,-36(s0)
    829a:  0087979b           slliw a5,a5,0x8
    829e:  0007871b           sext.w a4,a5
    82a2:  fec42783           lw a5,-20(s0)
    82a6:  8fd9                 or a5,a5,a4
    82a8:  fef42623           sw a5,-20(s0)
    82ac:  070907b7           lui a5,0x7090
    82b0:  30478793           addi a5,a5,772 # 7090304 <gpio_get_boot_device+0x7081f6e
    82b4:  fec42703           lw a4,-20(s0)
    82b8:  c398                 sw a4,0(a5)
    82ba:  fd842783           lw a5,-40(s0)
    82be:  2781                 sext.w a5,a5
    82c0:  c3e1                 beqz a5,8380 <debug_state_save+0x13c>
    82c2:  070907b7           lui a5,0x7090
    82c6:  30478793           addi a5,a5,772 # 7090304 <gpio_get_boot_device+0x7081f6e
    82ca:  439c                 lw a5,0(a5)
    82cc:  fef42623           sw a5,-20(s0)
    82d0:  fec42783           lw a5,-20(s0)
    82d4:  f007f793           andi a5,a5,-256
    82d8:  fef42623           sw a5,-20(s0)
    82dc:  fec42703           lw a4,-20(s0)
    82e0:  fd842783           lw a5,-40(s0)
    82e4:  8fd9                 or a5,a5,a4
    82e6:  fef42623           sw a5,-20(s0)
    82ea:  070907b7           lui a5,0x7090
    82ee:  30478793           addi a5,a5,772 # 7090304 <gpio_get_boot_device+0x7081f6e
    82f2:  fec42703           lw a4,-20(s0)
    82f6:  c398                 sw a4,0(a5)
    82f8:  a061                 j 8380 <debug_state_save+0x13c>
    82fa:  fdc42783           lw a5,-36(s0)
    82fe:  2781                 sext.w a5,a5
    8300:  cb9d                 beqz a5,8336 <debug_state_save+0xf2>
    8302:  fec42703           lw a4,-20(s0)
    8306:  800107b7           lui a5,0x80010
    830a:  17fd                 addi a5,a5,-1
    830c:  8ff9                 and a5,a5,a4
    830e:  fef42623           sw a5,-20(s0)
    8312:  fdc42783           lw a5,-36(s0)
    8316:  0187979b           slliw a5,a5,0x18
    831a:  0007871b           sext.w a4,a5
    831e:  fec42783           lw a5,-20(s0)
    8322:  8fd9                 or a5,a5,a4
    8324:  fef42623           sw a5,-20(s0)
    8328:  070907b7           lui a5,0x7090
    832c:  30478793           addi a5,a5,772 # 7090304 <gpio_get_boot_device+0x7081f6e
    8330:  fec42703           lw a4,-20(s0)
    8334:  c398                 sw a4,0(a5)
    8336:  fd842783           lw a5,-40(s0)
    833a:  2781                 sext.w a5,a5
    833c:  c3b1                 beqz a5,8380 <debug_state_save+0x13c>
    833e:  070907b7           lui a5,0x7090
    8342:  30478793           addi a5,a5,772 # 7090304 <gpio_get_boot_device+0x7081f6e
    8346:  439c                 lw a5,0(a5)
    8348:  fef42623           sw a5,-20(s0)
    834c:  fec42703           lw a4,-20(s0)
    8350:  ff0107b7           lui a5,0xff010
    8354:  17fd                 addi a5,a5,-1
    8356:  8ff9                 and a5,a5,a4
    8358:  fef42623           sw a5,-20(s0)
    835c:  fd842783           lw a5,-40(s0)
    8360:  0107979b           slliw a5,a5,0x10
    8364:  0007871b           sext.w a4,a5
    8368:  fec42783           lw a5,-20(s0)
    836c:  8fd9                 or a5,a5,a4
    836e:  fef42623           sw a5,-20(s0)
    8372:  070907b7           lui a5,0x7090
    8376:  30478793           addi a5,a5,772 # 7090304 <gpio_get_boot_device+0x7081f6e
    837a:  fec42703           lw a4,-20(s0)
    837e:  c398                 sw a4,0(a5)
    8380:  0001                 nop
    8382:  7422                 ld s0,40(sp)
    8384:  6145                 addi sp,sp,48
    8386:  8082                 ret

0000000000008388 <debug_select_word>:
    8388:  7179                 addi sp,sp,-48
    838a:  f422                 sd s0,40(sp)
    838c:  1800                 addi s0,sp,48
    838e:  87aa                 mv a5,a0
    8390:  fcf42e23           sw a5,-36(s0)
    8394:  fe042623           sw zero,-20(s0)
    8398:  fe042423           sw zero,-24(s0)
    839c:  fdc46783           lwu a5,-36(s0)
    83a0:  439c                 lw a5,0(a5)
    83a2:  fef42623           sw a5,-20(s0)
    83a6:  fec42783           lw a5,-20(s0)
    83aa:  2781                 sext.w a5,a5
    83ac:  ef91                 bnez a5,83c8 <debug_select_word+0x40>
    83ae:  fec42703           lw a4,-20(s0)
    83b2:  67a1                 lui a5,0x8
    83b4:  8fd9                 or a5,a5,a4
    83b6:  fef42623           sw a5,-20(s0)
    83ba:  fdc46783           lwu a5,-36(s0)
    83be:  873e                 mv a4,a5
    83c0:  fec42783           lw a5,-20(s0)
    83c4:  c31c                 sw a5,0(a4)
    83c6:  a8b1                 j 8422 <debug_select_word+0x9a>
    83c8:  fec42703           lw a4,-20(s0)
    83cc:  67a1                 lui a5,0x8
    83ce:  8ff9                 and a5,a5,a4
    83d0:  fef42423           sw a5,-24(s0)
    83d4:  fe842783           lw a5,-24(s0)
    83d8:  2781                 sext.w a5,a5
    83da:  c38d                 beqz a5,83fc <debug_select_word+0x74>
    83dc:  fec42703           lw a4,-20(s0)
    83e0:  f80087b7           lui a5,0xf8008
    83e4:  17fd                 addi a5,a5,-1
    83e6:  8ff9                 and a5,a5,a4
    83e8:  fef42623           sw a5,-20(s0)
    83ec:  fec42703           lw a4,-20(s0)
    83f0:  800007b7           lui a5,0x80000
    83f4:  8fd9                 or a5,a5,a4
    83f6:  fef42623           sw a5,-20(s0)
    83fa:  a831                 j 8416 <debug_select_word+0x8e>
    83fc:  fec42703           lw a4,-20(s0)
    8400:  7fff87b7           lui a5,0x7fff8
    8404:  8ff9                 and a5,a5,a4
    8406:  fef42623           sw a5,-20(s0)
    840a:  fec42703           lw a4,-20(s0)
    840e:  67a1                 lui a5,0x8
    8410:  8fd9                 or a5,a5,a4
    8412:  fef42623           sw a5,-20(s0)
    8416:  fdc46783           lwu a5,-36(s0)
    841a:  873e                 mv a4,a5
    841c:  fec42783           lw a5,-20(s0)
    8420:  c31c                 sw a5,0(a4)
    8422:  7422                 ld s0,40(sp)
    8424:  6145                 addi sp,sp,48
    8426:  8082                 ret

0000000000008428 <rtc_brom_debug>:
    8428:  7179                 addi sp,sp,-48
    842a:  f422                 sd s0,40(sp)
    842c:  1800                 addi s0,sp,48
    842e:  87aa                 mv a5,a0
    8430:  86ae                 mv a3,a1
    8432:  8732                 mv a4,a2
    8434:  fcf42e23           sw a5,-36(s0)
    8438:  87b6                 mv a5,a3
    843a:  fcf42c23           sw a5,-40(s0)
    843e:  87ba                 mv a5,a4
    8440:  fcf42a23           sw a5,-44(s0)
    8444:  fe042423           sw zero,-24(s0)
    8448:  fe042223           sw zero,-28(s0)
    844c:  070907b7           lui a5,0x7090
    8450:  31c7879b           addiw a5,a5,796
    8454:  fef42623           sw a5,-20(s0)
    8458:  fdc42783           lw a5,-36(s0)
    845c:  0007871b           sext.w a4,a5
    8460:  478d                 li a5,3
    8462:  00f71963           bne a4,a5,8474 <rtc_brom_debug+0x4c>
    8466:  070907b7           lui a5,0x7090
    846a:  31c7879b           addiw a5,a5,796
    846e:  fef42623           sw a5,-20(s0)
    8472:  a8b1                 j 84ce <rtc_brom_debug+0xa6>
    8474:  fdc42783           lw a5,-36(s0)
    8478:  0007871b           sext.w a4,a5
    847c:  4791                 li a5,4
    847e:  00f71963           bne a4,a5,8490 <rtc_brom_debug+0x68>
    8482:  070907b7           lui a5,0x7090
    8486:  3207879b           addiw a5,a5,800
    848a:  fef42623           sw a5,-20(s0)
    848e:  a081                 j 84ce <rtc_brom_debug+0xa6>
    8490:  fdc42783           lw a5,-36(s0)
    8494:  0007871b           sext.w a4,a5
    8498:  4795                 li a5,5
    849a:  00f71963           bne a4,a5,84ac <rtc_brom_debug+0x84>
    849e:  070907b7           lui a5,0x7090
    84a2:  3187879b           addiw a5,a5,792
    84a6:  fef42623           sw a5,-20(s0)
    84aa:  a015                 j 84ce <rtc_brom_debug+0xa6>
    84ac:  fdc42783           lw a5,-36(s0)
    84b0:  0007871b           sext.w a4,a5
    84b4:  4789                 li a5,2
    84b6:  00f70663           beq a4,a5,84c2 <rtc_brom_debug+0x9a>
    84ba:  fdc42783           lw a5,-36(s0)
    84be:  2781                 sext.w a5,a5
    84c0:  e799                 bnez a5,84ce <rtc_brom_debug+0xa6>
    84c2:  070907b7           lui a5,0x7090
    84c6:  3147879b           addiw a5,a5,788
    84ca:  fef42623           sw a5,-20(s0)
    84ce:  fec46783           lwu a5,-20(s0)
    84d2:  439c                 lw a5,0(a5)
    84d4:  fef42423           sw a5,-24(s0)
    84d8:  fe842703           lw a4,-24(s0)
    84dc:  67a1                 lui a5,0x8
    84de:  8ff9                 and a5,a5,a4
    84e0:  fef42223           sw a5,-28(s0)
    84e4:  fe442783           lw a5,-28(s0)
    84e8:  2781                 sext.w a5,a5
    84ea:  c7c9                 beqz a5,8574 <rtc_brom_debug+0x14c>
    84ec:  fd842783           lw a5,-40(s0)
    84f0:  0007871b           sext.w a4,a5
    84f4:  00eff7b7           lui a5,0xeff
    84f8:  80078793           addi a5,a5,-2048 # efe800 <gpio_get_boot_device+0xef046a
    84fc:  02f70963           beq a4,a5,852e <rtc_brom_debug+0x106>
    8500:  fe842703           lw a4,-24(s0)
    8504:  77e1                 lui a5,0xffff8
    8506:  8ff9                 and a5,a5,a4
    8508:  fef42423           sw a5,-24(s0)
    850c:  fd842783           lw a5,-40(s0)
    8510:  00c7979b           slliw a5,a5,0xc
    8514:  0007871b           sext.w a4,a5
    8518:  fe842783           lw a5,-24(s0)
    851c:  8fd9                 or a5,a5,a4
    851e:  fef42423           sw a5,-24(s0)
    8522:  fec46783           lwu a5,-20(s0)
    8526:  873e                 mv a4,a5
    8528:  fe842783           lw a5,-24(s0)
    852c:  c31c                 sw a5,0(a4)
    852e:  fd442783           lw a5,-44(s0)
    8532:  0007871b           sext.w a4,a5
    8536:  00eff7b7           lui a5,0xeff
    853a:  80078793           addi a5,a5,-2048 # efe800 <gpio_get_boot_device+0xef046a
    853e:  0cf70663           beq a4,a5,860a <rtc_brom_debug+0x1e2>
    8542:  fec46783           lwu a5,-20(s0)
    8546:  439c                 lw a5,0(a5)
    8548:  fef42423           sw a5,-24(s0)
    854c:  fe842703           lw a4,-24(s0)
    8550:  77fd                 lui a5,0xfffff
    8552:  8ff9                 and a5,a5,a4
    8554:  fef42423           sw a5,-24(s0)
    8558:  fe842703           lw a4,-24(s0)
    855c:  fd442783           lw a5,-44(s0)
    8560:  8fd9                 or a5,a5,a4
    8562:  fef42423           sw a5,-24(s0)
    8566:  fec46783           lwu a5,-20(s0)
    856a:  873e                 mv a4,a5
    856c:  fe842783           lw a5,-24(s0)
    8570:  c31c                 sw a5,0(a4)
    8572:  a861                 j 860a <rtc_brom_debug+0x1e2>
    8574:  fd842783           lw a5,-40(s0)
    8578:  0007871b           sext.w a4,a5
    857c:  00eff7b7           lui a5,0xeff
    8580:  80078793           addi a5,a5,-2048 # efe800 <gpio_get_boot_device+0xef046a
    8584:  02f70b63           beq a4,a5,85ba <rtc_brom_debug+0x192>
    8588:  fe842703           lw a4,-24(s0)
    858c:  800107b7           lui a5,0x80010
    8590:  17fd                 addi a5,a5,-1
    8592:  8ff9                 and a5,a5,a4
    8594:  fef42423           sw a5,-24(s0)
    8598:  fd842783           lw a5,-40(s0)
    859c:  01c7979b           slliw a5,a5,0x1c
    85a0:  0007871b           sext.w a4,a5
    85a4:  fe842783           lw a5,-24(s0)
    85a8:  8fd9                 or a5,a5,a4
    85aa:  fef42423           sw a5,-24(s0)
    85ae:  fec46783           lwu a5,-20(s0)
    85b2:  873e                 mv a4,a5
    85b4:  fe842783           lw a5,-24(s0)
    85b8:  c31c                 sw a5,0(a4)
    85ba:  fd442783           lw a5,-44(s0)
    85be:  0007871b           sext.w a4,a5
    85c2:  00eff7b7           lui a5,0xeff
    85c6:  80078793           addi a5,a5,-2048 # efe800 <gpio_get_boot_device+0xef046a
    85ca:  04f70063           beq a4,a5,860a <rtc_brom_debug+0x1e2>
    85ce:  fec46783           lwu a5,-20(s0)
    85d2:  439c                 lw a5,0(a5)
    85d4:  fef42423           sw a5,-24(s0)
    85d8:  fe842703           lw a4,-24(s0)
    85dc:  f00107b7           lui a5,0xf0010
    85e0:  17fd                 addi a5,a5,-1
    85e2:  8ff9                 and a5,a5,a4
    85e4:  fef42423           sw a5,-24(s0)
    85e8:  fd442783           lw a5,-44(s0)
    85ec:  0107979b           slliw a5,a5,0x10
    85f0:  0007871b           sext.w a4,a5
    85f4:  fe842783           lw a5,-24(s0)
    85f8:  8fd9                 or a5,a5,a4
    85fa:  fef42423           sw a5,-24(s0)
    85fe:  fec46783           lwu a5,-20(s0)
    8602:  873e                 mv a4,a5
    8604:  fe842783           lw a5,-24(s0)
    8608:  c31c                 sw a5,0(a4)
    860a:  0001                 nop
    860c:  7422                 ld s0,40(sp)
    860e:  6145                 addi sp,sp,48
    8610:  8082                 ret

0000000000008612 <boot0_check_magic>:
    8612:  7139                 addi sp,sp,-64
    8614:  fc22                 sd s0,56(sp)
    8616:  0080                 addi s0,sp,64
    8618:  fca43423           sd a0,-56(s0)
    861c:  fcb43023           sd a1,-64(s0)
    8620:  fc043c23           sd zero,-40(s0)
    8624:  fc043823           sd zero,-48(s0)
    8628:  000487b7           lui a5,0x48
    862c:  e107a783           lw a5,-496(a5) # 47e10 <gpio_get_boot_device+0x39a7a>
    8630:  cf89                 beqz a5,864a <boot0_check_magic+0x38>
    8632:  fc843783           ld a5,-56(s0)
    8636:  fcf43823           sd a5,-48(s0)
    863a:  fd043783           ld a5,-48(s0)
    863e:  fef43023           sd a5,-32(s0)
    8642:  47a1                 li a5,8
    8644:  fef42423           sw a5,-24(s0)
    8648:  a829                 j 8662 <boot0_check_magic+0x50>
    864a:  fc843783           ld a5,-56(s0)
    864e:  fcf43c23           sd a5,-40(s0)
    8652:  fd843783           ld a5,-40(s0)
    8656:  0791                 addi a5,a5,4
    8658:  fef43023           sd a5,-32(s0)
    865c:  47a1                 li a5,8
    865e:  fef42423           sw a5,-24(s0)
    8662:  fe042623           sw zero,-20(s0)
    8666:  a81d                 j 869c <boot0_check_magic+0x8a>
    8668:  fe043783           ld a5,-32(s0)
    866c:  00178713           addi a4,a5,1
    8670:  fee43023           sd a4,-32(s0)
    8674:  0007c683           lbu a3,0(a5)
    8678:  fc043783           ld a5,-64(s0)
    867c:  00178713           addi a4,a5,1
    8680:  fce43023           sd a4,-64(s0)
    8684:  0007c783           lbu a5,0(a5)
    8688:  8736                 mv a4,a3
    868a:  00f70463           beq a4,a5,8692 <boot0_check_magic+0x80>
    868e:  4785                 li a5,1
    8690:  a839                 j 86ae <boot0_check_magic+0x9c>
    8692:  fec42783           lw a5,-20(s0)
    8696:  2785                 addiw a5,a5,1
    8698:  fef42623           sw a5,-20(s0)
    869c:  fec42703           lw a4,-20(s0)
    86a0:  fe842783           lw a5,-24(s0)
    86a4:  2701                 sext.w a4,a4
    86a6:  2781                 sext.w a5,a5
    86a8:  fcf760e3           bltu a4,a5,8668 <boot0_check_magic+0x56>
    86ac:  4781                 li a5,0
    86ae:  853e                 mv a0,a5
    86b0:  7462                 ld s0,56(sp)
    86b2:  6121                 addi sp,sp,64
    86b4:  8082                 ret

00000000000086b6 <FUN_000086b6>:
    86b6:  715d                 addi sp,sp,-80
    86b8:  e4a2                 sd s0,72(sp)
    86ba:  0880                 addi s0,sp,80
    86bc:  faa43c23           sd a0,-72(s0)
    86c0:  87ae                 mv a5,a1
    86c2:  faf42a23           sw a5,-76(s0)
    86c6:  fc043823           sd zero,-48(s0)
    86ca:  fc043423           sd zero,-56(s0)
    86ce:  000487b7           lui a5,0x48
    86d2:  e107a783           lw a5,-496(a5) # 47e10 <gpio_get_boot_device+0x39a7a>
    86d6:  c7b5                 beqz a5,8742 <FUN_000086b6+0x8c>
    86d8:  fb843783           ld a5,-72(s0)
    86dc:  fcf43423           sd a5,-56(s0)
    86e0:  fc843783           ld a5,-56(s0)
    86e4:  00c7c703           lbu a4,12(a5)
    86e8:  00d7c683           lbu a3,13(a5)
    86ec:  06a2                 slli a3,a3,0x8
    86ee:  8f55                 or a4,a4,a3
    86f0:  00e7c683           lbu a3,14(a5)
    86f4:  06c2                 slli a3,a3,0x10
    86f6:  8f55                 or a4,a4,a3
    86f8:  00f7c783           lbu a5,15(a5)
    86fc:  07e2                 slli a5,a5,0x18
    86fe:  8fd9                 or a5,a5,a4
    8700:  fef42023           sw a5,-32(s0)
    8704:  fc843783           ld a5,-56(s0)
    8708:  00c7c703           lbu a4,12(a5)
    870c:  8b01                 andi a4,a4,0
    870e:  03976713           ori a4,a4,57
    8712:  00e78623           sb a4,12(a5)
    8716:  00d7c703           lbu a4,13(a5)
    871a:  8b01                 andi a4,a4,0
    871c:  06c76713           ori a4,a4,108
    8720:  00e786a3           sb a4,13(a5)
    8724:  00e7c703           lbu a4,14(a5)
    8728:  8b01                 andi a4,a4,0
    872a:  00a76713           ori a4,a4,10
    872e:  00e78723           sb a4,14(a5)
    8732:  00f7c703           lbu a4,15(a5)
    8736:  8b01                 andi a4,a4,0
    8738:  05f76713           ori a4,a4,95
    873c:  00e787a3           sb a4,15(a5)
    8740:  a00d                 j 8762 <FUN_000086b6+0xac>
    8742:  fb843783           ld a5,-72(s0)
    8746:  fcf43823           sd a5,-48(s0)
    874a:  fd043783           ld a5,-48(s0)
    874e:  47dc                 lw a5,12(a5)
    8750:  fef42023           sw a5,-32(s0)
    8754:  fd043783           ld a5,-48(s0)
    8758:  5f0a7737           lui a4,0x5f0a7
    875c:  c397071b           addiw a4,a4,-967
    8760:  c7d8                 sw a4,12(a5)
    8762:  fb442783           lw a5,-76(s0)
    8766:  0027d79b           srliw a5,a5,0x2
    876a:  fef42223           sw a5,-28(s0)
    876e:  fc042e23           sw zero,-36(s0)
    8772:  fb843783           ld a5,-72(s0)
    8776:  fef43423           sd a5,-24(s0)
    877a:  fe843783           ld a5,-24(s0)
    877e:  00478713           addi a4,a5,4
    8782:  fee43423           sd a4,-24(s0)
    8786:  439c                 lw a5,0(a5)
    8788:  fdc42703           lw a4,-36(s0)
    878c:  9fb9                 addw a5,a5,a4
    878e:  fcf42e23           sw a5,-36(s0)
    8792:  fe843783           ld a5,-24(s0)
    8796:  00478713           addi a4,a5,4
    879a:  fee43423           sd a4,-24(s0)
    879e:  439c                 lw a5,0(a5)
    87a0:  fdc42703           lw a4,-36(s0)
    87a4:  9fb9                 addw a5,a5,a4
    87a6:  fcf42e23           sw a5,-36(s0)
    87aa:  fe843783           ld a5,-24(s0)
    87ae:  00478713           addi a4,a5,4
    87b2:  fee43423           sd a4,-24(s0)
    87b6:  439c                 lw a5,0(a5)
    87b8:  fdc42703           lw a4,-36(s0)
    87bc:  9fb9                 addw a5,a5,a4
    87be:  fcf42e23           sw a5,-36(s0)
    87c2:  fe843783           ld a5,-24(s0)
    87c6:  00478713           addi a4,a5,4
    87ca:  fee43423           sd a4,-24(s0)
    87ce:  439c                 lw a5,0(a5)
    87d0:  fdc42703           lw a4,-36(s0)
    87d4:  9fb9                 addw a5,a5,a4
    87d6:  fcf42e23           sw a5,-36(s0)
    87da:  fe442783           lw a5,-28(s0)
    87de:  37f1                 addiw a5,a5,-4
    87e0:  fef42223           sw a5,-28(s0)
    87e4:  fe442783           lw a5,-28(s0)
    87e8:  0007871b           sext.w a4,a5
    87ec:  478d                 li a5,3
    87ee:  f8e7e6e3           bltu a5,a4,877a <FUN_000086b6+0xc4>
    87f2:  a829                 j 880c <FUN_000086b6+0x156>
    87f4:  fe843783           ld a5,-24(s0)
    87f8:  00478713           addi a4,a5,4
    87fc:  fee43423           sd a4,-24(s0)
    8800:  439c                 lw a5,0(a5)
    8802:  fdc42703           lw a4,-36(s0)
    8806:  9fb9                 addw a5,a5,a4
    8808:  fcf42e23           sw a5,-36(s0)
    880c:  fe442783           lw a5,-28(s0)
    8810:  fff7871b           addiw a4,a5,-1
    8814:  fee42223           sw a4,-28(s0)
    8818:  fff1                 bnez a5,87f4 <FUN_000086b6+0x13e>
    881a:  000487b7           lui a5,0x48
    881e:  e107a783           lw a5,-496(a5) # 47e10 <gpio_get_boot_device+0x39a7a>
    8822:  cfbd                 beqz a5,88a0 <FUN_000086b6+0x1ea>
    8824:  fc843783           ld a5,-56(s0)
    8828:  fe046703           lwu a4,-32(s0)
    882c:  0ff77613           andi a2,a4,255
    8830:  00c7c703           lbu a4,12(a5)
    8834:  8b01                 andi a4,a4,0
    8836:  86ba                 mv a3,a4
    8838:  8732                 mv a4,a2
    883a:  8f55                 or a4,a4,a3
    883c:  00e78623           sb a4,12(a5)
    8840:  fe042703           lw a4,-32(s0)
    8844:  0087571b           srliw a4,a4,0x8
    8848:  1702                 slli a4,a4,0x20
    884a:  9301                 srli a4,a4,0x20
    884c:  0ff77613           andi a2,a4,255
    8850:  00d7c703           lbu a4,13(a5)
    8854:  8b01                 andi a4,a4,0
    8856:  86ba                 mv a3,a4
    8858:  8732                 mv a4,a2
    885a:  8f55                 or a4,a4,a3
    885c:  00e786a3           sb a4,13(a5)
    8860:  fe042703           lw a4,-32(s0)
    8864:  0107571b           srliw a4,a4,0x10
    8868:  1702                 slli a4,a4,0x20
    886a:  9301                 srli a4,a4,0x20
    886c:  0ff77613           andi a2,a4,255
    8870:  00e7c703           lbu a4,14(a5)
    8874:  8b01                 andi a4,a4,0
    8876:  86ba                 mv a3,a4
    8878:  8732                 mv a4,a2
    887a:  8f55                 or a4,a4,a3
    887c:  00e78723           sb a4,14(a5)
    8880:  fe042703           lw a4,-32(s0)
    8884:  0187571b           srliw a4,a4,0x18
    8888:  02071613           slli a2,a4,0x20
    888c:  9201                 srli a2,a2,0x20
    888e:  00f7c703           lbu a4,15(a5)
    8892:  8b01                 andi a4,a4,0
    8894:  86ba                 mv a3,a4
    8896:  8732                 mv a4,a2
    8898:  8f55                 or a4,a4,a3
    889a:  00e787a3           sb a4,15(a5)
    889e:  a031                 j 88aa <FUN_000086b6+0x1f4>
    88a0:  fd043783           ld a5,-48(s0)
    88a4:  fe042703           lw a4,-32(s0)
    88a8:  c7d8                 sw a4,12(a5)
    88aa:  fdc42703           lw a4,-36(s0)
    88ae:  fe042783           lw a5,-32(s0)
    88b2:  2701                 sext.w a4,a4
    88b4:  2781                 sext.w a5,a5
    88b6:  00f71463           bne a4,a5,88be <FUN_000086b6+0x208>
    88ba:  4781                 li a5,0
    88bc:  a011                 j 88c0 <FUN_000086b6+0x20a>
    88be:  4785                 li a5,1
    88c0:  853e                 mv a0,a5
    88c2:  6426                 ld s0,72(sp)
    88c4:  6161                 addi sp,sp,80
    88c6:  8082                 ret

00000000000088c8 <FUN_000088c8>:
    88c8:  7139                 addi sp,sp,-64
    88ca:  fc22                 sd s0,56(sp)
    88cc:  0080                 addi s0,sp,64
    88ce:  fca43423           sd a0,-56(s0)
    88d2:  fcb43023           sd a1,-64(s0)
    88d6:  fc843783           ld a5,-56(s0)
    88da:  fcf43c23           sd a5,-40(s0)
    88de:  fd843783           ld a5,-40(s0)
    88e2:  0791                 addi a5,a5,4
    88e4:  fef43023           sd a5,-32(s0)
    88e8:  fe042623           sw zero,-20(s0)
    88ec:  47a1                 li a5,8
    88ee:  fcf42a23           sw a5,-44(s0)
    88f2:  a81d                 j 8928 <FUN_000088c8+0x60>
    88f4:  fe043783           ld a5,-32(s0)
    88f8:  00178713           addi a4,a5,1
    88fc:  fee43023           sd a4,-32(s0)
    8900:  0007c683           lbu a3,0(a5)
    8904:  fc043783           ld a5,-64(s0)
    8908:  00178713           addi a4,a5,1
    890c:  fce43023           sd a4,-64(s0)
    8910:  0007c783           lbu a5,0(a5)
    8914:  8736                 mv a4,a3
    8916:  00f70463           beq a4,a5,891e <FUN_000088c8+0x56>
    891a:  4785                 li a5,1
    891c:  a839                 j 893a <FUN_000088c8+0x72>
    891e:  fec42783           lw a5,-20(s0)
    8922:  2785                 addiw a5,a5,1
    8924:  fef42623           sw a5,-20(s0)
    8928:  fec42703           lw a4,-20(s0)
    892c:  fd442783           lw a5,-44(s0)
    8930:  2701                 sext.w a4,a4
    8932:  2781                 sext.w a5,a5
    8934:  fcf760e3           bltu a4,a5,88f4 <FUN_000088c8+0x2c>
    8938:  4781                 li a5,0
    893a:  853e                 mv a0,a5
    893c:  7462                 ld s0,56(sp)
    893e:  6121                 addi sp,sp,64
    8940:  8082                 ret

0000000000008942 <FUN_00008942>:
    8942:  7139                 addi sp,sp,-64
    8944:  fc22                 sd s0,56(sp)
    8946:  0080                 addi s0,sp,64
    8948:  fca43423           sd a0,-56(s0)
    894c:  87ae                 mv a5,a1
    894e:  fcf42223           sw a5,-60(s0)
    8952:  fc843783           ld a5,-56(s0)
    8956:  fcf43c23           sd a5,-40(s0)
    895a:  fd843783           ld a5,-40(s0)
    895e:  47dc                 lw a5,12(a5)
    8960:  fcf42a23           sw a5,-44(s0)
    8964:  fd843783           ld a5,-40(s0)
    8968:  5f0a7737           lui a4,0x5f0a7
    896c:  c397071b           addiw a4,a4,-967
    8970:  c7d8                 sw a4,12(a5)
    8972:  fc442783           lw a5,-60(s0)
    8976:  0027d79b           srliw a5,a5,0x2
    897a:  fef42223           sw a5,-28(s0)
    897e:  fe042023           sw zero,-32(s0)
    8982:  fc843783           ld a5,-56(s0)
    8986:  fef43423           sd a5,-24(s0)
    898a:  fe843783           ld a5,-24(s0)
    898e:  00478713           addi a4,a5,4
    8992:  fee43423           sd a4,-24(s0)
    8996:  439c                 lw a5,0(a5)
    8998:  fe042703           lw a4,-32(s0)
    899c:  9fb9                 addw a5,a5,a4
    899e:  fef42023           sw a5,-32(s0)
    89a2:  fe843783           ld a5,-24(s0)
    89a6:  00478713           addi a4,a5,4
    89aa:  fee43423           sd a4,-24(s0)
    89ae:  439c                 lw a5,0(a5)
    89b0:  fe042703           lw a4,-32(s0)
    89b4:  9fb9                 addw a5,a5,a4
    89b6:  fef42023           sw a5,-32(s0)
    89ba:  fe843783           ld a5,-24(s0)
    89be:  00478713           addi a4,a5,4
    89c2:  fee43423           sd a4,-24(s0)
    89c6:  439c                 lw a5,0(a5)
    89c8:  fe042703           lw a4,-32(s0)
    89cc:  9fb9                 addw a5,a5,a4
    89ce:  fef42023           sw a5,-32(s0)
    89d2:  fe843783           ld a5,-24(s0)
    89d6:  00478713           addi a4,a5,4
    89da:  fee43423           sd a4,-24(s0)
    89de:  439c                 lw a5,0(a5)
    89e0:  fe042703           lw a4,-32(s0)
    89e4:  9fb9                 addw a5,a5,a4
    89e6:  fef42023           sw a5,-32(s0)
    89ea:  fe442783           lw a5,-28(s0)
    89ee:  37f1                 addiw a5,a5,-4
    89f0:  fef42223           sw a5,-28(s0)
    89f4:  fe442783           lw a5,-28(s0)
    89f8:  0007871b           sext.w a4,a5
    89fc:  478d                 li a5,3
    89fe:  f8e7e6e3           bltu a5,a4,898a <FUN_00008942+0x48>
    8a02:  a829                 j 8a1c <FUN_00008942+0xda>
    8a04:  fe843783           ld a5,-24(s0)
    8a08:  00478713           addi a4,a5,4
    8a0c:  fee43423           sd a4,-24(s0)
    8a10:  439c                 lw a5,0(a5)
    8a12:  fe042703           lw a4,-32(s0)
    8a16:  9fb9                 addw a5,a5,a4
    8a18:  fef42023           sw a5,-32(s0)
    8a1c:  fe442783           lw a5,-28(s0)
    8a20:  fff7871b           addiw a4,a5,-1
    8a24:  fee42223           sw a4,-28(s0)
    8a28:  fff1                 bnez a5,8a04 <FUN_00008942+0xc2>
    8a2a:  fd843783           ld a5,-40(s0)
    8a2e:  fd442703           lw a4,-44(s0)
    8a32:  c7d8                 sw a4,12(a5)
    8a34:  fe042703           lw a4,-32(s0)
    8a38:  fd442783           lw a5,-44(s0)
    8a3c:  2701                 sext.w a4,a4
    8a3e:  2781                 sext.w a5,a5
    8a40:  00f71463           bne a4,a5,8a48 <FUN_00008942+0x106>
    8a44:  4781                 li a5,0
    8a46:  a011                 j 8a4a <FUN_00008942+0x108>
    8a48:  4785                 li a5,1
    8a4a:  853e                 mv a0,a5
    8a4c:  7462                 ld s0,56(sp)
    8a4e:  6121                 addi sp,sp,64
    8a50:  8082                 ret

0000000000008a52 <FUN_00008a52>:
    8a52:  7179                 addi sp,sp,-48
    8a54:  f406                 sd ra,40(sp)
    8a56:  f022                 sd s0,32(sp)
    8a58:  1800                 addi s0,sp,48
    8a5a:  fea43423           sd a0,-24(s0)
    8a5e:  87ae                 mv a5,a1
    8a60:  fcc43c23           sd a2,-40(s0)
    8a64:  fef42223           sw a5,-28(s0)
    8a68:  fd843583           ld a1,-40(s0)
    8a6c:  fe843503           ld a0,-24(s0)
    8a70:  ba3ff0ef           jal ra,8612 <boot0_check_magic>
    8a74:  87aa                 mv a5,a0
    8a76:  ef81                 bnez a5,8a8e <FUN_00008a52+0x3c>
    8a78:  fe442783           lw a5,-28(s0)
    8a7c:  85be                 mv a1,a5
    8a7e:  fe843503           ld a0,-24(s0)
    8a82:  c35ff0ef           jal ra,86b6 <FUN_000086b6>
    8a86:  87aa                 mv a5,a0
    8a88:  e399                 bnez a5,8a8e <FUN_00008a52+0x3c>
    8a8a:  4781                 li a5,0
    8a8c:  a011                 j 8a90 <FUN_00008a52+0x3e>
    8a8e:  4785                 li a5,1
    8a90:  853e                 mv a0,a5
    8a92:  70a2                 ld ra,40(sp)
    8a94:  7402                 ld s0,32(sp)
    8a96:  6145                 addi sp,sp,48
    8a98:  8082                 ret

0000000000008a9a <ccu_enable_pll_lock>:
    8a9a:  7139                 addi sp,sp,-64
    8a9c:  fc06                 sd ra,56(sp)
    8a9e:  f822                 sd s0,48(sp)
    8aa0:  0080                 addi s0,sp,64
    8aa2:  87aa                 mv a5,a0
    8aa4:  86ae                 mv a3,a1
    8aa6:  8732                 mv a4,a2
    8aa8:  fcf42623           sw a5,-52(s0)
    8aac:  87b6                 mv a5,a3
    8aae:  fcf42423           sw a5,-56(s0)
    8ab2:  87ba                 mv a5,a4
    8ab4:  fcf42223           sw a5,-60(s0)
    8ab8:  fe042623           sw zero,-20(s0)
    8abc:  fe043023           sd zero,-32(s0)
    8ac0:  fc043c23           sd zero,-40(s0)
    8ac4:  fc043823           sd zero,-48(s0)
    8ac8:  fcc46783           lwu a5,-52(s0)
    8acc:  439c                 lw a5,0(a5)
    8ace:  fef42623           sw a5,-20(s0)
    8ad2:  fc842783           lw a5,-56(s0)
    8ad6:  4705                 li a4,1
    8ad8:  00f717bb           sllw a5,a4,a5
    8adc:  2781                 sext.w a5,a5
    8ade:  0007871b           sext.w a4,a5
    8ae2:  fec42783           lw a5,-20(s0)
    8ae6:  8fd9                 or a5,a5,a4
    8ae8:  fef42623           sw a5,-20(s0)
    8aec:  fcc46783           lwu a5,-52(s0)
    8af0:  873e                 mv a4,a5
    8af2:  fec42783           lw a5,-20(s0)
    8af6:  c31c                 sw a5,0(a4)
    8af8:  0024a7b7           lui a5,0x24a
    8afc:  f0078793           addi a5,a5,-256 # 249f00 <gpio_get_boot_device+0x23bb6a>
    8b00:  fcf43823           sd a5,-48(s0)
    8b04:  67a010ef           jal ra,a17e <rdtime>
    8b08:  fea43023           sd a0,-32(s0)
    8b0c:  fcc46783           lwu a5,-52(s0)
    8b10:  439c                 lw a5,0(a5)
    8b12:  fef42623           sw a5,-20(s0)
    8b16:  fc442783           lw a5,-60(s0)
    8b1a:  4705                 li a4,1
    8b1c:  00f717bb           sllw a5,a4,a5
    8b20:  2781                 sext.w a5,a5
    8b22:  0007871b           sext.w a4,a5
    8b26:  fec42783           lw a5,-20(s0)
    8b2a:  8ff9                 and a5,a5,a4
    8b2c:  fef42623           sw a5,-20(s0)
    8b30:  fec42783           lw a5,-20(s0)
    8b34:  2781                 sext.w a5,a5
    8b36:  c399                 beqz a5,8b3c <ccu_enable_pll_lock+0xa2>
    8b38:  4781                 li a5,0
    8b3a:  a00d                 j 8b5c <ccu_enable_pll_lock+0xc2>
    8b3c:  642010ef           jal ra,a17e <rdtime>
    8b40:  872a                 mv a4,a0
    8b42:  fe043783           ld a5,-32(s0)
    8b46:  40f707b3           sub a5,a4,a5
    8b4a:  fcf43c23           sd a5,-40(s0)
    8b4e:  fd843703           ld a4,-40(s0)
    8b52:  fd043783           ld a5,-48(s0)
    8b56:  faf76be3           bltu a4,a5,8b0c <ccu_enable_pll_lock+0x72>
    8b5a:  57fd                 li a5,-1
    8b5c:  853e                 mv a0,a5
    8b5e:  70e2                 ld ra,56(sp)
    8b60:  7442                 ld s0,48(sp)
    8b62:  6121                 addi sp,sp,64
    8b64:  8082                 ret

0000000000008b66 <ccu_disable_pll_lock_output>:
    8b66:  7179                 addi sp,sp,-48
    8b68:  f422                 sd s0,40(sp)
    8b6a:  1800                 addi s0,sp,48
    8b6c:  87aa                 mv a5,a0
    8b6e:  fcf42e23           sw a5,-36(s0)
    8b72:  fe042623           sw zero,-20(s0)
    8b76:  fdc46783           lwu a5,-36(s0)
    8b7a:  439c                 lw a5,0(a5)
    8b7c:  fef42623           sw a5,-20(s0)
    8b80:  fec42703           lw a4,-20(s0)
    8b84:  580007b7           lui a5,0x58000
    8b88:  17fd                 addi a5,a5,-1
    8b8a:  8ff9                 and a5,a5,a4
    8b8c:  fef42623           sw a5,-20(s0)
    8b90:  fdc46783           lwu a5,-36(s0)
    8b94:  873e                 mv a4,a5
    8b96:  fec42783           lw a5,-20(s0)
    8b9a:  c31c                 sw a5,0(a4)
    8b9c:  0001                 nop
    8b9e:  7422                 ld s0,40(sp)
    8ba0:  6145                 addi sp,sp,48
    8ba2:  8082                 ret

0000000000008ba4 <ccu_enable_pll_output>:
    8ba4:  7179                 addi sp,sp,-48
    8ba6:  f422                 sd s0,40(sp)
    8ba8:  1800                 addi s0,sp,48
    8baa:  87aa                 mv a5,a0
    8bac:  fcf42e23           sw a5,-36(s0)
    8bb0:  fe042623           sw zero,-20(s0)
    8bb4:  fdc46783           lwu a5,-36(s0)
    8bb8:  439c                 lw a5,0(a5)
    8bba:  fef42623           sw a5,-20(s0)
    8bbe:  fec42703           lw a4,-20(s0)
    8bc2:  080007b7           lui a5,0x8000
    8bc6:  8fd9                 or a5,a5,a4
    8bc8:  fef42623           sw a5,-20(s0)
    8bcc:  fdc46783           lwu a5,-36(s0)
    8bd0:  873e                 mv a4,a5
    8bd2:  fec42783           lw a5,-20(s0)
    8bd6:  c31c                 sw a5,0(a4)
    8bd8:  0001                 nop
    8bda:  7422                 ld s0,40(sp)
    8bdc:  6145                 addi sp,sp,48
    8bde:  8082                 ret

0000000000008be0 <ccu_enable_pll_ldo>:
    8be0:  7179                 addi sp,sp,-48
    8be2:  f406                 sd ra,40(sp)
    8be4:  f022                 sd s0,32(sp)
    8be6:  1800                 addi s0,sp,48
    8be8:  87aa                 mv a5,a0
    8bea:  fcf42e23           sw a5,-36(s0)
    8bee:  fe042623           sw zero,-20(s0)
    8bf2:  fdc46783           lwu a5,-36(s0)
    8bf6:  439c                 lw a5,0(a5)
    8bf8:  fef42623           sw a5,-20(s0)
    8bfc:  fec42703           lw a4,-20(s0)
    8c00:  400007b7           lui a5,0x40000
    8c04:  8fd9                 or a5,a5,a4
    8c06:  fef42623           sw a5,-20(s0)
    8c0a:  fdc46783           lwu a5,-36(s0)
    8c0e:  873e                 mv a4,a5
    8c10:  fec42783           lw a5,-20(s0)
    8c14:  c31c                 sw a5,0(a4)
    8c16:  4515                 li a0,5
    8c18:  56c010ef           jal ra,a184 <udelay>
    8c1c:  0001                 nop
    8c1e:  70a2                 ld ra,40(sp)
    8c20:  7402                 ld s0,32(sp)
    8c22:  6145                 addi sp,sp,48
    8c24:  8082                 ret

0000000000008c26 <ccu_enable_pll_cpux>:
    8c26:  7179                 addi sp,sp,-48
    8c28:  f406                 sd ra,40(sp)
    8c2a:  f022                 sd s0,32(sp)
    8c2c:  1800                 addi s0,sp,48
    8c2e:  87aa                 mv a5,a0
    8c30:  fcf42e23           sw a5,-36(s0)
    8c34:  fe042623           sw zero,-20(s0)
    8c38:  fe042423           sw zero,-24(s0)
    8c3c:  02001537           lui a0,0x2001
    8c40:  fa1ff0ef           jal ra,8be0 <ccu_enable_pll_ldo>
    8c44:  02001537           lui a0,0x2001
    8c48:  f1fff0ef           jal ra,8b66 <ccu_disable_pll_lock_output>
    8c4c:  020017b7           lui a5,0x2001
    8c50:  439c                 lw a5,0(a5)
    8c52:  fef42623           sw a5,-20(s0)
    8c56:  fec42703           lw a4,-20(s0)
    8c5a:  77c1                 lui a5,0xffff0
    8c5c:  0fc78793           addi a5,a5,252 # ffffffffffff00fc <gpio_get_boot_device+
    8c60:  8ff9                 and a5,a5,a4
    8c62:  fef42623           sw a5,-20(s0)
    8c66:  fdc42783           lw a5,-36(s0)
    8c6a:  0087979b           slliw a5,a5,0x8
    8c6e:  0007871b           sext.w a4,a5
    8c72:  fec42783           lw a5,-20(s0)
    8c76:  8fd9                 or a5,a5,a4
    8c78:  fef42623           sw a5,-20(s0)
    8c7c:  020017b7           lui a5,0x2001
    8c80:  fec42703           lw a4,-20(s0)
    8c84:  c398                 sw a4,0(a5)
    8c86:  4529                 li a0,10
    8c88:  4fc010ef           jal ra,a184 <udelay>
    8c8c:  020017b7           lui a5,0x2001
    8c90:  439c                 lw a5,0(a5)
    8c92:  fef42623           sw a5,-20(s0)
    8c96:  fec42703           lw a4,-20(s0)
    8c9a:  800007b7           lui a5,0x80000
    8c9e:  8fd9                 or a5,a5,a4
    8ca0:  fef42623           sw a5,-20(s0)
    8ca4:  020017b7           lui a5,0x2001
    8ca8:  fec42703           lw a4,-20(s0)
    8cac:  c398                 sw a4,0(a5)
    8cae:  4529                 li a0,10
    8cb0:  4d4010ef           jal ra,a184 <udelay>
    8cb4:  4671                 li a2,28
    8cb6:  45f5                 li a1,29
    8cb8:  02001537           lui a0,0x2001
    8cbc:  ddfff0ef           jal ra,8a9a <ccu_enable_pll_lock>
    8cc0:  87aa                 mv a5,a0
    8cc2:  fef42423           sw a5,-24(s0)
    8cc6:  fe842783           lw a5,-24(s0)
    8cca:  2781                 sext.w a5,a5
    8ccc:  0007d463           bgez a5,8cd4 <ccu_enable_pll_cpux+0xae>
    8cd0:  57fd                 li a5,-1
    8cd2:  a809                 j 8ce4 <ccu_enable_pll_cpux+0xbe>
    8cd4:  02001537           lui a0,0x2001
    8cd8:  ecdff0ef           jal ra,8ba4 <ccu_enable_pll_output>
    8cdc:  4529                 li a0,10
    8cde:  4a6010ef           jal ra,a184 <udelay>
    8ce2:  4781                 li a5,0
    8ce4:  853e                 mv a0,a5
    8ce6:  70a2                 ld ra,40(sp)
    8ce8:  7402                 ld s0,32(sp)
    8cea:  6145                 addi sp,sp,48
    8cec:  8082                 ret

0000000000008cee <FUN_00008cee>:
    8cee:  1101                 addi sp,sp,-32
    8cf0:  ec06                 sd ra,24(sp)
    8cf2:  e822                 sd s0,16(sp)
    8cf4:  1000                 addi s0,sp,32
    8cf6:  fe042623           sw zero,-20(s0)
    8cfa:  fe042423           sw zero,-24(s0)
    8cfe:  020017b7           lui a5,0x2001
    8d02:  02078513           addi a0,a5,32 # 2001020 <gpio_get_boot_device+0x1ff2c8a>
    8d06:  edbff0ef           jal ra,8be0 <ccu_enable_pll_ldo>
    8d0a:  020017b7           lui a5,0x2001
    8d0e:  02078513           addi a0,a5,32 # 2001020 <gpio_get_boot_device+0x1ff2c8a>
    8d12:  e55ff0ef           jal ra,8b66 <ccu_disable_pll_lock_output>
    8d16:  020017b7           lui a5,0x2001
    8d1a:  02078793           addi a5,a5,32 # 2001020 <gpio_get_boot_device+0x1ff2c8a>
    8d1e:  439c                 lw a5,0(a5)
    8d20:  fef42623           sw a5,-20(s0)
    8d24:  fec42703           lw a4,-20(s0)
    8d28:  ffcc07b7           lui a5,0xffcc0
    8d2c:  0fd78793           addi a5,a5,253 # ffffffffffcc00fd <gpio_get_boot_device+
    8d30:  8ff9                 and a5,a5,a4
    8d32:  fef42623           sw a5,-20(s0)
    8d36:  fec42703           lw a4,-20(s0)
    8d3a:  002167b7           lui a5,0x216
    8d3e:  30078793           addi a5,a5,768 # 216300 <gpio_get_boot_device+0x207f6a>
    8d42:  8fd9                 or a5,a5,a4
    8d44:  fef42623           sw a5,-20(s0)
    8d48:  020017b7           lui a5,0x2001
    8d4c:  02078793           addi a5,a5,32 # 2001020 <gpio_get_boot_device+0x1ff2c8a>
    8d50:  fec42703           lw a4,-20(s0)
    8d54:  c398                 sw a4,0(a5)
    8d56:  4529                 li a0,10
    8d58:  42c010ef           jal ra,a184 <udelay>
    8d5c:  020017b7           lui a5,0x2001
    8d60:  02078793           addi a5,a5,32 # 2001020 <gpio_get_boot_device+0x1ff2c8a>
    8d64:  439c                 lw a5,0(a5)
    8d66:  fef42623           sw a5,-20(s0)
    8d6a:  fec42703           lw a4,-20(s0)
    8d6e:  800007b7           lui a5,0x80000
    8d72:  8fd9                 or a5,a5,a4
    8d74:  fef42623           sw a5,-20(s0)
    8d78:  020017b7           lui a5,0x2001
    8d7c:  02078793           addi a5,a5,32 # 2001020 <gpio_get_boot_device+0x1ff2c8a>
    8d80:  fec42703           lw a4,-20(s0)
    8d84:  c398                 sw a4,0(a5)
    8d86:  4529                 li a0,10
    8d88:  3fc010ef           jal ra,a184 <udelay>
    8d8c:  4671                 li a2,28
    8d8e:  45f5                 li a1,29
    8d90:  020017b7           lui a5,0x2001
    8d94:  02078513           addi a0,a5,32 # 2001020 <gpio_get_boot_device+0x1ff2c8a>
    8d98:  d03ff0ef           jal ra,8a9a <ccu_enable_pll_lock>
    8d9c:  87aa                 mv a5,a0
    8d9e:  fef42423           sw a5,-24(s0)
    8da2:  fe842783           lw a5,-24(s0)
    8da6:  2781                 sext.w a5,a5
    8da8:  0007d463           bgez a5,8db0 <FUN_00008cee+0xc2>
    8dac:  57fd                 li a5,-1
    8dae:  a819                 j 8dc4 <FUN_00008cee+0xd6>
    8db0:  020017b7           lui a5,0x2001
    8db4:  02078513           addi a0,a5,32 # 2001020 <gpio_get_boot_device+0x1ff2c8a>
    8db8:  dedff0ef           jal ra,8ba4 <ccu_enable_pll_output>
    8dbc:  4529                 li a0,10
    8dbe:  3c6010ef           jal ra,a184 <udelay>
    8dc2:  4781                 li a5,0
    8dc4:  853e                 mv a0,a5
    8dc6:  60e2                 ld ra,24(sp)
    8dc8:  6442                 ld s0,16(sp)
    8dca:  6105                 addi sp,sp,32
    8dcc:  8082                 ret

0000000000008dce <FUN_00008dce>:
    8dce:  1101                 addi sp,sp,-32
    8dd0:  ec06                 sd ra,24(sp)
    8dd2:  e822                 sd s0,16(sp)
    8dd4:  1000                 addi s0,sp,32
    8dd6:  fe042623           sw zero,-20(s0)
    8dda:  fe042423           sw zero,-24(s0)
    8dde:  020017b7           lui a5,0x2001
    8de2:  01078513           addi a0,a5,16 # 2001010 <gpio_get_boot_device+0x1ff2c7a>
    8de6:  dfbff0ef           jal ra,8be0 <ccu_enable_pll_ldo>
    8dea:  020017b7           lui a5,0x2001
    8dee:  01078513           addi a0,a5,16 # 2001010 <gpio_get_boot_device+0x1ff2c7a>
    8df2:  d75ff0ef           jal ra,8b66 <ccu_disable_pll_lock_output>
    8df6:  020017b7           lui a5,0x2001
    8dfa:  07c1                 addi a5,a5,16
    8dfc:  439c                 lw a5,0(a5)
    8dfe:  fef42623           sw a5,-20(s0)
    8e02:  fec42703           lw a4,-20(s0)
    8e06:  77c1                 lui a5,0xffff0
    8e08:  0fc78793           addi a5,a5,252 # ffffffffffff00fc <gpio_get_boot_device+
    8e0c:  8ff9                 and a5,a5,a4
    8e0e:  fef42623           sw a5,-20(s0)
    8e12:  fec42703           lw a4,-20(s0)
    8e16:  6789                 lui a5,0x2
    8e18:  30178793           addi a5,a5,769 # 2301 <FUN_00002256+0xab>
    8e1c:  8fd9                 or a5,a5,a4
    8e1e:  fef42623           sw a5,-20(s0)
    8e22:  020017b7           lui a5,0x2001
    8e26:  07c1                 addi a5,a5,16
    8e28:  fec42703           lw a4,-20(s0)
    8e2c:  c398                 sw a4,0(a5)
    8e2e:  4515                 li a0,5
    8e30:  354010ef           jal ra,a184 <udelay>
    8e34:  020017b7           lui a5,0x2001
    8e38:  07c1                 addi a5,a5,16
    8e3a:  439c                 lw a5,0(a5)
    8e3c:  fef42623           sw a5,-20(s0)
    8e40:  fec42703           lw a4,-20(s0)
    8e44:  800007b7           lui a5,0x80000
    8e48:  8fd9                 or a5,a5,a4
    8e4a:  fef42623           sw a5,-20(s0)
    8e4e:  020017b7           lui a5,0x2001
    8e52:  07c1                 addi a5,a5,16
    8e54:  fec42703           lw a4,-20(s0)
    8e58:  c398                 sw a4,0(a5)
    8e5a:  4515                 li a0,5
    8e5c:  328010ef           jal ra,a184 <udelay>
    8e60:  4671                 li a2,28
    8e62:  45f5                 li a1,29
    8e64:  020017b7           lui a5,0x2001
    8e68:  01078513           addi a0,a5,16 # 2001010 <gpio_get_boot_device+0x1ff2c7a>
    8e6c:  c2fff0ef           jal ra,8a9a <ccu_enable_pll_lock>
    8e70:  87aa                 mv a5,a0
    8e72:  fef42423           sw a5,-24(s0)
    8e76:  fe842783           lw a5,-24(s0)
    8e7a:  2781                 sext.w a5,a5
    8e7c:  0007d463           bgez a5,8e84 <FUN_00008dce+0xb6>
    8e80:  57fd                 li a5,-1
    8e82:  a819                 j 8e98 <FUN_00008dce+0xca>
    8e84:  020017b7           lui a5,0x2001
    8e88:  01078513           addi a0,a5,16 # 2001010 <gpio_get_boot_device+0x1ff2c7a>
    8e8c:  d19ff0ef           jal ra,8ba4 <ccu_enable_pll_output>
    8e90:  4529                 li a0,10
    8e92:  2f2010ef           jal ra,a184 <udelay>
    8e96:  4781                 li a5,0
    8e98:  853e                 mv a0,a5
    8e9a:  60e2                 ld ra,24(sp)
    8e9c:  6442                 ld s0,16(sp)
    8e9e:  6105                 addi sp,sp,32
    8ea0:  8082                 ret

0000000000008ea2 <FUN_00008ea2>:
    8ea2:  1101                 addi sp,sp,-32
    8ea4:  ec06                 sd ra,24(sp)
    8ea6:  e822                 sd s0,16(sp)
    8ea8:  1000                 addi s0,sp,32
    8eaa:  fe042623           sw zero,-20(s0)
    8eae:  020027b7           lui a5,0x2002
    8eb2:  d0078793           addi a5,a5,-768 # 2001d00 <gpio_get_boot_device+0x1ff396
    8eb6:  439c                 lw a5,0(a5)
    8eb8:  fef42623           sw a5,-20(s0)
    8ebc:  fec42783           lw a5,-20(s0)
    8ec0:  ce07f793           andi a5,a5,-800
    8ec4:  fef42623           sw a5,-20(s0)
    8ec8:  fec42783           lw a5,-20(s0)
    8ecc:  1007e793           ori a5,a5,256
    8ed0:  fef42623           sw a5,-20(s0)
    8ed4:  020027b7           lui a5,0x2002
    8ed8:  d0078793           addi a5,a5,-768 # 2001d00 <gpio_get_boot_device+0x1ff396
    8edc:  fec42703           lw a4,-20(s0)
    8ee0:  c398                 sw a4,0(a5)
    8ee2:  4529                 li a0,10
    8ee4:  2a0010ef           jal ra,a184 <udelay>
    8ee8:  020027b7           lui a5,0x2002
    8eec:  d0078793           addi a5,a5,-768 # 2001d00 <gpio_get_boot_device+0x1ff396
    8ef0:  439c                 lw a5,0(a5)
    8ef2:  fef42623           sw a5,-20(s0)
    8ef6:  fec42703           lw a4,-20(s0)
    8efa:  f90007b7           lui a5,0xf9000
    8efe:  17fd                 addi a5,a5,-1
    8f00:  8ff9                 and a5,a5,a4
    8f02:  fef42623           sw a5,-20(s0)
    8f06:  fec42703           lw a4,-20(s0)
    8f0a:  050007b7           lui a5,0x5000
    8f0e:  8fd9                 or a5,a5,a4
    8f10:  fef42623           sw a5,-20(s0)
    8f14:  020027b7           lui a5,0x2002
    8f18:  d0078793           addi a5,a5,-768 # 2001d00 <gpio_get_boot_device+0x1ff396
    8f1c:  fec42703           lw a4,-20(s0)
    8f20:  c398                 sw a4,0(a5)
    8f22:  4529                 li a0,10
    8f24:  260010ef           jal ra,a184 <udelay>
    8f28:  0001                 nop
    8f2a:  60e2                 ld ra,24(sp)
    8f2c:  6442                 ld s0,16(sp)
    8f2e:  6105                 addi sp,sp,32
    8f30:  8082                 ret

0000000000008f32 <FUN_00008f32>:
    8f32:  7179                 addi sp,sp,-48
    8f34:  f406                 sd ra,40(sp)
    8f36:  f022                 sd s0,32(sp)
    8f38:  1800                 addi s0,sp,48
    8f3a:  87aa                 mv a5,a0
    8f3c:  fcf42e23           sw a5,-36(s0)
    8f40:  fe042623           sw zero,-20(s0)
    8f44:  020017b7           lui a5,0x2001
    8f48:  51078793           addi a5,a5,1296 # 2001510 <gpio_get_boot_device+0x1ff317
    8f4c:  439c                 lw a5,0(a5)
    8f4e:  fef42623           sw a5,-20(s0)
    8f52:  fec42783           lw a5,-20(s0)
    8f56:  cfc7f793           andi a5,a5,-772
    8f5a:  fef42623           sw a5,-20(s0)
    8f5e:  fdc42783           lw a5,-36(s0)
    8f62:  0087979b           slliw a5,a5,0x8
    8f66:  0007871b           sext.w a4,a5
    8f6a:  fec42783           lw a5,-20(s0)
    8f6e:  8fd9                 or a5,a5,a4
    8f70:  2781                 sext.w a5,a5
    8f72:  0027e793           ori a5,a5,2
    8f76:  fef42623           sw a5,-20(s0)
    8f7a:  020017b7           lui a5,0x2001
    8f7e:  51078793           addi a5,a5,1296 # 2001510 <gpio_get_boot_device+0x1ff317
    8f82:  fec42703           lw a4,-20(s0)
    8f86:  c398                 sw a4,0(a5)
    8f88:  4529                 li a0,10
    8f8a:  1fa010ef           jal ra,a184 <udelay>
    8f8e:  020017b7           lui a5,0x2001
    8f92:  51078793           addi a5,a5,1296 # 2001510 <gpio_get_boot_device+0x1ff317
    8f96:  439c                 lw a5,0(a5)
    8f98:  fef42623           sw a5,-20(s0)
    8f9c:  fec42703           lw a4,-20(s0)
    8fa0:  f90007b7           lui a5,0xf9000
    8fa4:  17fd                 addi a5,a5,-1
    8fa6:  8ff9                 and a5,a5,a4
    8fa8:  fef42623           sw a5,-20(s0)
    8fac:  fec42703           lw a4,-20(s0)
    8fb0:  030007b7           lui a5,0x3000
    8fb4:  8fd9                 or a5,a5,a4
    8fb6:  fef42623           sw a5,-20(s0)
    8fba:  020017b7           lui a5,0x2001
    8fbe:  51078793           addi a5,a5,1296 # 2001510 <gpio_get_boot_device+0x1ff317
    8fc2:  fec42703           lw a4,-20(s0)
    8fc6:  c398                 sw a4,0(a5)
    8fc8:  4529                 li a0,10
    8fca:  1ba010ef           jal ra,a184 <udelay>
    8fce:  0001                 nop
    8fd0:  70a2                 ld ra,40(sp)
    8fd2:  7402                 ld s0,32(sp)
    8fd4:  6145                 addi sp,sp,48
    8fd6:  8082                 ret

0000000000008fd8 <FUN_00008fd8>:
    8fd8:  1101                 addi sp,sp,-32
    8fda:  ec06                 sd ra,24(sp)
    8fdc:  e822                 sd s0,16(sp)
    8fde:  1000                 addi s0,sp,32
    8fe0:  fe042623           sw zero,-20(s0)
    8fe4:  020017b7           lui a5,0x2001
    8fe8:  52078793           addi a5,a5,1312 # 2001520 <gpio_get_boot_device+0x1ff318
    8fec:  439c                 lw a5,0(a5)
    8fee:  fef42623           sw a5,-20(s0)
    8ff2:  fec42783           lw a5,-20(s0)
    8ff6:  ce07f793           andi a5,a5,-800
    8ffa:  fef42623           sw a5,-20(s0)
    8ffe:  fec42783           lw a5,-20(s0)
    9002:  1007e793           ori a5,a5,256
    9006:  fef42623           sw a5,-20(s0)
    900a:  020017b7           lui a5,0x2001
    900e:  52078793           addi a5,a5,1312 # 2001520 <gpio_get_boot_device+0x1ff318
    9012:  fec42703           lw a4,-20(s0)
    9016:  c398                 sw a4,0(a5)
    9018:  4529                 li a0,10
    901a:  16a010ef           jal ra,a184 <udelay>
    901e:  020017b7           lui a5,0x2001
    9022:  52078793           addi a5,a5,1312 # 2001520 <gpio_get_boot_device+0x1ff318
    9026:  439c                 lw a5,0(a5)
    9028:  fef42623           sw a5,-20(s0)
    902c:  fec42703           lw a4,-20(s0)
    9030:  fd0007b7           lui a5,0xfd000
    9034:  17fd                 addi a5,a5,-1
    9036:  8ff9                 and a5,a5,a4
    9038:  fef42623           sw a5,-20(s0)
    903c:  fec42703           lw a4,-20(s0)
    9040:  020007b7           lui a5,0x2000
    9044:  8fd9                 or a5,a5,a4
    9046:  fef42623           sw a5,-20(s0)
    904a:  020017b7           lui a5,0x2001
    904e:  52078793           addi a5,a5,1312 # 2001520 <gpio_get_boot_device+0x1ff318
    9052:  fec42703           lw a4,-20(s0)
    9056:  c398                 sw a4,0(a5)
    9058:  4529                 li a0,10
    905a:  12a010ef           jal ra,a184 <udelay>
    905e:  0001                 nop
    9060:  60e2                 ld ra,24(sp)
    9062:  6442                 ld s0,16(sp)
    9064:  6105                 addi sp,sp,32
    9066:  8082                 ret

0000000000009068 <ccu_set_cpux_to_24_MHz>:
    9068:  1101                 addi sp,sp,-32
    906a:  ec06                 sd ra,24(sp)
    906c:  e822                 sd s0,16(sp)
    906e:  1000                 addi s0,sp,32
    9070:  fe042623           sw zero,-20(s0)
    9074:  020017b7           lui a5,0x2001
    9078:  50078793           addi a5,a5,1280 # 2001500 <gpio_get_boot_device+0x1ff316
    907c:  439c                 lw a5,0(a5)
    907e:  fef42623           sw a5,-20(s0)
    9082:  fec42703           lw a4,-20(s0)
    9086:  f90007b7           lui a5,0xf9000
    908a:  17fd                 addi a5,a5,-1
    908c:  8ff9                 and a5,a5,a4
    908e:  fef42623           sw a5,-20(s0)
    9092:  020017b7           lui a5,0x2001
    9096:  50078793           addi a5,a5,1280 # 2001500 <gpio_get_boot_device+0x1ff316
    909a:  fec42703           lw a4,-20(s0)
    909e:  c398                 sw a4,0(a5)
    90a0:  4529                 li a0,10
    90a2:  0e2010ef           jal ra,a184 <udelay>
    90a6:  020017b7           lui a5,0x2001
    90aa:  50078793           addi a5,a5,1280 # 2001500 <gpio_get_boot_device+0x1ff316
    90ae:  439c                 lw a5,0(a5)
    90b0:  fef42623           sw a5,-20(s0)
    90b4:  fec42783           lw a5,-20(s0)
    90b8:  9bf1                 andi a5,a5,-4
    90ba:  fef42623           sw a5,-20(s0)
    90be:  020017b7           lui a5,0x2001
    90c2:  50078793           addi a5,a5,1280 # 2001500 <gpio_get_boot_device+0x1ff316
    90c6:  fec42703           lw a4,-20(s0)
    90ca:  c398                 sw a4,0(a5)
    90cc:  4515                 li a0,5
    90ce:  0b6010ef           jal ra,a184 <udelay>
    90d2:  0001                 nop
    90d4:  60e2                 ld ra,24(sp)
    90d6:  6442                 ld s0,16(sp)
    90d8:  6105                 addi sp,sp,32
    90da:  8082                 ret

00000000000090dc <ccu_set_psi_to_24_MHz>:
    90dc:  1101                 addi sp,sp,-32
    90de:  ec06                 sd ra,24(sp)
    90e0:  e822                 sd s0,16(sp)
    90e2:  1000                 addi s0,sp,32
    90e4:  fe042623           sw zero,-20(s0)
    90e8:  020017b7           lui a5,0x2001
    90ec:  51078793           addi a5,a5,1296 # 2001510 <gpio_get_boot_device+0x1ff317
    90f0:  439c                 lw a5,0(a5)
    90f2:  fef42623           sw a5,-20(s0)
    90f6:  fec42703           lw a4,-20(s0)
    90fa:  f90007b7           lui a5,0xf9000
    90fe:  17fd                 addi a5,a5,-1
    9100:  8ff9                 and a5,a5,a4
    9102:  fef42623           sw a5,-20(s0)
    9106:  020017b7           lui a5,0x2001
    910a:  51078793           addi a5,a5,1296 # 2001510 <gpio_get_boot_device+0x1ff317
    910e:  fec42703           lw a4,-20(s0)
    9112:  c398                 sw a4,0(a5)
    9114:  4529                 li a0,10
    9116:  06e010ef           jal ra,a184 <udelay>
    911a:  020017b7           lui a5,0x2001
    911e:  51078793           addi a5,a5,1296 # 2001510 <gpio_get_boot_device+0x1ff317
    9122:  439c                 lw a5,0(a5)
    9124:  fef42623           sw a5,-20(s0)
    9128:  fec42783           lw a5,-20(s0)
    912c:  cfc7f793           andi a5,a5,-772
    9130:  fef42623           sw a5,-20(s0)
    9134:  020017b7           lui a5,0x2001
    9138:  51078793           addi a5,a5,1296 # 2001510 <gpio_get_boot_device+0x1ff317
    913c:  fec42703           lw a4,-20(s0)
    9140:  c398                 sw a4,0(a5)
    9142:  4515                 li a0,5
    9144:  040010ef           jal ra,a184 <udelay>
    9148:  0001                 nop
    914a:  60e2                 ld ra,24(sp)
    914c:  6442                 ld s0,16(sp)
    914e:  6105                 addi sp,sp,32
    9150:  8082                 ret

0000000000009152 <ccu_set_apb_to_24_MHz>:
    9152:  1101                 addi sp,sp,-32
    9154:  ec06                 sd ra,24(sp)
    9156:  e822                 sd s0,16(sp)
    9158:  1000                 addi s0,sp,32
    915a:  fe042623           sw zero,-20(s0)
    915e:  020017b7           lui a5,0x2001
    9162:  52078793           addi a5,a5,1312 # 2001520 <gpio_get_boot_device+0x1ff318
    9166:  439c                 lw a5,0(a5)
    9168:  fef42623           sw a5,-20(s0)
    916c:  fec42703           lw a4,-20(s0)
    9170:  f90007b7           lui a5,0xf9000
    9174:  17fd                 addi a5,a5,-1
    9176:  8ff9                 and a5,a5,a4
    9178:  fef42623           sw a5,-20(s0)
    917c:  020017b7           lui a5,0x2001
    9180:  52078793           addi a5,a5,1312 # 2001520 <gpio_get_boot_device+0x1ff318
    9184:  fec42703           lw a4,-20(s0)
    9188:  c398                 sw a4,0(a5)
    918a:  4529                 li a0,10
    918c:  7f9000ef           jal ra,a184 <udelay>
    9190:  020017b7           lui a5,0x2001
    9194:  52078793           addi a5,a5,1312 # 2001520 <gpio_get_boot_device+0x1ff318
    9198:  439c                 lw a5,0(a5)
    919a:  fef42623           sw a5,-20(s0)
    919e:  fec42783           lw a5,-20(s0)
    91a2:  ce07f793           andi a5,a5,-800
    91a6:  fef42623           sw a5,-20(s0)
    91aa:  020017b7           lui a5,0x2001
    91ae:  52078793           addi a5,a5,1312 # 2001520 <gpio_get_boot_device+0x1ff318
    91b2:  fec42703           lw a4,-20(s0)
    91b6:  c398                 sw a4,0(a5)
    91b8:  4529                 li a0,10
    91ba:  7cb000ef           jal ra,a184 <udelay>
    91be:  020017b7           lui a5,0x2001
    91c2:  52478793           addi a5,a5,1316 # 2001524 <gpio_get_boot_device+0x1ff318
    91c6:  439c                 lw a5,0(a5)
    91c8:  fef42623           sw a5,-20(s0)
    91cc:  fec42703           lw a4,-20(s0)
    91d0:  f90007b7           lui a5,0xf9000
    91d4:  17fd                 addi a5,a5,-1
    91d6:  8ff9                 and a5,a5,a4
    91d8:  fef42623           sw a5,-20(s0)
    91dc:  020017b7           lui a5,0x2001
    91e0:  52478793           addi a5,a5,1316 # 2001524 <gpio_get_boot_device+0x1ff318
    91e4:  fec42703           lw a4,-20(s0)
    91e8:  c398                 sw a4,0(a5)
    91ea:  4529                 li a0,10
    91ec:  799000ef           jal ra,a184 <udelay>
    91f0:  020017b7           lui a5,0x2001
    91f4:  52478793           addi a5,a5,1316 # 2001524 <gpio_get_boot_device+0x1ff318
    91f8:  439c                 lw a5,0(a5)
    91fa:  fef42623           sw a5,-20(s0)
    91fe:  fec42783           lw a5,-20(s0)
    9202:  ce07f793           andi a5,a5,-800
    9206:  fef42623           sw a5,-20(s0)
    920a:  020017b7           lui a5,0x2001
    920e:  52478793           addi a5,a5,1316 # 2001524 <gpio_get_boot_device+0x1ff318
    9212:  fec42703           lw a4,-20(s0)
    9216:  c398                 sw a4,0(a5)
    9218:  4515                 li a0,5
    921a:  76b000ef           jal ra,a184 <udelay>
    921e:  0001                 nop
    9220:  60e2                 ld ra,24(sp)
    9222:  6442                 ld s0,16(sp)
    9224:  6105                 addi sp,sp,32
    9226:  8082                 ret

0000000000009228 <ccu_set_ce_to_hosc>:
    9228:  1101                 addi sp,sp,-32
    922a:  ec06                 sd ra,24(sp)
    922c:  e822                 sd s0,16(sp)
    922e:  1000                 addi s0,sp,32
    9230:  fe042623           sw zero,-20(s0)
    9234:  020017b7           lui a5,0x2001
    9238:  68078793           addi a5,a5,1664 # 2001680 <gpio_get_boot_device+0x1ff32e
    923c:  439c                 lw a5,0(a5)
    923e:  fef42623           sw a5,-20(s0)
    9242:  fec42783           lw a5,-20(s0)
    9246:  cf07f793           andi a5,a5,-784
    924a:  fef42623           sw a5,-20(s0)
    924e:  020017b7           lui a5,0x2001
    9252:  68078793           addi a5,a5,1664 # 2001680 <gpio_get_boot_device+0x1ff32e
    9256:  fec42703           lw a4,-20(s0)
    925a:  c398                 sw a4,0(a5)
    925c:  4529                 li a0,10
    925e:  727000ef           jal ra,a184 <udelay>
    9262:  020017b7           lui a5,0x2001
    9266:  68078793           addi a5,a5,1664 # 2001680 <gpio_get_boot_device+0x1ff32e
    926a:  439c                 lw a5,0(a5)
    926c:  fef42623           sw a5,-20(s0)
    9270:  fec42703           lw a4,-20(s0)
    9274:  fd0007b7           lui a5,0xfd000
    9278:  17fd                 addi a5,a5,-1
    927a:  8ff9                 and a5,a5,a4
    927c:  fef42623           sw a5,-20(s0)
    9280:  020017b7           lui a5,0x2001
    9284:  68078793           addi a5,a5,1664 # 2001680 <gpio_get_boot_device+0x1ff32e
    9288:  fec42703           lw a4,-20(s0)
    928c:  c398                 sw a4,0(a5)
    928e:  4529                 li a0,10
    9290:  6f5000ef           jal ra,a184 <udelay>
    9294:  020017b7           lui a5,0x2001
    9298:  68078793           addi a5,a5,1664 # 2001680 <gpio_get_boot_device+0x1ff32e
    929c:  439c                 lw a5,0(a5)
    929e:  fef42623           sw a5,-20(s0)
    92a2:  fec42703           lw a4,-20(s0)
    92a6:  800007b7           lui a5,0x80000
    92aa:  8fd9                 or a5,a5,a4
    92ac:  fef42623           sw a5,-20(s0)
    92b0:  020017b7           lui a5,0x2001
    92b4:  68078793           addi a5,a5,1664 # 2001680 <gpio_get_boot_device+0x1ff32e
    92b8:  fec42703           lw a4,-20(s0)
    92bc:  c398                 sw a4,0(a5)
    92be:  0001                 nop
    92c0:  60e2                 ld ra,24(sp)
    92c2:  6442                 ld s0,16(sp)
    92c4:  6105                 addi sp,sp,32
    92c6:  8082                 ret

00000000000092c8 <FUN_000092c8>:
    92c8:  7179                 addi sp,sp,-48
    92ca:  f406                 sd ra,40(sp)
    92cc:  f022                 sd s0,32(sp)
    92ce:  1800                 addi s0,sp,48
    92d0:  87aa                 mv a5,a0
    92d2:  fcf42e23           sw a5,-36(s0)
    92d6:  fe042623           sw zero,-20(s0)
    92da:  020027b7           lui a5,0x2002
    92de:  80c78793           addi a5,a5,-2036 # 200180c <gpio_get_boot_device+0x1ff34
    92e2:  439c                 lw a5,0(a5)
    92e4:  fef42623           sw a5,-20(s0)
    92e8:  fec42783           lw a5,-20(s0)
    92ec:  9bf9                 andi a5,a5,-2
    92ee:  fef42623           sw a5,-20(s0)
    92f2:  fec42703           lw a4,-20(s0)
    92f6:  fdc42783           lw a5,-36(s0)
    92fa:  8fd9                 or a5,a5,a4
    92fc:  fef42623           sw a5,-20(s0)
    9300:  020027b7           lui a5,0x2002
    9304:  80c78793           addi a5,a5,-2036 # 200180c <gpio_get_boot_device+0x1ff34
    9308:  fec42703           lw a4,-20(s0)
    930c:  c398                 sw a4,0(a5)
    930e:  4529                 li a0,10
    9310:  675000ef           jal ra,a184 <udelay>
    9314:  0001                 nop
    9316:  70a2                 ld ra,40(sp)
    9318:  7402                 ld s0,32(sp)
    931a:  6145                 addi sp,sp,48
    931c:  8082                 ret

000000000000931e <FUN_0000931e>:
    931e:  1101                 addi sp,sp,-32
    9320:  ec06                 sd ra,24(sp)
    9322:  e822                 sd s0,16(sp)
    9324:  1000                 addi s0,sp,32
    9326:  fe042623           sw zero,-20(s0)
    932a:  4501                 li a0,0
    932c:  f9dff0ef           jal ra,92c8 <FUN_000092c8>
    9330:  020027b7           lui a5,0x2002
    9334:  80078793           addi a5,a5,-2048 # 2001800 <gpio_get_boot_device+0x1ff34
    9338:  439c                 lw a5,0(a5)
    933a:  fef42623           sw a5,-20(s0)
    933e:  fec42703           lw a4,-20(s0)
    9342:  800007b7           lui a5,0x80000
    9346:  fff7c793           not a5,a5
    934a:  8ff9                 and a5,a5,a4
    934c:  fef42623           sw a5,-20(s0)
    9350:  020027b7           lui a5,0x2002
    9354:  80078793           addi a5,a5,-2048 # 2001800 <gpio_get_boot_device+0x1ff34
    9358:  fec42703           lw a4,-20(s0)
    935c:  c398                 sw a4,0(a5)
    935e:  4515                 li a0,5
    9360:  625000ef           jal ra,a184 <udelay>
    9364:  020027b7           lui a5,0x2002
    9368:  80078793           addi a5,a5,-2048 # 2001800 <gpio_get_boot_device+0x1ff34
    936c:  439c                 lw a5,0(a5)
    936e:  fef42623           sw a5,-20(s0)
    9372:  fec42783           lw a5,-20(s0)
    9376:  cfc7f793           andi a5,a5,-772
    937a:  fef42623           sw a5,-20(s0)
    937e:  fec42783           lw a5,-20(s0)
    9382:  0017e793           ori a5,a5,1
    9386:  fef42623           sw a5,-20(s0)
    938a:  020027b7           lui a5,0x2002
    938e:  80078793           addi a5,a5,-2048 # 2001800 <gpio_get_boot_device+0x1ff34
    9392:  fec42703           lw a4,-20(s0)
    9396:  c398                 sw a4,0(a5)
    9398:  4515                 li a0,5
    939a:  5eb000ef           jal ra,a184 <udelay>
    939e:  020027b7           lui a5,0x2002
    93a2:  80078793           addi a5,a5,-2048 # 2001800 <gpio_get_boot_device+0x1ff34
    93a6:  439c                 lw a5,0(a5)
    93a8:  fef42623           sw a5,-20(s0)
    93ac:  fec42703           lw a4,-20(s0)
    93b0:  fd0007b7           lui a5,0xfd000
    93b4:  17fd                 addi a5,a5,-1
    93b6:  8ff9                 and a5,a5,a4
    93b8:  fef42623           sw a5,-20(s0)
    93bc:  fec42703           lw a4,-20(s0)
    93c0:  020007b7           lui a5,0x2000
    93c4:  8fd9                 or a5,a5,a4
    93c6:  fef42623           sw a5,-20(s0)
    93ca:  020027b7           lui a5,0x2002
    93ce:  80078793           addi a5,a5,-2048 # 2001800 <gpio_get_boot_device+0x1ff34
    93d2:  fec42703           lw a4,-20(s0)
    93d6:  c398                 sw a4,0(a5)
    93d8:  4515                 li a0,5
    93da:  5ab000ef           jal ra,a184 <udelay>
    93de:  020027b7           lui a5,0x2002
    93e2:  80078793           addi a5,a5,-2048 # 2001800 <gpio_get_boot_device+0x1ff34
    93e6:  439c                 lw a5,0(a5)
    93e8:  fef42623           sw a5,-20(s0)
    93ec:  fec42703           lw a4,-20(s0)
    93f0:  800007b7           lui a5,0x80000
    93f4:  8fd9                 or a5,a5,a4
    93f6:  fef42623           sw a5,-20(s0)
    93fa:  020027b7           lui a5,0x2002
    93fe:  80078793           addi a5,a5,-2048 # 2001800 <gpio_get_boot_device+0x1ff34
    9402:  fec42703           lw a4,-20(s0)
    9406:  c398                 sw a4,0(a5)
    9408:  4515                 li a0,5
    940a:  57b000ef           jal ra,a184 <udelay>
    940e:  0001                 nop
    9410:  60e2                 ld ra,24(sp)
    9412:  6442                 ld s0,16(sp)
    9414:  6105                 addi sp,sp,32
    9416:  8082                 ret

0000000000009418 <FUN_00009418>:
    9418:  7179                 addi sp,sp,-48
    941a:  f406                 sd ra,40(sp)
    941c:  f022                 sd s0,32(sp)
    941e:  1800                 addi s0,sp,48
    9420:  87aa                 mv a5,a0
    9422:  fcf42e23           sw a5,-36(s0)
    9426:  fe042623           sw zero,-20(s0)
    942a:  020017b7           lui a5,0x2001
    942e:  54078793           addi a5,a5,1344 # 2001540 <gpio_get_boot_device+0x1ff31a
    9432:  439c                 lw a5,0(a5)
    9434:  fef42623           sw a5,-20(s0)
    9438:  fec42703           lw a4,-20(s0)
    943c:  c00007b7           lui a5,0xc0000
    9440:  17fd                 addi a5,a5,-1
    9442:  8ff9                 and a5,a5,a4
    9444:  fef42623           sw a5,-20(s0)
    9448:  fdc42783           lw a5,-36(s0)
    944c:  01e7979b           slliw a5,a5,0x1e
    9450:  0007871b           sext.w a4,a5
    9454:  fec42783           lw a5,-20(s0)
    9458:  8fd9                 or a5,a5,a4
    945a:  fef42623           sw a5,-20(s0)
    945e:  020017b7           lui a5,0x2001
    9462:  54078793           addi a5,a5,1344 # 2001540 <gpio_get_boot_device+0x1ff31a
    9466:  fec42703           lw a4,-20(s0)
    946a:  c398                 sw a4,0(a5)
    946c:  4529                 li a0,10
    946e:  517000ef           jal ra,a184 <udelay>
    9472:  0001                 nop
    9474:  70a2                 ld ra,40(sp)
    9476:  7402                 ld s0,32(sp)
    9478:  6145                 addi sp,sp,48
    947a:  8082                 ret

000000000000947c <ccu_reset_mbus_dram>:
    947c:  1141                 addi sp,sp,-16
    947e:  e406                 sd ra,8(sp)
    9480:  e022                 sd s0,0(sp)
    9482:  0800                 addi s0,sp,16
    9484:  94bff0ef           jal ra,8dce <FUN_00008dce>
    9488:  e97ff0ef           jal ra,931e <FUN_0000931e>
    948c:  4501                 li a0,0
    948e:  f8bff0ef           jal ra,9418 <FUN_00009418>
    9492:  4505                 li a0,1
    9494:  e35ff0ef           jal ra,92c8 <FUN_000092c8>
    9498:  4501                 li a0,0
    949a:  e2fff0ef           jal ra,92c8 <FUN_000092c8>
    949e:  4505                 li a0,1
    94a0:  f79ff0ef           jal ra,9418 <FUN_00009418>
    94a4:  4505                 li a0,1
    94a6:  e23ff0ef           jal ra,92c8 <FUN_000092c8>
    94aa:  0001                 nop
    94ac:  60a2                 ld ra,8(sp)
    94ae:  6402                 ld s0,0(sp)
    94b0:  0141                 addi sp,sp,16
    94b2:  8082                 ret

00000000000094b4 <ccu_set_ce_reset>:
    94b4:  7179                 addi sp,sp,-48
    94b6:  f406                 sd ra,40(sp)
    94b8:  f022                 sd s0,32(sp)
    94ba:  1800                 addi s0,sp,48
    94bc:  87aa                 mv a5,a0
    94be:  fcf42e23           sw a5,-36(s0)
    94c2:  fe042623           sw zero,-20(s0)
    94c6:  020017b7           lui a5,0x2001
    94ca:  68c78793           addi a5,a5,1676 # 200168c <gpio_get_boot_device+0x1ff32f
    94ce:  439c                 lw a5,0(a5)
    94d0:  fef42623           sw a5,-20(s0)
    94d4:  fec42703           lw a4,-20(s0)
    94d8:  77c1                 lui a5,0xffff0
    94da:  17fd                 addi a5,a5,-1
    94dc:  8ff9                 and a5,a5,a4
    94de:  fef42623           sw a5,-20(s0)
    94e2:  fdc42783           lw a5,-36(s0)
    94e6:  0107979b           slliw a5,a5,0x10
    94ea:  0007871b           sext.w a4,a5
    94ee:  fec42783           lw a5,-20(s0)
    94f2:  8fd9                 or a5,a5,a4
    94f4:  fef42623           sw a5,-20(s0)
    94f8:  020017b7           lui a5,0x2001
    94fc:  68c78793           addi a5,a5,1676 # 200168c <gpio_get_boot_device+0x1ff32f
    9500:  fec42703           lw a4,-20(s0)
    9504:  c398                 sw a4,0(a5)
    9506:  4529                 li a0,10
    9508:  47d000ef           jal ra,a184 <udelay>
    950c:  0001                 nop
    950e:  70a2                 ld ra,40(sp)
    9510:  7402                 ld s0,32(sp)
    9512:  6145                 addi sp,sp,48
    9514:  8082                 ret

0000000000009516 <ccu_set_ce_gating>:
    9516:  7179                 addi sp,sp,-48
    9518:  f406                 sd ra,40(sp)
    951a:  f022                 sd s0,32(sp)
    951c:  1800                 addi s0,sp,48
    951e:  87aa                 mv a5,a0
    9520:  fcf42e23           sw a5,-36(s0)
    9524:  fe042623           sw zero,-20(s0)
    9528:  020017b7           lui a5,0x2001
    952c:  68c78793           addi a5,a5,1676 # 200168c <gpio_get_boot_device+0x1ff32f
    9530:  439c                 lw a5,0(a5)
    9532:  fef42623           sw a5,-20(s0)
    9536:  fec42783           lw a5,-20(s0)
    953a:  9bf9                 andi a5,a5,-2
    953c:  fef42623           sw a5,-20(s0)
    9540:  fec42703           lw a4,-20(s0)
    9544:  fdc42783           lw a5,-36(s0)
    9548:  8fd9                 or a5,a5,a4
    954a:  fef42623           sw a5,-20(s0)
    954e:  020017b7           lui a5,0x2001
    9552:  68c78793           addi a5,a5,1676 # 200168c <gpio_get_boot_device+0x1ff32f
    9556:  fec42703           lw a4,-20(s0)
    955a:  c398                 sw a4,0(a5)
    955c:  4529                 li a0,10
    955e:  427000ef           jal ra,a184 <udelay>
    9562:  0001                 nop
    9564:  70a2                 ld ra,40(sp)
    9566:  7402                 ld s0,32(sp)
    9568:  6145                 addi sp,sp,48
    956a:  8082                 ret

000000000000956c <ccu_set_ce_to_pll>:
    956c:  7179                 addi sp,sp,-48
    956e:  f406                 sd ra,40(sp)
    9570:  f022                 sd s0,32(sp)
    9572:  1800                 addi s0,sp,48
    9574:  87aa                 mv a5,a0
    9576:  fcf42e23           sw a5,-36(s0)
    957a:  fe042623           sw zero,-20(s0)
    957e:  4501                 li a0,0
    9580:  f97ff0ef           jal ra,9516 <ccu_set_ce_gating>
    9584:  020017b7           lui a5,0x2001
    9588:  68078793           addi a5,a5,1664 # 2001680 <gpio_get_boot_device+0x1ff32e
    958c:  439c                 lw a5,0(a5)
    958e:  fef42623           sw a5,-20(s0)
    9592:  fec42703           lw a4,-20(s0)
    9596:  800007b7           lui a5,0x80000
    959a:  fff7c793           not a5,a5
    959e:  8ff9                 and a5,a5,a4
    95a0:  fef42623           sw a5,-20(s0)
    95a4:  020017b7           lui a5,0x2001
    95a8:  68078793           addi a5,a5,1664 # 2001680 <gpio_get_boot_device+0x1ff32e
    95ac:  fec42703           lw a4,-20(s0)
    95b0:  c398                 sw a4,0(a5)
    95b2:  4515                 li a0,5
    95b4:  3d1000ef           jal ra,a184 <udelay>
    95b8:  020017b7           lui a5,0x2001
    95bc:  68078793           addi a5,a5,1664 # 2001680 <gpio_get_boot_device+0x1ff32e
    95c0:  439c                 lw a5,0(a5)
    95c2:  fef42623           sw a5,-20(s0)
    95c6:  fec42783           lw a5,-20(s0)
    95ca:  cf07f793           andi a5,a5,-784
    95ce:  fef42623           sw a5,-20(s0)
    95d2:  fec42703           lw a4,-20(s0)
    95d6:  fdc42783           lw a5,-36(s0)
    95da:  8fd9                 or a5,a5,a4
    95dc:  fef42623           sw a5,-20(s0)
    95e0:  020017b7           lui a5,0x2001
    95e4:  68078793           addi a5,a5,1664 # 2001680 <gpio_get_boot_device+0x1ff32e
    95e8:  fec42703           lw a4,-20(s0)
    95ec:  c398                 sw a4,0(a5)
    95ee:  4515                 li a0,5
    95f0:  395000ef           jal ra,a184 <udelay>
    95f4:  020017b7           lui a5,0x2001
    95f8:  68078793           addi a5,a5,1664 # 2001680 <gpio_get_boot_device+0x1ff32e
    95fc:  439c                 lw a5,0(a5)
    95fe:  fef42623           sw a5,-20(s0)
    9602:  fec42703           lw a4,-20(s0)
    9606:  fd0007b7           lui a5,0xfd000
    960a:  17fd                 addi a5,a5,-1
    960c:  8ff9                 and a5,a5,a4
    960e:  fef42623           sw a5,-20(s0)
    9612:  fec42703           lw a4,-20(s0)
    9616:  010007b7           lui a5,0x1000
    961a:  8fd9                 or a5,a5,a4
    961c:  fef42623           sw a5,-20(s0)
    9620:  020017b7           lui a5,0x2001
    9624:  68078793           addi a5,a5,1664 # 2001680 <gpio_get_boot_device+0x1ff32e
    9628:  fec42703           lw a4,-20(s0)
    962c:  c398                 sw a4,0(a5)
    962e:  4515                 li a0,5
    9630:  355000ef           jal ra,a184 <udelay>
    9634:  020017b7           lui a5,0x2001
    9638:  68078793           addi a5,a5,1664 # 2001680 <gpio_get_boot_device+0x1ff32e
    963c:  439c                 lw a5,0(a5)
    963e:  fef42623           sw a5,-20(s0)
    9642:  fec42703           lw a4,-20(s0)
    9646:  800007b7           lui a5,0x80000
    964a:  8fd9                 or a5,a5,a4
    964c:  fef42623           sw a5,-20(s0)
    9650:  020017b7           lui a5,0x2001
    9654:  68078793           addi a5,a5,1664 # 2001680 <gpio_get_boot_device+0x1ff32e
    9658:  fec42703           lw a4,-20(s0)
    965c:  c398                 sw a4,0(a5)
    965e:  0001                 nop
    9660:  70a2                 ld ra,40(sp)
    9662:  7402                 ld s0,32(sp)
    9664:  6145                 addi sp,sp,48
    9666:  8082                 ret

0000000000009668 <ccu_set_ce_clocks>:
    9668:  7179                 addi sp,sp,-48
    966a:  f406                 sd ra,40(sp)
    966c:  f022                 sd s0,32(sp)
    966e:  1800                 addi s0,sp,48
    9670:  87aa                 mv a5,a0
    9672:  fcf42e23           sw a5,-36(s0)
    9676:  fe042423           sw zero,-24(s0)
    967a:  4789                 li a5,2
    967c:  fef42623           sw a5,-20(s0)
    9680:  dfdff0ef           jal ra,947c <ccu_reset_mbus_dram>
    9684:  fdc42783           lw a5,-36(s0)
    9688:  2781                 sext.w a5,a5
    968a:  e781                 bnez a5,9692 <ccu_set_ce_clocks+0x2a>
    968c:  b9dff0ef           jal ra,9228 <ccu_set_ce_to_hosc>
    9690:  a829                 j 96aa <ccu_set_ce_clocks+0x42>
    9692:  915fe0ef           jal ra,7fa6 <brom_config_lower_ce_freq>
    9696:  87aa                 mv a5,a0
    9698:  c781                 beqz a5,96a0 <ccu_set_ce_clocks+0x38>
    969a:  478d                 li a5,3
    969c:  fef42623           sw a5,-20(s0)
    96a0:  fec42783           lw a5,-20(s0)
    96a4:  853e                 mv a0,a5
    96a6:  ec7ff0ef           jal ra,956c <ccu_set_ce_to_pll>
    96aa:  4501                 li a0,0
    96ac:  e09ff0ef           jal ra,94b4 <ccu_set_ce_reset>
    96b0:  4505                 li a0,1
    96b2:  e65ff0ef           jal ra,9516 <ccu_set_ce_gating>
    96b6:  4501                 li a0,0
    96b8:  e5fff0ef           jal ra,9516 <ccu_set_ce_gating>
    96bc:  4505                 li a0,1
    96be:  df7ff0ef           jal ra,94b4 <ccu_set_ce_reset>
    96c2:  4505                 li a0,1
    96c4:  e53ff0ef           jal ra,9516 <ccu_set_ce_gating>
    96c8:  020027b7           lui a5,0x2002
    96cc:  80478793           addi a5,a5,-2044 # 2001804 <gpio_get_boot_device+0x1ff34
    96d0:  439c                 lw a5,0(a5)
    96d2:  fef42423           sw a5,-24(s0)
    96d6:  fe842783           lw a5,-24(s0)
    96da:  0047e793           ori a5,a5,4
    96de:  fef42423           sw a5,-24(s0)
    96e2:  020027b7           lui a5,0x2002
    96e6:  80478793           addi a5,a5,-2044 # 2001804 <gpio_get_boot_device+0x1ff34
    96ea:  fe842703           lw a4,-24(s0)
    96ee:  c398                 sw a4,0(a5)
    96f0:  0001                 nop
    96f2:  70a2                 ld ra,40(sp)
    96f4:  7402                 ld s0,32(sp)
    96f6:  6145                 addi sp,sp,48
    96f8:  8082                 ret

00000000000096fa <ccu_init_cpu_ce_clocks>:
    96fa:  1101                 addi sp,sp,-32
    96fc:  ec06                 sd ra,24(sp)
    96fe:  e822                 sd s0,16(sp)
    9700:  1000                 addi s0,sp,32
    9702:  fe042423           sw zero,-24(s0)
    9706:  47c1                 li a5,16
    9708:  fef42223           sw a5,-28(s0)
    970c:  fe042623           sw zero,-20(s0)
    9710:  897fe0ef           jal ra,7fa6 <brom_config_lower_ce_freq>
    9714:  87aa                 mv a5,a0
    9716:  c781                 beqz a5,971e <ccu_init_cpu_ce_clocks+0x24>
    9718:  4785                 li a5,1
    971a:  fef42623           sw a5,-20(s0)
    971e:  fe442783           lw a5,-28(s0)
    9722:  853e                 mv a0,a5
    9724:  d02ff0ef           jal ra,8c26 <ccu_enable_pll_cpux>
    9728:  87aa                 mv a5,a0
    972a:  fef42423           sw a5,-24(s0)
    972e:  fe842783           lw a5,-24(s0)
    9732:  2781                 sext.w a5,a5
    9734:  0007d663           bgez a5,9740 <ccu_init_cpu_ce_clocks+0x46>
    9738:  4501                 li a0,0
    973a:  f2fff0ef           jal ra,9668 <ccu_set_ce_clocks>
    973e:  a81d                 j 9774 <ccu_init_cpu_ce_clocks+0x7a>
    9740:  daeff0ef           jal ra,8cee <FUN_00008cee>
    9744:  87aa                 mv a5,a0
    9746:  fef42423           sw a5,-24(s0)
    974a:  fe842783           lw a5,-24(s0)
    974e:  2781                 sext.w a5,a5
    9750:  0007d663           bgez a5,975c <ccu_init_cpu_ce_clocks+0x62>
    9754:  4501                 li a0,0
    9756:  f13ff0ef           jal ra,9668 <ccu_set_ce_clocks>
    975a:  a829                 j 9774 <ccu_init_cpu_ce_clocks+0x7a>
    975c:  f46ff0ef           jal ra,8ea2 <FUN_00008ea2>
    9760:  fec42783           lw a5,-20(s0)
    9764:  853e                 mv a0,a5
    9766:  fccff0ef           jal ra,8f32 <FUN_00008f32>
    976a:  86fff0ef           jal ra,8fd8 <FUN_00008fd8>
    976e:  4505                 li a0,1
    9770:  ef9ff0ef           jal ra,9668 <ccu_set_ce_clocks>
    9774:  60e2                 ld ra,24(sp)
    9776:  6442                 ld s0,16(sp)
    9778:  6105                 addi sp,sp,32
    977a:  8082                 ret

000000000000977c <set_audio_codec_gating_bias>:
    977c:  7179                 addi sp,sp,-48
    977e:  f422                 sd s0,40(sp)
    9780:  1800                 addi s0,sp,48
    9782:  87aa                 mv a5,a0
    9784:  fcf42e23           sw a5,-36(s0)
    9788:  020027b7           lui a5,0x2002
    978c:  a5c78793           addi a5,a5,-1444 # 2001a5c <gpio_get_boot_device+0x1ff36
    9790:  439c                 lw a5,0(a5)
    9792:  fef42623           sw a5,-20(s0)
    9796:  fec42703           lw a4,-20(s0)
    979a:  67c1                 lui a5,0x10
    979c:  8fd9                 or a5,a5,a4
    979e:  fef42623           sw a5,-20(s0)
    97a2:  020027b7           lui a5,0x2002
    97a6:  a5c78793           addi a5,a5,-1444 # 2001a5c <gpio_get_boot_device+0x1ff36
    97aa:  fec42703           lw a4,-20(s0)
    97ae:  c398                 sw a4,0(a5)
    97b0:  020027b7           lui a5,0x2002
    97b4:  a5c78793           addi a5,a5,-1444 # 2001a5c <gpio_get_boot_device+0x1ff36
    97b8:  439c                 lw a5,0(a5)
    97ba:  fef42623           sw a5,-20(s0)
    97be:  fec42783           lw a5,-20(s0)
    97c2:  0017e793           ori a5,a5,1
    97c6:  fef42623           sw a5,-20(s0)
    97ca:  020027b7           lui a5,0x2002
    97ce:  a5c78793           addi a5,a5,-1444 # 2001a5c <gpio_get_boot_device+0x1ff36
    97d2:  fec42703           lw a4,-20(s0)
    97d6:  c398                 sw a4,0(a5)
    97d8:  020307b7           lui a5,0x2030
    97dc:  32078793           addi a5,a5,800 # 2030320 <gpio_get_boot_device+0x2021f8a
    97e0:  439c                 lw a5,0(a5)
    97e2:  fef42623           sw a5,-20(s0)
    97e6:  fec42783           lw a5,-20(s0)
    97ea:  f007f793           andi a5,a5,-256
    97ee:  fef42623           sw a5,-20(s0)
    97f2:  fec42703           lw a4,-20(s0)
    97f6:  fdc42783           lw a5,-36(s0)
    97fa:  8fd9                 or a5,a5,a4
    97fc:  fef42623           sw a5,-20(s0)
    9800:  020307b7           lui a5,0x2030
    9804:  32078793           addi a5,a5,800 # 2030320 <gpio_get_boot_device+0x2021f8a
    9808:  fec42703           lw a4,-20(s0)
    980c:  c398                 sw a4,0(a5)
    980e:  0001                 nop
    9810:  7422                 ld s0,40(sp)
    9812:  6145                 addi sp,sp,48
    9814:  8082                 ret

0000000000009816 <set_bg_trim_voltage>:
    9816:  7179                 addi sp,sp,-48
    9818:  f422                 sd s0,40(sp)
    981a:  1800                 addi s0,sp,48
    981c:  87aa                 mv a5,a0
    981e:  fcf42e23           sw a5,-36(s0)
    9822:  020307b7           lui a5,0x2030
    9826:  34878793           addi a5,a5,840 # 2030348 <gpio_get_boot_device+0x2021fb2
    982a:  439c                 lw a5,0(a5)
    982c:  fef42623           sw a5,-20(s0)
    9830:  fec42783           lw a5,-20(s0)
    9834:  f007f793           andi a5,a5,-256
    9838:  fef42623           sw a5,-20(s0)
    983c:  fec42703           lw a4,-20(s0)
    9840:  fdc42783           lw a5,-36(s0)
    9844:  8fd9                 or a5,a5,a4
    9846:  fef42623           sw a5,-20(s0)
    984a:  020307b7           lui a5,0x2030
    984e:  34878793           addi a5,a5,840 # 2030348 <gpio_get_boot_device+0x2021fb2
    9852:  fec42703           lw a4,-20(s0)
    9856:  c398                 sw a4,0(a5)
    9858:  0001                 nop
    985a:  7422                 ld s0,40(sp)
    985c:  6145                 addi sp,sp,48
    985e:  8082                 ret

0000000000009860 <sid_read_voltages_0x14>:
    9860:  1101                 addi sp,sp,-32
    9862:  ec22                 sd s0,24(sp)
    9864:  1000                 addi s0,sp,32
    9866:  030067b7           lui a5,0x3006
    986a:  21478793           addi a5,a5,532 # 3006214 <gpio_get_boot_device+0x2ff7e7e
    986e:  439c                 lw a5,0(a5)
    9870:  fef42623           sw a5,-20(s0)
    9874:  fec42783           lw a5,-20(s0)
    9878:  01c7d79b           srliw a5,a5,0x1c
    987c:  fef42423           sw a5,-24(s0)
    9880:  fec42783           lw a5,-20(s0)
    9884:  00c7d79b           srliw a5,a5,0xc
    9888:  2781                 sext.w a5,a5
    988a:  8bbd                 andi a5,a5,15
    988c:  fef42223           sw a5,-28(s0)
    9890:  fe842783           lw a5,-24(s0)
    9894:  0047979b           slliw a5,a5,0x4
    9898:  0007871b           sext.w a4,a5
    989c:  fe442783           lw a5,-28(s0)
    98a0:  8fd9                 or a5,a5,a4
    98a2:  fef42623           sw a5,-20(s0)
    98a6:  fec42783           lw a5,-20(s0)
    98aa:  853e                 mv a0,a5
    98ac:  6462                 ld s0,24(sp)
    98ae:  6105                 addi sp,sp,32
    98b0:  8082                 ret

00000000000098b2 <sid_read_voltage_0x1c>:
    98b2:  1101                 addi sp,sp,-32
    98b4:  ec22                 sd s0,24(sp)
    98b6:  1000                 addi s0,sp,32
    98b8:  030067b7           lui a5,0x3006
    98bc:  21c78793           addi a5,a5,540 # 300621c <gpio_get_boot_device+0x2ff7e86
    98c0:  439c                 lw a5,0(a5)
    98c2:  fef42623           sw a5,-20(s0)
    98c6:  fec42783           lw a5,-20(s0)
    98ca:  0ff7f793           andi a5,a5,255
    98ce:  fef42623           sw a5,-20(s0)
    98d2:  fec42783           lw a5,-20(s0)
    98d6:  853e                 mv a0,a5
    98d8:  6462                 ld s0,24(sp)
    98da:  6105                 addi sp,sp,32
    98dc:  8082                 ret

00000000000098de <prcm_set_gpu_pwroff_gating>:
    98de:  1101                 addi sp,sp,-32
    98e0:  ec22                 sd s0,24(sp)
    98e2:  1000                 addi s0,sp,32
    98e4:  fe042623           sw zero,-20(s0)
    98e8:  070107b7           lui a5,0x7010
    98ec:  25478793           addi a5,a5,596 # 7010254 <gpio_get_boot_device+0x7001ebe
    98f0:  439c                 lw a5,0(a5)
    98f2:  fef42623           sw a5,-20(s0)
    98f6:  fec42783           lw a5,-20(s0)
    98fa:  9bf1                 andi a5,a5,-4
    98fc:  fef42623           sw a5,-20(s0)
    9900:  070107b7           lui a5,0x7010
    9904:  25478793           addi a5,a5,596 # 7010254 <gpio_get_boot_device+0x7001ebe
    9908:  fec42703           lw a4,-20(s0)
    990c:  c398                 sw a4,0(a5)
    990e:  0001                 nop
    9910:  6462                 ld s0,24(sp)
    9912:  6105                 addi sp,sp,32
    9914:  8082                 ret

0000000000009916 <prcm_set_ldo_voltage_bias>:
    9916:  1101                 addi sp,sp,-32
    9918:  ec06                 sd ra,24(sp)
    991a:  e822                 sd s0,16(sp)
    991c:  1000                 addi s0,sp,32
    991e:  fe042623           sw zero,-20(s0)
    9922:  fe042423           sw zero,-24(s0)
    9926:  f3bff0ef           jal ra,9860 <sid_read_voltages_0x14>
    992a:  87aa                 mv a5,a0
    992c:  fef42623           sw a5,-20(s0)
    9930:  f83ff0ef           jal ra,98b2 <sid_read_voltage_0x1c>
    9934:  87aa                 mv a5,a0
    9936:  fef42423           sw a5,-24(s0)
    993a:  fa5ff0ef           jal ra,98de <prcm_set_gpu_pwroff_gating>
    993e:  fe842783           lw a5,-24(s0)
    9942:  2781                 sext.w a5,a5
    9944:  c791                 beqz a5,9950 <prcm_set_ldo_voltage_bias+0x3a>
    9946:  fe842783           lw a5,-24(s0)
    994a:  853e                 mv a0,a5
    994c:  ecbff0ef           jal ra,9816 <set_bg_trim_voltage>
    9950:  fec42783           lw a5,-20(s0)
    9954:  2781                 sext.w a5,a5
    9956:  c791                 beqz a5,9962 <prcm_set_ldo_voltage_bias+0x4c>
    9958:  fec42783           lw a5,-20(s0)
    995c:  853e                 mv a0,a5
    995e:  e1fff0ef           jal ra,977c <set_audio_codec_gating_bias>
    9962:  0001                 nop
    9964:  60e2                 ld ra,24(sp)
    9966:  6442                 ld s0,16(sp)
    9968:  6105                 addi sp,sp,32
    996a:  8082                 ret

000000000000996c <rtc_enable_hosc_iosc>:
    996c:  1101                 addi sp,sp,-32
    996e:  ec06                 sd ra,24(sp)
    9970:  e822                 sd s0,16(sp)
    9972:  1000                 addi s0,sp,32
    9974:  fe042623           sw zero,-20(s0)
    9978:  070907b7           lui a5,0x7090
    997c:  16078793           addi a5,a5,352 # 7090160 <gpio_get_boot_device+0x7081dca
    9980:  439c                 lw a5,0(a5)
    9982:  fef42623           sw a5,-20(s0)
    9986:  fec42783           lw a5,-20(s0)
    998a:  8b8d                 andi a5,a5,3
    998c:  2781                 sext.w a5,a5
    998e:  873e                 mv a4,a5
    9990:  478d                 li a5,3
    9992:  02f70263           beq a4,a5,99b6 <rtc_enable_hosc_iosc+0x4a>
    9996:  fec42783           lw a5,-20(s0)
    999a:  0037e793           ori a5,a5,3
    999e:  fef42623           sw a5,-20(s0)
    99a2:  070907b7           lui a5,0x7090
    99a6:  16078793           addi a5,a5,352 # 7090160 <gpio_get_boot_device+0x7081dca
    99aa:  fec42703           lw a4,-20(s0)
    99ae:  c398                 sw a4,0(a5)
    99b0:  4515                 li a0,5
    99b2:  7fc000ef           jal ra,a1ae <udelay_x800>
    99b6:  0001                 nop
    99b8:  60e2                 ld ra,24(sp)
    99ba:  6442                 ld s0,16(sp)
    99bc:  6105                 addi sp,sp,32
    99be:  8082                 ret

00000000000099c0 <ccu_init_bus_clocks>:
    99c0:  1141                 addi sp,sp,-16
    99c2:  e406                 sd ra,8(sp)
    99c4:  e022                 sd s0,0(sp)
    99c6:  0800                 addi s0,sp,16
    99c8:  fa5ff0ef           jal ra,996c <rtc_enable_hosc_iosc>
    99cc:  f4bff0ef           jal ra,9916 <prcm_set_ldo_voltage_bias>
    99d0:  e98ff0ef           jal ra,9068 <ccu_set_cpux_to_24_MHz>
    99d4:  f08ff0ef           jal ra,90dc <ccu_set_psi_to_24_MHz>
    99d8:  f7aff0ef           jal ra,9152 <ccu_set_apb_to_24_MHz>
    99dc:  0001                 nop
    99de:  60a2                 ld ra,8(sp)
    99e0:  6402                 ld s0,0(sp)
    99e2:  0141                 addi sp,sp,16
    99e4:  8082                 ret

00000000000099e6 <ccu_init>:
    99e6:  1141                 addi sp,sp,-16
    99e8:  e406                 sd ra,8(sp)
    99ea:  e022                 sd s0,0(sp)
    99ec:  0800                 addi s0,sp,16
    99ee:  fd3ff0ef           jal ra,99c0 <ccu_init_bus_clocks>
    99f2:  d09ff0ef           jal ra,96fa <ccu_init_cpu_ce_clocks>
    99f6:  0001                 nop
    99f8:  60a2                 ld ra,8(sp)
    99fa:  6402                 ld s0,0(sp)
    99fc:  0141                 addi sp,sp,16
    99fe:  8082                 ret

0000000000009a00 <debug_syscon>:
    9a00:  1101                 addi sp,sp,-32
    9a02:  ec22                 sd s0,24(sp)
    9a04:  1000                 addi s0,sp,32
    9a06:  87aa                 mv a5,a0
    9a08:  872e                 mv a4,a1
    9a0a:  fef42623           sw a5,-20(s0)
    9a0e:  87ba                 mv a5,a4
    9a10:  fef42423           sw a5,-24(s0)
    9a14:  fe842783           lw a5,-24(s0)
    9a18:  2781                 sext.w a5,a5
    9a1a:  ef81                 bnez a5,9a32 <debug_syscon+0x32>
    9a1c:  030007b7           lui a5,0x3000
    9a20:  0b078793           addi a5,a5,176 # 30000b0 <gpio_get_boot_device+0x2ff1d1a
    9a24:  fec42703           lw a4,-20(s0)
    9a28:  0087171b           slliw a4,a4,0x8
    9a2c:  2701                 sext.w a4,a4
    9a2e:  c398                 sw a4,0(a5)
    9a30:  a801                 j 9a40 <debug_syscon+0x40>
    9a32:  030007b7           lui a5,0x3000
    9a36:  0b078793           addi a5,a5,176 # 30000b0 <gpio_get_boot_device+0x2ff1d1a
    9a3a:  fec42703           lw a4,-20(s0)
    9a3e:  c398                 sw a4,0(a5)
    9a40:  0001                 nop
    9a42:  6462                 ld s0,24(sp)
    9a44:  6105                 addi sp,sp,32
    9a46:  8082                 ret

0000000000009a48 <rtc_get_fast_boot_status>:
    9a48:  1101                 addi sp,sp,-32
    9a4a:  ec22                 sd s0,24(sp)
    9a4c:  1000                 addi s0,sp,32
    9a4e:  fe042623           sw zero,-20(s0)
    9a52:  070907b7           lui a5,0x7090
    9a56:  12078793           addi a5,a5,288 # 7090120 <gpio_get_boot_device+0x7081d8a
    9a5a:  439c                 lw a5,0(a5)
    9a5c:  fef42623           sw a5,-20(s0)
    9a60:  fec42783           lw a5,-20(s0)
    9a64:  853e                 mv a0,a5
    9a66:  6462                 ld s0,24(sp)
    9a68:  6105                 addi sp,sp,32
    9a6a:  8082                 ret

0000000000009a6c <FUN_00009a6c>:
    9a6c:  7179                 addi sp,sp,-48
    9a6e:  f422                 sd s0,40(sp)
    9a70:  1800                 addi s0,sp,48
    9a72:  87aa                 mv a5,a0
    9a74:  872e                 mv a4,a1
    9a76:  fcf42e23           sw a5,-36(s0)
    9a7a:  87ba                 mv a5,a4
    9a7c:  fcf42c23           sw a5,-40(s0)
    9a80:  fe042623           sw zero,-20(s0)
    9a84:  070907b7           lui a5,0x7090
    9a88:  12078793           addi a5,a5,288 # 7090120 <gpio_get_boot_device+0x7081d8a
    9a8c:  0007a023           sw zero,0(a5)
    9a90:  fdc42783           lw a5,-36(s0)
    9a94:  01c7979b           slliw a5,a5,0x1c
    9a98:  0007871b           sext.w a4,a5
    9a9c:  fd842783           lw a5,-40(s0)
    9aa0:  8fd9                 or a5,a5,a4
    9aa2:  0007871b           sext.w a4,a5
    9aa6:  fec42783           lw a5,-20(s0)
    9aaa:  8fd9                 or a5,a5,a4
    9aac:  fef42623           sw a5,-20(s0)
    9ab0:  070907b7           lui a5,0x7090
    9ab4:  12078793           addi a5,a5,288 # 7090120 <gpio_get_boot_device+0x7081d8a
    9ab8:  fec42703           lw a4,-20(s0)
    9abc:  c398                 sw a4,0(a5)
    9abe:  0001                 nop
    9ac0:  7422                 ld s0,40(sp)
    9ac2:  6145                 addi sp,sp,48
    9ac4:  8082                 ret

0000000000009ac6 <gpio_enable_jtag_pf>:
    9ac6:  1101                 addi sp,sp,-32
    9ac8:  ec22                 sd s0,24(sp)
    9aca:  1000                 addi s0,sp,32
    9acc:  fe042623           sw zero,-20(s0)
    9ad0:  020007b7           lui a5,0x2000
    9ad4:  0f07879b           addiw a5,a5,240
    9ad8:  fef42423           sw a5,-24(s0)
    9adc:  fe846783           lwu a5,-24(s0)
    9ae0:  439c                 lw a5,0(a5)
    9ae2:  fef42623           sw a5,-20(s0)
    9ae6:  fec42703           lw a4,-20(s0)
    9aea:  ff0f17b7           lui a5,0xff0f1
    9aee:  f0078793           addi a5,a5,-256 # ffffffffff0f0f00 <gpio_get_boot_device
    9af2:  8ff9                 and a5,a5,a4
    9af4:  fef42623           sw a5,-20(s0)
    9af8:  fec42703           lw a4,-20(s0)
    9afc:  004047b7           lui a5,0x404
    9b00:  04478793           addi a5,a5,68 # 404044 <gpio_get_boot_device+0x3f5cae>
    9b04:  8fd9                 or a5,a5,a4
    9b06:  fef42623           sw a5,-20(s0)
    9b0a:  fe846783           lwu a5,-24(s0)
    9b0e:  873e                 mv a4,a5
    9b10:  fec42783           lw a5,-20(s0)
    9b14:  c31c                 sw a5,0(a4)
    9b16:  0001                 nop
    9b18:  6462                 ld s0,24(sp)
    9b1a:  6105                 addi sp,sp,32
    9b1c:  8082                 ret

0000000000009b1e <riscv_init_caches>:
    9b1e:  1141                 addi sp,sp,-16
    9b20:  e406                 sd ra,8(sp)
    9b22:  e022                 sd s0,0(sp)
    9b24:  0800                 addi s0,sp,16
    9b26:  b4efe0ef           jal ra,7e74 <brom_config_skip_cache_setup>
    9b2a:  87aa                 mv a5,a0
    9b2c:  eb91                 bnez a5,9b40 <riscv_init_caches+0x22>
    9b2e:  7c1022f3           csrr t0,mhcr
    9b32:  0012e313           ori t1,t0,1
    9b36:  ffd37393           andi t2,t1,-3
    9b3a:  7c139073           csrw mhcr,t2
    9b3e:  a011                 j 9b42 <riscv_init_caches+0x24>
    9b40:  0001                 nop
    9b42:  60a2                 ld ra,8(sp)
    9b44:  6402                 ld s0,0(sp)
    9b46:  0141                 addi sp,sp,16
    9b48:  8082                 ret

0000000000009b4a <fel_boot>:
    9b4a:  1101                 addi sp,sp,-32
    9b4c:  ec06                 sd ra,24(sp)
    9b4e:  e822                 sd s0,16(sp)
    9b50:  1000                 addi s0,sp,32
    9b52:  87aa                 mv a5,a0
    9b54:  fef42623           sw a5,-20(s0)
    9b58:  f6fff0ef           jal ra,9ac6 <gpio_enable_jtag_pf>
    9b5c:  fec42783           lw a5,-20(s0)
    9b60:  0007871b           sext.w a4,a5
    9b64:  07f00793           li a5,127
    9b68:  00f71a63           bne a4,a5,9b7c <fel_boot+0x32>
    9b6c:  a4efe0ef           jal ra,7dba <sid_init_brom_config>
    9b70:  e77ff0ef           jal ra,99e6 <ccu_init>
    9b74:  4581                 li a1,0
    9b76:  4541                 li a0,16
    9b78:  e89ff0ef           jal ra,9a00 <debug_syscon>
    9b7c:  c50fe0ef           jal ra,7fcc <brom_config_disable_fel>
    9b80:  87aa                 mv a5,a0
    9b82:  c791                 beqz a5,9b8e <fel_boot+0x44>
    9b84:  4581                 li a1,0
    9b86:  4531                 li a0,12
    9b88:  ebcfe0ef           jal ra,8244 <debug_state_save>
    9b8c:  a001                 j 9b8c <fel_boot+0x42>
    9b8e:  4581                 li a1,0
    9b90:  453d                 li a0,15
    9b92:  e6fff0ef           jal ra,9a00 <debug_syscon>
    9b96:  0f3030ef           jal ra,d488 <fel_main>
    9b9a:  0001                 nop
    9b9c:  60e2                 ld ra,24(sp)
    9b9e:  6442                 ld s0,16(sp)
    9ba0:  6105                 addi sp,sp,32
    9ba2:  8082                 ret

0000000000009ba4 <boot_finish>:
    9ba4:  7179                 addi sp,sp,-48
    9ba6:  f406                 sd ra,40(sp)
    9ba8:  f022                 sd s0,32(sp)
    9baa:  1800                 addi s0,sp,48
    9bac:  87aa                 mv a5,a0
    9bae:  872e                 mv a4,a1
    9bb0:  fcf42e23           sw a5,-36(s0)
    9bb4:  87ba                 mv a5,a4
    9bb6:  fcf42c23           sw a5,-40(s0)
    9bba:  fe042623           sw zero,-20(s0)
    9bbe:  fdc46783           lwu a5,-36(s0)
    9bc2:  fef43023           sd a5,-32(s0)
    9bc6:  fdc42783           lw a5,-36(s0)
    9bca:  853e                 mv a0,a5
    9bcc:  de8f60ef           jal ra,1b4 <boot_jump>
    9bd0:  0001                 nop
    9bd2:  70a2                 ld ra,40(sp)
    9bd4:  7402                 ld s0,32(sp)
    9bd6:  6145                 addi sp,sp,48
    9bd8:  8082                 ret

0000000000009bda <trap_handler>:
    9bda:  7179                 addi sp,sp,-48
    9bdc:  f406                 sd ra,40(sp)
    9bde:  f022                 sd s0,32(sp)
    9be0:  1800                 addi s0,sp,48
    9be2:  fca43c23           sd a0,-40(s0)
    9be6:  fe042623           sw zero,-20(s0)
    9bea:  fd843783           ld a5,-40(s0)
    9bee:  2781                 sext.w a5,a5
    9bf0:  8bbd                 andi a5,a5,15
    9bf2:  fef42623           sw a5,-20(s0)
    9bf6:  fd843783           ld a5,-40(s0)
    9bfa:  0207d563           bgez a5,9c24 <trap_handler+0x4a>
    9bfe:  fec42783           lw a5,-20(s0)
    9c02:  0007871b           sext.w a4,a5
    9c06:  47ad                 li a5,11
    9c08:  00f71563           bne a4,a5,9c12 <trap_handler+0x38>
    9c0c:  3ca010ef           jal ra,afd6 <interrupt_handler>
    9c10:  a00d                 j 9c32 <trap_handler+0x58>
    9c12:  fec42783           lw a5,-20(s0)
    9c16:  85be                 mv a1,a5
    9c18:  4501                 li a0,0
    9c1a:  e2afe0ef           jal ra,8244 <debug_state_save>
    9c1e:  a001                 j 9c1e <trap_handler+0x44>
    9c20:  0001                 nop
    9c22:  a801                 j 9c32 <trap_handler+0x58>
    9c24:  fec42783           lw a5,-20(s0)
    9c28:  85be                 mv a1,a5
    9c2a:  4501                 li a0,0
    9c2c:  e18fe0ef           jal ra,8244 <debug_state_save>
    9c30:  a001                 j 9c30 <trap_handler+0x56>
    9c32:  0001                 nop
    9c34:  70a2                 ld ra,40(sp)
    9c36:  7402                 ld s0,32(sp)
    9c38:  6145                 addi sp,sp,48
    9c3a:  8082                 ret

0000000000009c3c <FUN_00009c3c>:
    9c3c:  7139                 addi sp,sp,-64
    9c3e:  fc06                 sd ra,56(sp)
    9c40:  f822                 sd s0,48(sp)
    9c42:  0080                 addi s0,sp,64
    9c44:  87aa                 mv a5,a0
    9c46:  fcd43423           sd a3,-56(s0)
    9c4a:  fcf42e23           sw a5,-36(s0)
    9c4e:  87ae                 mv a5,a1
    9c50:  fcf42c23           sw a5,-40(s0)
    9c54:  87b2                 mv a5,a2
    9c56:  fcf42a23           sw a5,-44(s0)
    9c5a:  87ba                 mv a5,a4
    9c5c:  fcf42823           sw a5,-48(s0)
    9c60:  000457b7           lui a5,0x45
    9c64:  fef43423           sd a5,-24(s0)
    9c68:  fe843783           ld a5,-24(s0)
    9c6c:  fdc42703           lw a4,-36(s0)
    9c70:  c398                 sw a4,0(a5)
    9c72:  fe843783           ld a5,-24(s0)
    9c76:  fd442703           lw a4,-44(s0)
    9c7a:  c3d8                 sw a4,4(a5)
    9c7c:  fc843783           ld a5,-56(s0)
    9c80:  0007871b           sext.w a4,a5
    9c84:  fe843783           ld a5,-24(s0)
    9c88:  c798                 sw a4,8(a5)
    9c8a:  fe843783           ld a5,-24(s0)
    9c8e:  fd042703           lw a4,-48(s0)
    9c92:  c7d8                 sw a4,12(a5)
    9c94:  fe843783           ld a5,-24(s0)
    9c98:  fd842703           lw a4,-40(s0)
    9c9c:  cb98                 sw a4,16(a5)
    9c9e:  fe843783           ld a5,-24(s0)
    9ca2:  80000713           li a4,-2048
    9ca6:  cbd8                 sw a4,20(a5)
    9ca8:  030027b7           lui a5,0x3002
    9cac:  10078793           addi a5,a5,256 # 3002100 <gpio_get_boot_device+0x2ff3d6a
    9cb0:  0007a023           sw zero,0(a5)
    9cb4:  030027b7           lui a5,0x3002
    9cb8:  07c1                 addi a5,a5,16
    9cba:  473d                 li a4,15
    9cbc:  c398                 sw a4,0(a5)
    9cbe:  fe843703           ld a4,-24(s0)
    9cc2:  030027b7           lui a5,0x3002
    9cc6:  10878793           addi a5,a5,264 # 3002108 <gpio_get_boot_device+0x2ff3d72
    9cca:  2701                 sext.w a4,a4
    9ccc:  c398                 sw a4,0(a5)
    9cce:  a7efe0ef           jal ra,7f4c <brom_config_bit_6>
    9cd2:  87aa                 mv a5,a0
    9cd4:  cb81                 beqz a5,9ce4 <FUN_00009c3c+0xa8>
    9cd6:  030027b7           lui a5,0x3002
    9cda:  12878793           addi a5,a5,296 # 3002128 <gpio_get_boot_device+0x2ff3d92
    9cde:  0007a023           sw zero,0(a5)
    9ce2:  a039                 j 9cf0 <FUN_00009c3c+0xb4>
    9ce4:  030027b7           lui a5,0x3002
    9ce8:  12878793           addi a5,a5,296 # 3002128 <gpio_get_boot_device+0x2ff3d92
    9cec:  4731                 li a4,12
    9cee:  c398                 sw a4,0(a5)
    9cf0:  030027b7           lui a5,0x3002
    9cf4:  10078793           addi a5,a5,256 # 3002100 <gpio_get_boot_device+0x2ff3d6a
    9cf8:  4705                 li a4,1
    9cfa:  c398                 sw a4,0(a5)
    9cfc:  4781                 li a5,0
    9cfe:  853e                 mv a0,a5
    9d00:  70e2                 ld ra,56(sp)
    9d02:  7442                 ld s0,48(sp)
    9d04:  6121                 addi sp,sp,64
    9d06:  8082                 ret

0000000000009d08 <FUN_00009d08>:
    9d08:  1141                 addi sp,sp,-16
    9d0a:  e422                 sd s0,8(sp)
    9d0c:  0800                 addi s0,sp,16
    9d0e:  030027b7           lui a5,0x3002
    9d12:  03078793           addi a5,a5,48 # 3002030 <gpio_get_boot_device+0x2ff3c9a>
    9d16:  439c                 lw a5,0(a5)
    9d18:  2781                 sext.w a5,a5
    9d1a:  8b85                 andi a5,a5,1
    9d1c:  2781                 sext.w a5,a5
    9d1e:  0017b793           seqz a5,a5
    9d22:  0ff7f793           andi a5,a5,255
    9d26:  2781                 sext.w a5,a5
    9d28:  853e                 mv a0,a5
    9d2a:  6422                 ld s0,8(sp)
    9d2c:  0141                 addi sp,sp,16
    9d2e:  8082                 ret

0000000000009d30 <FUN_00009d30>:
    9d30:  1141                 addi sp,sp,-16
    9d32:  e422                 sd s0,8(sp)
    9d34:  0800                 addi s0,sp,16
    9d36:  030027b7           lui a5,0x3002
    9d3a:  10478793           addi a5,a5,260 # 3002104 <gpio_get_boot_device+0x2ff3d6e
    9d3e:  4705                 li a4,1
    9d40:  c398                 sw a4,0(a5)
    9d42:  030027b7           lui a5,0x3002
    9d46:  10078793           addi a5,a5,256 # 3002100 <gpio_get_boot_device+0x2ff3d6a
    9d4a:  0007a023           sw zero,0(a5)
    9d4e:  030027b7           lui a5,0x3002
    9d52:  10478793           addi a5,a5,260 # 3002104 <gpio_get_boot_device+0x2ff3d6e
    9d56:  0007a023           sw zero,0(a5)
    9d5a:  030027b7           lui a5,0x3002
    9d5e:  10878793           addi a5,a5,264 # 3002108 <gpio_get_boot_device+0x2ff3d72
    9d62:  80000713           li a4,-2048
    9d66:  c398                 sw a4,0(a5)
    9d68:  030027b7           lui a5,0x3002
    9d6c:  12878793           addi a5,a5,296 # 3002128 <gpio_get_boot_device+0x2ff3d92
    9d70:  0007a023           sw zero,0(a5)
    9d74:  030027b7           lui a5,0x3002
    9d78:  07c1                 addi a5,a5,16
    9d7a:  473d                 li a4,15
    9d7c:  c398                 sw a4,0(a5)
    9d7e:  4781                 li a5,0
    9d80:  853e                 mv a0,a5
    9d82:  6422                 ld s0,8(sp)
    9d84:  0141                 addi sp,sp,16
    9d86:  8082                 ret

0000000000009d88 <FUN_00009d88>:
    9d88:  1101                 addi sp,sp,-32
    9d8a:  ec22                 sd s0,24(sp)
    9d8c:  1000                 addi s0,sp,32
    9d8e:  fe042623           sw zero,-20(s0)
    9d92:  fe042423           sw zero,-24(s0)
    9d96:  020017b7           lui a5,0x2001
    9d9a:  70c78793           addi a5,a5,1804 # 200170c <gpio_get_boot_device+0x1ff337
    9d9e:  439c                 lw a5,0(a5)
    9da0:  0007871b           sext.w a4,a5
    9da4:  020017b7           lui a5,0x2001
    9da8:  70c78793           addi a5,a5,1804 # 200170c <gpio_get_boot_device+0x1ff337
    9dac:  9b79                 andi a4,a4,-2
    9dae:  2701                 sext.w a4,a4
    9db0:  c398                 sw a4,0(a5)
    9db2:  020017b7           lui a5,0x2001
    9db6:  70c78793           addi a5,a5,1804 # 200170c <gpio_get_boot_device+0x1ff337
    9dba:  439c                 lw a5,0(a5)
    9dbc:  0007871b           sext.w a4,a5
    9dc0:  020017b7           lui a5,0x2001
    9dc4:  70c78793           addi a5,a5,1804 # 200170c <gpio_get_boot_device+0x1ff337
    9dc8:  86ba                 mv a3,a4
    9dca:  7741                 lui a4,0xffff0
    9dcc:  177d                 addi a4,a4,-1
    9dce:  8f75                 and a4,a4,a3
    9dd0:  2701                 sext.w a4,a4
    9dd2:  c398                 sw a4,0(a5)
    9dd4:  020017b7           lui a5,0x2001
    9dd8:  70c78793           addi a5,a5,1804 # 200170c <gpio_get_boot_device+0x1ff337
    9ddc:  439c                 lw a5,0(a5)
    9dde:  0007871b           sext.w a4,a5
    9de2:  020017b7           lui a5,0x2001
    9de6:  70c78793           addi a5,a5,1804 # 200170c <gpio_get_boot_device+0x1ff337
    9dea:  86ba                 mv a3,a4
    9dec:  6741                 lui a4,0x10
    9dee:  8f55                 or a4,a4,a3
    9df0:  2701                 sext.w a4,a4
    9df2:  c398                 sw a4,0(a5)
    9df4:  020017b7           lui a5,0x2001
    9df8:  70c78793           addi a5,a5,1804 # 200170c <gpio_get_boot_device+0x1ff337
    9dfc:  439c                 lw a5,0(a5)
    9dfe:  0007871b           sext.w a4,a5
    9e02:  020017b7           lui a5,0x2001
    9e06:  70c78793           addi a5,a5,1804 # 200170c <gpio_get_boot_device+0x1ff337
    9e0a:  00176713           ori a4,a4,1
    9e0e:  2701                 sext.w a4,a4
    9e10:  c398                 sw a4,0(a5)
    9e12:  030027b7           lui a5,0x3002
    9e16:  02078793           addi a5,a5,32 # 3002020 <gpio_get_boot_device+0x2ff3c8a>
    9e1a:  439c                 lw a5,0(a5)
    9e1c:  fef42423           sw a5,-24(s0)
    9e20:  fe842703           lw a4,-24(s0)
    9e24:  77c1                 lui a5,0xffff0
    9e26:  8ff9                 and a5,a5,a4
    9e28:  fef42423           sw a5,-24(s0)
    9e2c:  030027b7           lui a5,0x3002
    9e30:  02078793           addi a5,a5,32 # 3002020 <gpio_get_boot_device+0x2ff3c8a>
    9e34:  fe842703           lw a4,-24(s0)
    9e38:  c398                 sw a4,0(a5)
    9e3a:  fe042623           sw zero,-20(s0)
    9e3e:  a02d                 j 9e68 <FUN_00009d88+0xe0>
    9e40:  fec42783           lw a5,-20(s0)
    9e44:  0067979b           slliw a5,a5,0x6
    9e48:  2781                 sext.w a5,a5
    9e4a:  02079713           slli a4,a5,0x20
    9e4e:  9301                 srli a4,a4,0x20
    9e50:  030027b7           lui a5,0x3002
    9e54:  10078793           addi a5,a5,256 # 3002100 <gpio_get_boot_device+0x2ff3d6a
    9e58:  97ba                 add a5,a5,a4
    9e5a:  0007a023           sw zero,0(a5)
    9e5e:  fec42783           lw a5,-20(s0)
    9e62:  2785                 addiw a5,a5,1
    9e64:  fef42623           sw a5,-20(s0)
    9e68:  fec42783           lw a5,-20(s0)
    9e6c:  0007871b           sext.w a4,a5
    9e70:  479d                 li a5,7
    9e72:  fce7f7e3           bgeu a5,a4,9e40 <FUN_00009d88+0xb8>
    9e76:  030027b7           lui a5,0x3002
    9e7a:  02878793           addi a5,a5,40 # 3002028 <gpio_get_boot_device+0x2ff3c92>
    9e7e:  471d                 li a4,7
    9e80:  c398                 sw a4,0(a5)
    9e82:  0001                 nop
    9e84:  6462                 ld s0,24(sp)
    9e86:  6105                 addi sp,sp,32
    9e88:  8082                 ret

0000000000009e8a <memcpy>:
    9e8a:  7139                 addi sp,sp,-64
    9e8c:  fc22                 sd s0,56(sp)
    9e8e:  0080                 addi s0,sp,64
    9e90:  fca43c23           sd a0,-40(s0)
    9e94:  fcb43823           sd a1,-48(s0)
    9e98:  87b2                 mv a5,a2
    9e9a:  fcf42623           sw a5,-52(s0)
    9e9e:  fd843783           ld a5,-40(s0)
    9ea2:  fef43423           sd a5,-24(s0)
    9ea6:  fd043783           ld a5,-48(s0)
    9eaa:  fef43023           sd a5,-32(s0)
    9eae:  a00d                 j 9ed0 <memcpy+0x46>
    9eb0:  fe043703           ld a4,-32(s0)
    9eb4:  00170793           addi a5,a4,1 # 10001 <gpio_get_boot_device+0x1c6b>
    9eb8:  fef43023           sd a5,-32(s0)
    9ebc:  fe843783           ld a5,-24(s0)
    9ec0:  00178693           addi a3,a5,1
    9ec4:  fed43423           sd a3,-24(s0)
    9ec8:  00074703           lbu a4,0(a4)
    9ecc:  00e78023           sb a4,0(a5)
    9ed0:  fcc42783           lw a5,-52(s0)
    9ed4:  fff7871b           addiw a4,a5,-1
    9ed8:  fce42623           sw a4,-52(s0)
    9edc:  fbf1                 bnez a5,9eb0 <memcpy+0x26>
    9ede:  fd843783           ld a5,-40(s0)
    9ee2:  853e                 mv a0,a5
    9ee4:  7462                 ld s0,56(sp)
    9ee6:  6121                 addi sp,sp,64
    9ee8:  8082                 ret

0000000000009eea <memset>:
    9eea:  7179                 addi sp,sp,-48
    9eec:  f422                 sd s0,40(sp)
    9eee:  1800                 addi s0,sp,48
    9ef0:  fca43c23           sd a0,-40(s0)
    9ef4:  87ae                 mv a5,a1
    9ef6:  8732                 mv a4,a2
    9ef8:  fcf40ba3           sb a5,-41(s0)
    9efc:  87ba                 mv a5,a4
    9efe:  fcf42823           sw a5,-48(s0)
    9f02:  fd843783           ld a5,-40(s0)
    9f06:  fef43423           sd a5,-24(s0)
    9f0a:  a819                 j 9f20 <memset+0x36>
    9f0c:  fe843783           ld a5,-24(s0)
    9f10:  00178713           addi a4,a5,1
    9f14:  fee43423           sd a4,-24(s0)
    9f18:  fd744703           lbu a4,-41(s0)
    9f1c:  00e78023           sb a4,0(a5)
    9f20:  fd042783           lw a5,-48(s0)
    9f24:  fff7871b           addiw a4,a5,-1
    9f28:  fce42823           sw a4,-48(s0)
    9f2c:  f3e5                 bnez a5,9f0c <memset+0x22>
    9f2e:  fd843783           ld a5,-40(s0)
    9f32:  853e                 mv a0,a5
    9f34:  7422                 ld s0,40(sp)
    9f36:  6145                 addi sp,sp,48
    9f38:  8082                 ret

0000000000009f3a <FUN_00009f3a>:
    9f3a:  7179                 addi sp,sp,-48
    9f3c:  f406                 sd ra,40(sp)
    9f3e:  f022                 sd s0,32(sp)
    9f40:  1800                 addi s0,sp,48
    9f42:  fea43423           sd a0,-24(s0)
    9f46:  feb43023           sd a1,-32(s0)
    9f4a:  87b2                 mv a5,a2
    9f4c:  fcf42e23           sw a5,-36(s0)
    9f50:  fdc42783           lw a5,-36(s0)
    9f54:  863e                 mv a2,a5
    9f56:  fe043583           ld a1,-32(s0)
    9f5a:  fe843503           ld a0,-24(s0)
    9f5e:  f2dff0ef           jal ra,9e8a <memcpy>
    9f62:  0001                 nop
    9f64:  70a2                 ld ra,40(sp)
    9f66:  7402                 ld s0,32(sp)
    9f68:  6145                 addi sp,sp,48
    9f6a:  8082                 ret

0000000000009f6c <FUN_00009f6c>:
    9f6c:  7159                 addi sp,sp,-112
    9f6e:  f4a2                 sd s0,104(sp)
    9f70:  1880                 addi s0,sp,112
    9f72:  faa43423           sd a0,-88(s0)
    9f76:  fab43023           sd a1,-96(s0)
    9f7a:  87b2                 mv a5,a2
    9f7c:  f8f42e23           sw a5,-100(s0)
    9f80:  fe042623           sw zero,-20(s0)
    9f84:  fa843783           ld a5,-88(s0)
    9f88:  fef43023           sd a5,-32(s0)
    9f8c:  fa043783           ld a5,-96(s0)
    9f90:  fcf43c23           sd a5,-40(s0)
    9f94:  f9c42783           lw a5,-100(s0)
    9f98:  0027d79b           srliw a5,a5,0x2
    9f9c:  fcf42a23           sw a5,-44(s0)
    9fa0:  fd442783           lw a5,-44(s0)
    9fa4:  0027979b           slliw a5,a5,0x2
    9fa8:  2781                 sext.w a5,a5
    9faa:  02079713           slli a4,a5,0x20
    9fae:  9301                 srli a4,a4,0x20
    9fb0:  fa843783           ld a5,-88(s0)
    9fb4:  97ba                 add a5,a5,a4
    9fb6:  fcf43423           sd a5,-56(s0)
    9fba:  fd442783           lw a5,-44(s0)
    9fbe:  0027979b           slliw a5,a5,0x2
    9fc2:  2781                 sext.w a5,a5
    9fc4:  02079713           slli a4,a5,0x20
    9fc8:  9301                 srli a4,a4,0x20
    9fca:  fa043783           ld a5,-96(s0)
    9fce:  97ba                 add a5,a5,a4
    9fd0:  fcf43023           sd a5,-64(s0)
    9fd4:  fd442783           lw a5,-44(s0)
    9fd8:  0027979b           slliw a5,a5,0x2
    9fdc:  2781                 sext.w a5,a5
    9fde:  f9c42703           lw a4,-100(s0)
    9fe2:  40f707bb           subw a5,a4,a5
    9fe6:  faf42e23           sw a5,-68(s0)
    9fea:  fe042623           sw zero,-20(s0)
    9fee:  a025                 j a016 <FUN_00009f6c+0xaa>
    9ff0:  fec42783           lw a5,-20(s0)
    9ff4:  078a                 slli a5,a5,0x2
    9ff6:  fd843703           ld a4,-40(s0)
    9ffa:  973e                 add a4,a4,a5
    9ffc:  fec42783           lw a5,-20(s0)
    a000:  078a                 slli a5,a5,0x2
    a002:  fe043683           ld a3,-32(s0)
    a006:  97b6                 add a5,a5,a3
    a008:  4318                 lw a4,0(a4)
    a00a:  c398                 sw a4,0(a5)
    a00c:  fec42783           lw a5,-20(s0)
    a010:  2785                 addiw a5,a5,1
    a012:  fef42623           sw a5,-20(s0)
    a016:  fec42703           lw a4,-20(s0)
    a01a:  fd442783           lw a5,-44(s0)
    a01e:  2781                 sext.w a5,a5
    a020:  fcf768e3           bltu a4,a5,9ff0 <FUN_00009f6c+0x84>
    a024:  fe042623           sw zero,-20(s0)
    a028:  a025                 j a050 <FUN_00009f6c+0xe4>
    a02a:  fec42783           lw a5,-20(s0)
    a02e:  fc043703           ld a4,-64(s0)
    a032:  973e                 add a4,a4,a5
    a034:  fec42783           lw a5,-20(s0)
    a038:  fc843683           ld a3,-56(s0)
    a03c:  97b6                 add a5,a5,a3
    a03e:  00074703           lbu a4,0(a4)
    a042:  00e78023           sb a4,0(a5)
    a046:  fec42783           lw a5,-20(s0)
    a04a:  2785                 addiw a5,a5,1
    a04c:  fef42623           sw a5,-20(s0)
    a050:  fec42703           lw a4,-20(s0)
    a054:  fbc42783           lw a5,-68(s0)
    a058:  2781                 sext.w a5,a5
    a05a:  fcf768e3           bltu a4,a5,a02a <FUN_00009f6c+0xbe>
    a05e:  0001                 nop
    a060:  7426                 ld s0,104(sp)
    a062:  6165                 addi sp,sp,112
    a064:  8082                 ret

000000000000a066 <memset>:
    a066:  1101                 addi sp,sp,-32
    a068:  ec06                 sd ra,24(sp)
    a06a:  e822                 sd s0,16(sp)
    a06c:  1000                 addi s0,sp,32
    a06e:  fea43423           sd a0,-24(s0)
    a072:  87ae                 mv a5,a1
    a074:  8732                 mv a4,a2
    a076:  fef42223           sw a5,-28(s0)
    a07a:  87ba                 mv a5,a4
    a07c:  fef42023           sw a5,-32(s0)
    a080:  fe442783           lw a5,-28(s0)
    a084:  0ff7f793           andi a5,a5,255
    a088:  fe042703           lw a4,-32(s0)
    a08c:  863a                 mv a2,a4
    a08e:  85be                 mv a1,a5
    a090:  fe843503           ld a0,-24(s0)
    a094:  e57ff0ef           jal ra,9eea <memset>
    a098:  0001                 nop
    a09a:  60e2                 ld ra,24(sp)
    a09c:  6442                 ld s0,16(sp)
    a09e:  6105                 addi sp,sp,32
    a0a0:  8082                 ret

000000000000a0a2 <FUN_0000a0a2>:
    a0a2:  7139                 addi sp,sp,-64
    a0a4:  fc22                 sd s0,56(sp)
    a0a6:  0080                 addi s0,sp,64
    a0a8:  fca43c23           sd a0,-40(s0)
    a0ac:  fcb43823           sd a1,-48(s0)
    a0b0:  87b2                 mv a5,a2
    a0b2:  fcf42623           sw a5,-52(s0)
    a0b6:  fe042623           sw zero,-20(s0)
    a0ba:  fe042623           sw zero,-20(s0)
    a0be:  a80d                 j a0f0 <FUN_0000a0a2+0x4e>
    a0c0:  fec42783           lw a5,-20(s0)
    a0c4:  fd843703           ld a4,-40(s0)
    a0c8:  97ba                 add a5,a5,a4
    a0ca:  0007c683           lbu a3,0(a5)
    a0ce:  fec42783           lw a5,-20(s0)
    a0d2:  fd043703           ld a4,-48(s0)
    a0d6:  97ba                 add a5,a5,a4
    a0d8:  0007c783           lbu a5,0(a5)
    a0dc:  8736                 mv a4,a3
    a0de:  00f70463           beq a4,a5,a0e6 <FUN_0000a0a2+0x44>
    a0e2:  57fd                 li a5,-1
    a0e4:  a831                 j a100 <FUN_0000a0a2+0x5e>
    a0e6:  fec42783           lw a5,-20(s0)
    a0ea:  2785                 addiw a5,a5,1
    a0ec:  fef42623           sw a5,-20(s0)
    a0f0:  fec42703           lw a4,-20(s0)
    a0f4:  fcc42783           lw a5,-52(s0)
    a0f8:  2781                 sext.w a5,a5
    a0fa:  fcf763e3           bltu a4,a5,a0c0 <FUN_0000a0a2+0x1e>
    a0fe:  4781                 li a5,0
    a100:  853e                 mv a0,a5
    a102:  7462                 ld s0,56(sp)
    a104:  6121                 addi sp,sp,64
    a106:  8082                 ret

000000000000a108 <strncmp>:
    a108:  7179                 addi sp,sp,-48
    a10a:  f422                 sd s0,40(sp)
    a10c:  f026                 sd s1,32(sp)
    a10e:  1800                 addi s0,sp,48
    a110:  fea43423           sd a0,-24(s0)
    a114:  feb43023           sd a1,-32(s0)
    a118:  87b2                 mv a5,a2
    a11a:  fcf42e23           sw a5,-36(s0)
    a11e:  4481                 li s1,0
    a120:  a0a1                 j a168 <strncmp+0x60>
    a122:  fe843783           ld a5,-24(s0)
    a126:  0007c703           lbu a4,0(a5)
    a12a:  fe043783           ld a5,-32(s0)
    a12e:  00178693           addi a3,a5,1
    a132:  fed43023           sd a3,-32(s0)
    a136:  0007c783           lbu a5,0(a5)
    a13a:  40f707bb           subw a5,a4,a5
    a13e:  0ff7f793           andi a5,a5,255
    a142:  0187949b           slliw s1,a5,0x18
    a146:  4184d49b           sraiw s1,s1,0x18
    a14a:  e09d                 bnez s1,a170 <strncmp+0x68>
    a14c:  fe843783           ld a5,-24(s0)
    a150:  00178713           addi a4,a5,1
    a154:  fee43423           sd a4,-24(s0)
    a158:  0007c783           lbu a5,0(a5)
    a15c:  cb91                 beqz a5,a170 <strncmp+0x68>
    a15e:  fdc42783           lw a5,-36(s0)
    a162:  37fd                 addiw a5,a5,-1
    a164:  fcf42e23           sw a5,-36(s0)
    a168:  fdc42783           lw a5,-36(s0)
    a16c:  2781                 sext.w a5,a5
    a16e:  fbd5                 bnez a5,a122 <strncmp+0x1a>
    a170:  0004879b           sext.w a5,s1
    a174:  853e                 mv a0,a5
    a176:  7422                 ld s0,40(sp)
    a178:  7482                 ld s1,32(sp)
    a17a:  6145                 addi sp,sp,48
    a17c:  8082                 ret

000000000000a17e <rdtime>:
    a17e:  c0102573           rdtime a0
    a182:  8082                 ret

000000000000a184 <udelay>:
    a184:  1101                 addi sp,sp,-32
    a186:  ec06                 sd ra,24(sp)
    a188:  e822                 sd s0,16(sp)
    a18a:  e426                 sd s1,8(sp)
    a18c:  00351413           slli s0,a0,0x3
    a190:  0512                 slli a0,a0,0x4
    a192:  942a                 add s0,s0,a0
    a194:  febff0ef           jal ra,a17e <rdtime>
    a198:  84aa                 mv s1,a0
    a19a:  fe5ff0ef           jal ra,a17e <rdtime>
    a19e:  8d05                 sub a0,a0,s1
    a1a0:  fe856de3           bltu a0,s0,a19a <udelay+0x16>
    a1a4:  60e2                 ld ra,24(sp)
    a1a6:  6442                 ld s0,16(sp)
    a1a8:  64a2                 ld s1,8(sp)
    a1aa:  6105                 addi sp,sp,32
    a1ac:  8082                 ret

000000000000a1ae <udelay_x800>:
    a1ae:  c505                 beqz a0,a1d6 <udelay_x800+0x28>
    a1b0:  1101                 addi sp,sp,-32
    a1b2:  ec06                 sd ra,24(sp)
    a1b4:  e822                 sd s0,16(sp)
    a1b6:  e426                 sd s1,8(sp)
    a1b8:  fff50413           addi s0,a0,-1 # 2000fff <gpio_get_boot_device+0x1ff2c69>
    a1bc:  54fd                 li s1,-1
    a1be:  32000513           li a0,800
    a1c2:  fc3ff0ef           jal ra,a184 <udelay>
    a1c6:  147d                 addi s0,s0,-1
    a1c8:  fe941be3           bne s0,s1,a1be <udelay_x800+0x10>
    a1cc:  60e2                 ld ra,24(sp)
    a1ce:  6442                 ld s0,16(sp)
    a1d0:  64a2                 ld s1,8(sp)
    a1d2:  6105                 addi sp,sp,32
    a1d4:  8082                 ret
    a1d6:  8082                 ret

000000000000a1d8 <FUN_0000a1d8>:
    a1d8:  1141                 addi sp,sp,-16
    a1da:  e422                 sd s0,8(sp)
    a1dc:  0800                 addi s0,sp,16
    a1de:  0001                 nop
    a1e0:  6422                 ld s0,8(sp)
    a1e2:  0141                 addi sp,sp,16
    a1e4:  8082                 ret

000000000000a1e6 <FUN_0000a1e6>:
    a1e6:  1141                 addi sp,sp,-16
    a1e8:  e422                 sd s0,8(sp)
    a1ea:  0800                 addi s0,sp,16
    a1ec:  0001                 nop
    a1ee:  6422                 ld s0,8(sp)
    a1f0:  0141                 addi sp,sp,16
    a1f2:  8082                 ret

000000000000a1f4 <FUN_0000a1f4>:
    a1f4:  7179                 addi sp,sp,-48
    a1f6:  f406                 sd ra,40(sp)
    a1f8:  f022                 sd s0,32(sp)
    a1fa:  1800                 addi s0,sp,48
    a1fc:  fca43c23           sd a0,-40(s0)
    a200:  fe042623           sw zero,-20(s0)
    a204:  a839                 j a222 <FUN_0000a1f4+0x2e>
    a206:  fec42783           lw a5,-20(s0)
    a20a:  2785                 addiw a5,a5,1
    a20c:  fef42623           sw a5,-20(s0)
    a210:  000487b7           lui a5,0x48
    a214:  e187b783           ld a5,-488(a5) # 47e18 <gpio_get_boot_device+0x39a82>
    a218:  0807a783           lw a5,128(a5)
    a21c:  c399                 beqz a5,a222 <FUN_0000a1f4+0x2e>
    a21e:  671020ef           jal ra,d08e <fel_irq_handler>
    a222:  fd843783           ld a5,-40(s0)
    a226:  0207c783           lbu a5,32(a5)
    a22a:  0187979b           slliw a5,a5,0x18
    a22e:  4187d79b           sraiw a5,a5,0x18
    a232:  873e                 mv a4,a5
    a234:  4785                 li a5,1
    a236:  fcf708e3           beq a4,a5,a206 <FUN_0000a1f4+0x12>
    a23a:  0001                 nop
    a23c:  70a2                 ld ra,40(sp)
    a23e:  7402                 ld s0,32(sp)
    a240:  6145                 addi sp,sp,48
    a242:  8082                 ret

000000000000a244 <FUN_0000a244>:
    a244:  1101                 addi sp,sp,-32
    a246:  ec06                 sd ra,24(sp)
    a248:  e822                 sd s0,16(sp)
    a24a:  1000                 addi s0,sp,32
    a24c:  fea43423           sd a0,-24(s0)
    a250:  02200613           li a2,34
    a254:  4581                 li a1,0
    a256:  fe843503           ld a0,-24(s0)
    a25a:  c91ff0ef           jal ra,9eea <memset>
    a25e:  fe843783           ld a5,-24(s0)
    a262:  02078023           sb zero,32(a5)
    a266:  fe843783           ld a5,-24(s0)
    a26a:  020780a3           sb zero,33(a5)
    a26e:  0001                 nop
    a270:  60e2                 ld ra,24(sp)
    a272:  6442                 ld s0,16(sp)
    a274:  6105                 addi sp,sp,32
    a276:  8082                 ret

000000000000a278 <FUN_0000a278>:
    a278:  7179                 addi sp,sp,-48
    a27a:  f422                 sd s0,40(sp)
    a27c:  1800                 addi s0,sp,48
    a27e:  fea43423           sd a0,-24(s0)
    a282:  feb43023           sd a1,-32(s0)
    a286:  87b2                 mv a5,a2
    a288:  fcf42e23           sw a5,-36(s0)
    a28c:  fe843783           ld a5,-24(s0)
    a290:  fe043703           ld a4,-32(s0)
    a294:  e398                 sd a4,0(a5)
    a296:  fe843783           ld a5,-24(s0)
    a29a:  fdc42703           lw a4,-36(s0)
    a29e:  c798                 sw a4,8(a5)
    a2a0:  fe843783           ld a5,-24(s0)
    a2a4:  00078623           sb zero,12(a5)
    a2a8:  fe843783           ld a5,-24(s0)
    a2ac:  0007ac23           sw zero,24(a5)
    a2b0:  fe843783           ld a5,-24(s0)
    a2b4:  4705                 li a4,1
    a2b6:  02e78023           sb a4,32(a5)
    a2ba:  0001                 nop
    a2bc:  7422                 ld s0,40(sp)
    a2be:  6145                 addi sp,sp,48
    a2c0:  8082                 ret

000000000000a2c2 <FUN_0000a2c2>:
    a2c2:  715d                 addi sp,sp,-80
    a2c4:  e486                 sd ra,72(sp)
    a2c6:  e0a2                 sd s0,64(sp)
    a2c8:  0880                 addi s0,sp,80
    a2ca:  faa43c23           sd a0,-72(s0)
    a2ce:  fab43823           sd a1,-80(s0)
    a2d2:  fe043423           sd zero,-24(s0)
    a2d6:  fb843783           ld a5,-72(s0)
    a2da:  77bc                 ld a5,104(a5)
    a2dc:  fef43423           sd a5,-24(s0)
    a2e0:  fe843503           ld a0,-24(s0)
    a2e4:  f11ff0ef           jal ra,a1f4 <FUN_0000a1f4>
    a2e8:  fc840793           addi a5,s0,-56
    a2ec:  02000613           li a2,32
    a2f0:  4581                 li a1,0
    a2f2:  853e                 mv a0,a5
    a2f4:  bf7ff0ef           jal ra,9eea <memset>
    a2f8:  fb843503           ld a0,-72(s0)
    a2fc:  581000ef           jal ra,b07c <disable_interrupts>
    a300:  fc840793           addi a5,s0,-56
    a304:  02000613           li a2,32
    a308:  85be                 mv a1,a5
    a30a:  fe843503           ld a0,-24(s0)
    a30e:  f6bff0ef           jal ra,a278 <FUN_0000a278>
    a312:  fb043783           ld a5,-80(s0)
    a316:  4705                 li a4,1
    a318:  02e78023           sb a4,32(a5)
    a31c:  4601                 li a2,0
    a31e:  fe843583           ld a1,-24(s0)
    a322:  fb843503           ld a0,-72(s0)
    a326:  2e6020ef           jal ra,c60c <FUN_0000c60c>
    a32a:  fe843503           ld a0,-24(s0)
    a32e:  ec7ff0ef           jal ra,a1f4 <FUN_0000a1f4>
    a332:  fb043703           ld a4,-80(s0)
    a336:  fe843783           ld a5,-24(s0)
    a33a:  639c                 ld a5,0(a5)
    a33c:  02200613           li a2,34
    a340:  85be                 mv a1,a5
    a342:  853a                 mv a0,a4
    a344:  b47ff0ef           jal ra,9e8a <memcpy>
    a348:  0001                 nop
    a34a:  60a6                 ld ra,72(sp)
    a34c:  6406                 ld s0,64(sp)
    a34e:  6161                 addi sp,sp,80
    a350:  8082                 ret

000000000000a352 <FUN_0000a352>:
    a352:  7139                 addi sp,sp,-64
    a354:  fc06                 sd ra,56(sp)
    a356:  f822                 sd s0,48(sp)
    a358:  0080                 addi s0,sp,64
    a35a:  87aa                 mv a5,a0
    a35c:  fcb43823           sd a1,-48(s0)
    a360:  fcc43423           sd a2,-56(s0)
    a364:  fcd43023           sd a3,-64(s0)
    a368:  fcf40fa3           sb a5,-33(s0)
    a36c:  fe043423           sd zero,-24(s0)
    a370:  fdf44783           lbu a5,-33(s0)
    a374:  0ff7f793           andi a5,a5,255
    a378:  e799                 bnez a5,a386 <FUN_0000a352+0x34>
    a37a:  fd043783           ld a5,-48(s0)
    a37e:  77bc                 ld a5,104(a5)
    a380:  fef43423           sd a5,-24(s0)
    a384:  a031                 j a390 <FUN_0000a352+0x3e>
    a386:  fd043783           ld a5,-48(s0)
    a38a:  73bc                 ld a5,96(a5)
    a38c:  fef43423           sd a5,-24(s0)
    a390:  fe843503           ld a0,-24(s0)
    a394:  e61ff0ef           jal ra,a1f4 <FUN_0000a1f4>
    a398:  fc843783           ld a5,-56(s0)
    a39c:  4709                 li a4,2
    a39e:  02e78023           sb a4,32(a5)
    a3a2:  fd043503           ld a0,-48(s0)
    a3a6:  4d7000ef           jal ra,b07c <disable_interrupts>
    a3aa:  fc043783           ld a5,-64(s0)
    a3ae:  6398                 ld a4,0(a5)
    a3b0:  fc043783           ld a5,-64(s0)
    a3b4:  479c                 lw a5,8(a5)
    a3b6:  863e                 mv a2,a5
    a3b8:  85ba                 mv a1,a4
    a3ba:  fe843503           ld a0,-24(s0)
    a3be:  ebbff0ef           jal ra,a278 <FUN_0000a278>
    a3c2:  4601                 li a2,0
    a3c4:  fe843583           ld a1,-24(s0)
    a3c8:  fd043503           ld a0,-48(s0)
    a3cc:  240020ef           jal ra,c60c <FUN_0000c60c>
    a3d0:  fe843503           ld a0,-24(s0)
    a3d4:  e21ff0ef           jal ra,a1f4 <FUN_0000a1f4>
    a3d8:  0001                 nop
    a3da:  70e2                 ld ra,56(sp)
    a3dc:  7442                 ld s0,48(sp)
    a3de:  6121                 addi sp,sp,64
    a3e0:  8082                 ret

000000000000a3e2 <FUN_0000a3e2>:
    a3e2:  7139                 addi sp,sp,-64
    a3e4:  fc06                 sd ra,56(sp)
    a3e6:  f822                 sd s0,48(sp)
    a3e8:  0080                 addi s0,sp,64
    a3ea:  fca43c23           sd a0,-40(s0)
    a3ee:  fcb43823           sd a1,-48(s0)
    a3f2:  fcc43423           sd a2,-56(s0)
    a3f6:  fd043783           ld a5,-48(s0)
    a3fa:  0107c783           lbu a5,16(a5)
    a3fe:  fef407a3           sb a5,-17(s0)
    a402:  fef44783           lbu a5,-17(s0)
    a406:  0007871b           sext.w a4,a5
    a40a:  86ba                 mv a3,a4
    a40c:  47c5                 li a5,17
    a40e:  00f68663           beq a3,a5,a41a <FUN_0000a3e2+0x38>
    a412:  47c9                 li a5,18
    a414:  00f70d63           beq a4,a5,a42e <FUN_0000a3e2+0x4c>
    a418:  a02d                 j a442 <FUN_0000a3e2+0x60>
    a41a:  fc843683           ld a3,-56(s0)
    a41e:  fd043603           ld a2,-48(s0)
    a422:  fd843583           ld a1,-40(s0)
    a426:  4505                 li a0,1
    a428:  f2bff0ef           jal ra,a352 <FUN_0000a352>
    a42c:  a819                 j a442 <FUN_0000a3e2+0x60>
    a42e:  fc843683           ld a3,-56(s0)
    a432:  fd043603           ld a2,-48(s0)
    a436:  fd843583           ld a1,-40(s0)
    a43a:  4501                 li a0,0
    a43c:  f17ff0ef           jal ra,a352 <FUN_0000a352>
    a440:  0001                 nop
    a442:  0001                 nop
    a444:  70e2                 ld ra,56(sp)
    a446:  7442                 ld s0,48(sp)
    a448:  6121                 addi sp,sp,64
    a44a:  8082                 ret

000000000000a44c <FUN_0000a44c>:
    a44c:  715d                 addi sp,sp,-80
    a44e:  e486                 sd ra,72(sp)
    a450:  e0a2                 sd s0,64(sp)
    a452:  0880                 addi s0,sp,80
    a454:  fca43423           sd a0,-56(s0)
    a458:  fcb43023           sd a1,-64(s0)
    a45c:  fac43c23           sd a2,-72(s0)
    a460:  fe043423           sd zero,-24(s0)
    a464:  fc843783           ld a5,-56(s0)
    a468:  73bc                 ld a5,96(a5)
    a46a:  fef43423           sd a5,-24(s0)
    a46e:  fc043783           ld a5,-64(s0)
    a472:  470d                 li a4,3
    a474:  02e78023           sb a4,32(a5)
    a478:  535557b7           lui a5,0x53555
    a47c:  7417879b           addiw a5,a5,1857
    a480:  fcf42c23           sw a5,-40(s0)
    a484:  fc043783           ld a5,-64(s0)
    a488:  0047c703           lbu a4,4(a5) # 53555004 <gpio_get_boot_device+0x53546c6e
    a48c:  0057c683           lbu a3,5(a5)
    a490:  06a2                 slli a3,a3,0x8
    a492:  8f55                 or a4,a4,a3
    a494:  0067c683           lbu a3,6(a5)
    a498:  06c2                 slli a3,a3,0x10
    a49a:  8f55                 or a4,a4,a3
    a49c:  0077c783           lbu a5,7(a5)
    a4a0:  07e2                 slli a5,a5,0x18
    a4a2:  8fd9                 or a5,a5,a4
    a4a4:  2781                 sext.w a5,a5
    a4a6:  fcf42e23           sw a5,-36(s0)
    a4aa:  fe042023           sw zero,-32(s0)
    a4ae:  fe040223           sb zero,-28(s0)
    a4b2:  fc843503           ld a0,-56(s0)
    a4b6:  3c7000ef           jal ra,b07c <disable_interrupts>
    a4ba:  fd840793           addi a5,s0,-40
    a4be:  4635                 li a2,13
    a4c0:  85be                 mv a1,a5
    a4c2:  fe843503           ld a0,-24(s0)
    a4c6:  db3ff0ef           jal ra,a278 <FUN_0000a278>
    a4ca:  4601                 li a2,0
    a4cc:  fe843583           ld a1,-24(s0)
    a4d0:  fc843503           ld a0,-56(s0)
    a4d4:  138020ef           jal ra,c60c <FUN_0000c60c>
    a4d8:  fe843503           ld a0,-24(s0)
    a4dc:  d19ff0ef           jal ra,a1f4 <FUN_0000a1f4>
    a4e0:  0001                 nop
    a4e2:  60a6                 ld ra,72(sp)
    a4e4:  6406                 ld s0,64(sp)
    a4e6:  6161                 addi sp,sp,80
    a4e8:  8082                 ret

000000000000a4ea <FUN_0000a4ea>:
    a4ea:  715d                 addi sp,sp,-80
    a4ec:  e486                 sd ra,72(sp)
    a4ee:  e0a2                 sd s0,64(sp)
    a4f0:  0880                 addi s0,sp,80
    a4f2:  faa43c23           sd a0,-72(s0)
    a4f6:  fab43823           sd a1,-80(s0)
    a4fa:  fc840793           addi a5,s0,-56
    a4fe:  853e                 mv a0,a5
    a500:  d45ff0ef           jal ra,a244 <FUN_0000a244>
    a504:  fc840793           addi a5,s0,-56
    a508:  85be                 mv a1,a5
    a50a:  fb843503           ld a0,-72(s0)
    a50e:  db5ff0ef           jal ra,a2c2 <FUN_0000a2c2>
    a512:  fc840793           addi a5,s0,-56
    a516:  fb043603           ld a2,-80(s0)
    a51a:  85be                 mv a1,a5
    a51c:  fb843503           ld a0,-72(s0)
    a520:  ec3ff0ef           jal ra,a3e2 <FUN_0000a3e2>
    a524:  fc840793           addi a5,s0,-56
    a528:  fb043603           ld a2,-80(s0)
    a52c:  85be                 mv a1,a5
    a52e:  fb843503           ld a0,-72(s0)
    a532:  f1bff0ef           jal ra,a44c <FUN_0000a44c>
    a536:  fb043783           ld a5,-80(s0)
    a53a:  00078623           sb zero,12(a5)
    a53e:  0001                 nop
    a540:  60a6                 ld ra,72(sp)
    a542:  6406                 ld s0,64(sp)
    a544:  6161                 addi sp,sp,80
    a546:  8082                 ret

000000000000a548 <FUN_0000a548>:
    a548:  1101                 addi sp,sp,-32
    a54a:  ec06                 sd ra,24(sp)
    a54c:  e822                 sd s0,16(sp)
    a54e:  1000                 addi s0,sp,32
    a550:  fea43423           sd a0,-24(s0)
    a554:  feb43023           sd a1,-32(s0)
    a558:  fe043583           ld a1,-32(s0)
    a55c:  fe843503           ld a0,-24(s0)
    a560:  f8bff0ef           jal ra,a4ea <FUN_0000a4ea>
    a564:  0001                 nop
    a566:  60e2                 ld ra,24(sp)
    a568:  6442                 ld s0,16(sp)
    a56a:  6105                 addi sp,sp,32
    a56c:  8082                 ret

000000000000a56e <FUN_0000a56e>:
    a56e:  1101                 addi sp,sp,-32
    a570:  ec06                 sd ra,24(sp)
    a572:  e822                 sd s0,16(sp)
    a574:  1000                 addi s0,sp,32
    a576:  fea43423           sd a0,-24(s0)
    a57a:  87ae                 mv a5,a1
    a57c:  fef42223           sw a5,-28(s0)
    a580:  4641                 li a2,16
    a582:  4581                 li a1,0
    a584:  000487b7           lui a5,0x48
    a588:  d0078513           addi a0,a5,-768 # 47d00 <gpio_get_boot_device+0x3996a>
    a58c:  95fff0ef           jal ra,9eea <memset>
    a590:  000487b7           lui a5,0x48
    a594:  fe843703           ld a4,-24(s0)
    a598:  d0e7b023           sd a4,-768(a5) # 47d00 <gpio_get_boot_device+0x3996a>
    a59c:  000487b7           lui a5,0x48
    a5a0:  d0078793           addi a5,a5,-768 # 47d00 <gpio_get_boot_device+0x3996a>
    a5a4:  fe442703           lw a4,-28(s0)
    a5a8:  c798                 sw a4,8(a5)
    a5aa:  000487b7           lui a5,0x48
    a5ae:  d0078793           addi a5,a5,-768 # 47d00 <gpio_get_boot_device+0x3996a>
    a5b2:  4709                 li a4,2
    a5b4:  00e78623           sb a4,12(a5)
    a5b8:  000487b7           lui a5,0x48
    a5bc:  d0078793           addi a5,a5,-768 # 47d00 <gpio_get_boot_device+0x3996a>
    a5c0:  853e                 mv a0,a5
    a5c2:  60e2                 ld ra,24(sp)
    a5c4:  6442                 ld s0,16(sp)
    a5c6:  6105                 addi sp,sp,32
    a5c8:  8082                 ret

000000000000a5ca <FUN_0000a5ca>:
    a5ca:  715d                 addi sp,sp,-80
    a5cc:  e486                 sd ra,72(sp)
    a5ce:  e0a2                 sd s0,64(sp)
    a5d0:  0880                 addi s0,sp,80
    a5d2:  faa43c23           sd a0,-72(s0)
    a5d6:  fe043423           sd zero,-24(s0)
    a5da:  fc840793           addi a5,s0,-56
    a5de:  02000613           li a2,32
    a5e2:  4581                 li a1,0
    a5e4:  853e                 mv a0,a5
    a5e6:  905ff0ef           jal ra,9eea <memset>
    a5ea:  fc840713           addi a4,s0,-56
    a5ee:  4621                 li a2,8
    a5f0:  67b9                 lui a5,0xe
    a5f2:  55078593           addi a1,a5,1360 # e550 <gpio_get_boot_device+0x1ba>
    a5f6:  853a                 mv a0,a4
    a5f8:  893ff0ef           jal ra,9e8a <memcpy>
    a5fc:  001867b7           lui a5,0x186
    a600:  9007879b           addiw a5,a5,-1792
    a604:  fcf42823           sw a5,-48(s0)
    a608:  4785                 li a5,1
    a60a:  fcf42a23           sw a5,-44(s0)
    a60e:  4785                 li a5,1
    a610:  fcf41c23           sh a5,-40(s0)
    a614:  04400793           li a5,68
    a618:  fcf40d23           sb a5,-38(s0)
    a61c:  47a1                 li a5,8
    a61e:  fcf40da3           sb a5,-37(s0)
    a622:  000457b7           lui a5,0x45
    a626:  fcf42e23           sw a5,-36(s0)
    a62a:  fc840793           addi a5,s0,-56
    a62e:  02000593           li a1,32
    a632:  853e                 mv a0,a5
    a634:  f3bff0ef           jal ra,a56e <FUN_0000a56e>
    a638:  fea43423           sd a0,-24(s0)
    a63c:  fe843583           ld a1,-24(s0)
    a640:  fb843503           ld a0,-72(s0)
    a644:  ea7ff0ef           jal ra,a4ea <FUN_0000a4ea>
    a648:  0001                 nop
    a64a:  60a6                 ld ra,72(sp)
    a64c:  6406                 ld s0,64(sp)
    a64e:  6161                 addi sp,sp,80
    a650:  8082                 ret

000000000000a652 <FUN_0000a652>:
    a652:  715d                 addi sp,sp,-80
    a654:  e486                 sd ra,72(sp)
    a656:  e0a2                 sd s0,64(sp)
    a658:  0880                 addi s0,sp,80
    a65a:  faa43c23           sd a0,-72(s0)
    a65e:  fe043423           sd zero,-24(s0)
    a662:  fc840793           addi a5,s0,-56
    a666:  02000613           li a2,32
    a66a:  4581                 li a1,0
    a66c:  853e                 mv a0,a5
    a66e:  87dff0ef           jal ra,9eea <memset>
    a672:  fc840713           addi a4,s0,-56
    a676:  4621                 li a2,8
    a678:  67b9                 lui a5,0xe
    a67a:  55078593           addi a1,a5,1360 # e550 <gpio_get_boot_device+0x1ba>
    a67e:  853a                 mv a0,a4
    a680:  80bff0ef           jal ra,9e8a <memcpy>
    a684:  fc840793           addi a5,s0,-56
    a688:  00878713           addi a4,a5,8
    a68c:  4611                 li a2,4
    a68e:  67b9                 lui a5,0xe
    a690:  56078593           addi a1,a5,1376 # e560 <gpio_get_boot_device+0x1ca>
    a694:  853a                 mv a0,a4
    a696:  ff4ff0ef           jal ra,9e8a <memcpy>
    a69a:  000487b7           lui a5,0x48
    a69e:  d1078793           addi a5,a5,-752 # 47d10 <gpio_get_boot_device+0x3997a>
    a6a2:  2781                 sext.w a5,a5
    a6a4:  fcf42a23           sw a5,-44(s0)
    a6a8:  000277b7           lui a5,0x27
    a6ac:  fcf42c23           sw a5,-40(s0)
    a6b0:  fb843783           ld a5,-72(s0)
    a6b4:  0947a783           lw a5,148(a5) # 27094 <gpio_get_boot_device+0x18cfe>
    a6b8:  c789                 beqz a5,a6c2 <FUN_0000a652+0x70>
    a6ba:  4785                 li a5,1
    a6bc:  fcf41e23           sh a5,-36(s0)
    a6c0:  a019                 j a6c6 <FUN_0000a652+0x74>
    a6c2:  fc041e23           sh zero,-36(s0)
    a6c6:  fc840793           addi a5,s0,-56
    a6ca:  02000593           li a1,32
    a6ce:  853e                 mv a0,a5
    a6d0:  e9fff0ef           jal ra,a56e <FUN_0000a56e>
    a6d4:  fea43423           sd a0,-24(s0)
    a6d8:  fe843583           ld a1,-24(s0)
    a6dc:  fb843503           ld a0,-72(s0)
    a6e0:  e0bff0ef           jal ra,a4ea <FUN_0000a4ea>
    a6e4:  0001                 nop
    a6e6:  60a6                 ld ra,72(sp)
    a6e8:  6406                 ld s0,64(sp)
    a6ea:  6161                 addi sp,sp,80
    a6ec:  8082                 ret

000000000000a6ee <FUN_0000a6ee>:
    a6ee:  7139                 addi sp,sp,-64
    a6f0:  fc06                 sd ra,56(sp)
    a6f2:  f822                 sd s0,48(sp)
    a6f4:  0080                 addi s0,sp,64
    a6f6:  fca43423           sd a0,-56(s0)
    a6fa:  fe043423           sd zero,-24(s0)
    a6fe:  fd840793           addi a5,s0,-40
    a702:  4641                 li a2,16
    a704:  4581                 li a1,0
    a706:  853e                 mv a0,a5
    a708:  fe2ff0ef           jal ra,9eea <memset>
    a70c:  4789                 li a5,2
    a70e:  fcf41c23           sh a5,-40(s0)
    a712:  fc041d23           sh zero,-38(s0)
    a716:  fd840793           addi a5,s0,-40
    a71a:  45c1                 li a1,16
    a71c:  853e                 mv a0,a5
    a71e:  e51ff0ef           jal ra,a56e <FUN_0000a56e>
    a722:  fea43423           sd a0,-24(s0)
    a726:  fe843583           ld a1,-24(s0)
    a72a:  fc843503           ld a0,-56(s0)
    a72e:  dbdff0ef           jal ra,a4ea <FUN_0000a4ea>
    a732:  0001                 nop
    a734:  70e2                 ld ra,56(sp)
    a736:  7442                 ld s0,48(sp)
    a738:  6121                 addi sp,sp,64
    a73a:  8082                 ret

000000000000a73c <FUN_0000a73c>:
    a73c:  7139                 addi sp,sp,-64
    a73e:  fc06                 sd ra,56(sp)
    a740:  f822                 sd s0,48(sp)
    a742:  0080                 addi s0,sp,64
    a744:  fca43423           sd a0,-56(s0)
    a748:  fe043423           sd zero,-24(s0)
    a74c:  fd840793           addi a5,s0,-40
    a750:  4641                 li a2,16
    a752:  4581                 li a1,0
    a754:  853e                 mv a0,a5
    a756:  f94ff0ef           jal ra,9eea <memset>
    a75a:  1f400793           li a5,500
    a75e:  fcf41d23           sh a5,-38(s0)
    a762:  4789                 li a5,2
    a764:  fcf41c23           sh a5,-40(s0)
    a768:  fd840793           addi a5,s0,-40
    a76c:  45c1                 li a1,16
    a76e:  853e                 mv a0,a5
    a770:  dffff0ef           jal ra,a56e <FUN_0000a56e>
    a774:  fea43423           sd a0,-24(s0)
    a778:  fe843583           ld a1,-24(s0)
    a77c:  fc843503           ld a0,-56(s0)
    a780:  d6bff0ef           jal ra,a4ea <FUN_0000a4ea>
    a784:  0001                 nop
    a786:  70e2                 ld ra,56(sp)
    a788:  7442                 ld s0,48(sp)
    a78a:  6121                 addi sp,sp,64
    a78c:  8082                 ret

000000000000a78e <FUN_0000a78e>:
    a78e:  7179                 addi sp,sp,-48
    a790:  f422                 sd s0,40(sp)
    a792:  1800                 addi s0,sp,48
    a794:  87aa                 mv a5,a0
    a796:  fcf42e23           sw a5,-36(s0)
    a79a:  4785                 li a5,1
    a79c:  fef42423           sw a5,-24(s0)
    a7a0:  fe042623           sw zero,-20(s0)
    a7a4:  a825                 j a7dc <FUN_0000a78e+0x4e>
    a7a6:  67b9                 lui a5,0xe
    a7a8:  fec42703           lw a4,-20(s0)
    a7ac:  070e                 slli a4,a4,0x3
    a7ae:  5c078793           addi a5,a5,1472 # e5c0 <gpio_get_boot_device+0x22a>
    a7b2:  97ba                 add a5,a5,a4
    a7b4:  4398                 lw a4,0(a5)
    a7b6:  fdc42783           lw a5,-36(s0)
    a7ba:  2781                 sext.w a5,a5
    a7bc:  00e7eb63           bltu a5,a4,a7d2 <FUN_0000a78e+0x44>
    a7c0:  00038737           lui a4,0x38
    a7c4:  fdc42783           lw a5,-36(s0)
    a7c8:  2781                 sext.w a5,a5
    a7ca:  00e7f463           bgeu a5,a4,a7d2 <FUN_0000a78e+0x44>
    a7ce:  4785                 li a5,1
    a7d0:  a839                 j a7ee <FUN_0000a78e+0x60>
    a7d2:  fec42783           lw a5,-20(s0)
    a7d6:  2785                 addiw a5,a5,1
    a7d8:  fef42623           sw a5,-20(s0)
    a7dc:  fec42703           lw a4,-20(s0)
    a7e0:  fe842783           lw a5,-24(s0)
    a7e4:  2701                 sext.w a4,a4
    a7e6:  2781                 sext.w a5,a5
    a7e8:  faf74fe3           blt a4,a5,a7a6 <FUN_0000a78e+0x18>
    a7ec:  4781                 li a5,0
    a7ee:  853e                 mv a0,a5
    a7f0:  7422                 ld s0,40(sp)
    a7f2:  6145                 addi sp,sp,48
    a7f4:  8082                 ret

000000000000a7f6 <do_fel_write>:
    a7f6:  7179                 addi sp,sp,-48
    a7f8:  f406                 sd ra,40(sp)
    a7fa:  f022                 sd s0,32(sp)
    a7fc:  1800                 addi s0,sp,48
    a7fe:  fca43c23           sd a0,-40(s0)
    a802:  fcb43823           sd a1,-48(s0)
    a806:  fe043423           sd zero,-24(s0)
    a80a:  fe043023           sd zero,-32(s0)
    a80e:  fd043783           ld a5,-48(s0)
    a812:  e399                 bnez a5,a818 <do_fel_write+0x22>
    a814:  4785                 li a5,1
    a816:  aa29                 j a930 <do_fel_write+0x13a>
    a818:  fd043783           ld a5,-48(s0)
    a81c:  fef43423           sd a5,-24(s0)
    a820:  fe843783           ld a5,-24(s0)
    a824:  0087c703           lbu a4,8(a5)
    a828:  0097c683           lbu a3,9(a5)
    a82c:  06a2                 slli a3,a3,0x8
    a82e:  8f55                 or a4,a4,a3
    a830:  00a7c683           lbu a3,10(a5)
    a834:  06c2                 slli a3,a3,0x10
    a836:  8f55                 or a4,a4,a3
    a838:  00b7c783           lbu a5,11(a5)
    a83c:  07e2                 slli a5,a5,0x18
    a83e:  8fd9                 or a5,a5,a4
    a840:  2781                 sext.w a5,a5
    a842:  e399                 bnez a5,a848 <do_fel_write+0x52>
    a844:  4785                 li a5,1
    a846:  a0ed                 j a930 <do_fel_write+0x13a>
    a848:  fe843783           ld a5,-24(s0)
    a84c:  0047c703           lbu a4,4(a5)
    a850:  0057c683           lbu a3,5(a5)
    a854:  06a2                 slli a3,a3,0x8
    a856:  8f55                 or a4,a4,a3
    a858:  0067c683           lbu a3,6(a5)
    a85c:  06c2                 slli a3,a3,0x10
    a85e:  8f55                 or a4,a4,a3
    a860:  0077c783           lbu a5,7(a5)
    a864:  07e2                 slli a5,a5,0x18
    a866:  8fd9                 or a5,a5,a4
    a868:  2781                 sext.w a5,a5
    a86a:  853e                 mv a0,a5
    a86c:  f23ff0ef           jal ra,a78e <FUN_0000a78e>
    a870:  87aa                 mv a5,a0
    a872:  ebb9                 bnez a5,a8c8 <do_fel_write+0xd2>
    a874:  fe843783           ld a5,-24(s0)
    a878:  0047c703           lbu a4,4(a5)
    a87c:  0057c683           lbu a3,5(a5)
    a880:  06a2                 slli a3,a3,0x8
    a882:  8f55                 or a4,a4,a3
    a884:  0067c683           lbu a3,6(a5)
    a888:  06c2                 slli a3,a3,0x10
    a88a:  8f55                 or a4,a4,a3
    a88c:  0077c783           lbu a5,7(a5)
    a890:  07e2                 slli a5,a5,0x18
    a892:  8fd9                 or a5,a5,a4
    a894:  0007871b           sext.w a4,a5
    a898:  fe843783           ld a5,-24(s0)
    a89c:  0087c683           lbu a3,8(a5)
    a8a0:  0097c603           lbu a2,9(a5)
    a8a4:  0622                 slli a2,a2,0x8
    a8a6:  8ed1                 or a3,a3,a2
    a8a8:  00a7c603           lbu a2,10(a5)
    a8ac:  0642                 slli a2,a2,0x10
    a8ae:  8ed1                 or a3,a3,a2
    a8b0:  00b7c783           lbu a5,11(a5)
    a8b4:  07e2                 slli a5,a5,0x18
    a8b6:  8fd5                 or a5,a5,a3
    a8b8:  2781                 sext.w a5,a5
    a8ba:  9fb9                 addw a5,a5,a4
    a8bc:  2781                 sext.w a5,a5
    a8be:  853e                 mv a0,a5
    a8c0:  ecfff0ef           jal ra,a78e <FUN_0000a78e>
    a8c4:  87aa                 mv a5,a0
    a8c6:  c399                 beqz a5,a8cc <do_fel_write+0xd6>
    a8c8:  4785                 li a5,1
    a8ca:  a09d                 j a930 <do_fel_write+0x13a>
    a8cc:  fe843783           ld a5,-24(s0)
    a8d0:  0047c703           lbu a4,4(a5)
    a8d4:  0057c683           lbu a3,5(a5)
    a8d8:  06a2                 slli a3,a3,0x8
    a8da:  8f55                 or a4,a4,a3
    a8dc:  0067c683           lbu a3,6(a5)
    a8e0:  06c2                 slli a3,a3,0x10
    a8e2:  8f55                 or a4,a4,a3
    a8e4:  0077c783           lbu a5,7(a5)
    a8e8:  07e2                 slli a5,a5,0x18
    a8ea:  8fd9                 or a5,a5,a4
    a8ec:  2781                 sext.w a5,a5
    a8ee:  1782                 slli a5,a5,0x20
    a8f0:  9381                 srli a5,a5,0x20
    a8f2:  863e                 mv a2,a5
    a8f4:  fe843783           ld a5,-24(s0)
    a8f8:  0087c703           lbu a4,8(a5)
    a8fc:  0097c683           lbu a3,9(a5)
    a900:  06a2                 slli a3,a3,0x8
    a902:  8f55                 or a4,a4,a3
    a904:  00a7c683           lbu a3,10(a5)
    a908:  06c2                 slli a3,a3,0x10
    a90a:  8f55                 or a4,a4,a3
    a90c:  00b7c783           lbu a5,11(a5)
    a910:  07e2                 slli a5,a5,0x18
    a912:  8fd9                 or a5,a5,a4
    a914:  2781                 sext.w a5,a5
    a916:  85be                 mv a1,a5
    a918:  8532                 mv a0,a2
    a91a:  c55ff0ef           jal ra,a56e <FUN_0000a56e>
    a91e:  fea43023           sd a0,-32(s0)
    a922:  fe043583           ld a1,-32(s0)
    a926:  fd843503           ld a0,-40(s0)
    a92a:  bc1ff0ef           jal ra,a4ea <FUN_0000a4ea>
    a92e:  4781                 li a5,0
    a930:  853e                 mv a0,a5
    a932:  70a2                 ld ra,40(sp)
    a934:  7402                 ld s0,32(sp)
    a936:  6145                 addi sp,sp,48
    a938:  8082                 ret

000000000000a93a <do_fel_read>:
    a93a:  7179                 addi sp,sp,-48
    a93c:  f406                 sd ra,40(sp)
    a93e:  f022                 sd s0,32(sp)
    a940:  1800                 addi s0,sp,48
    a942:  fca43c23           sd a0,-40(s0)
    a946:  fcb43823           sd a1,-48(s0)
    a94a:  fe043423           sd zero,-24(s0)
    a94e:  fe043023           sd zero,-32(s0)
    a952:  fd043783           ld a5,-48(s0)
    a956:  e399                 bnez a5,a95c <do_fel_read+0x22>
    a958:  4785                 li a5,1
    a95a:  a859                 j a9f0 <do_fel_read+0xb6>
    a95c:  fd043783           ld a5,-48(s0)
    a960:  fef43423           sd a5,-24(s0)
    a964:  fe843783           ld a5,-24(s0)
    a968:  0087c703           lbu a4,8(a5)
    a96c:  0097c683           lbu a3,9(a5)
    a970:  06a2                 slli a3,a3,0x8
    a972:  8f55                 or a4,a4,a3
    a974:  00a7c683           lbu a3,10(a5)
    a978:  06c2                 slli a3,a3,0x10
    a97a:  8f55                 or a4,a4,a3
    a97c:  00b7c783           lbu a5,11(a5)
    a980:  07e2                 slli a5,a5,0x18
    a982:  8fd9                 or a5,a5,a4
    a984:  2781                 sext.w a5,a5
    a986:  e399                 bnez a5,a98c <do_fel_read+0x52>
    a988:  4785                 li a5,1
    a98a:  a09d                 j a9f0 <do_fel_read+0xb6>
    a98c:  fe843783           ld a5,-24(s0)
    a990:  0047c703           lbu a4,4(a5)
    a994:  0057c683           lbu a3,5(a5)
    a998:  06a2                 slli a3,a3,0x8
    a99a:  8f55                 or a4,a4,a3
    a99c:  0067c683           lbu a3,6(a5)
    a9a0:  06c2                 slli a3,a3,0x10
    a9a2:  8f55                 or a4,a4,a3
    a9a4:  0077c783           lbu a5,7(a5)
    a9a8:  07e2                 slli a5,a5,0x18
    a9aa:  8fd9                 or a5,a5,a4
    a9ac:  2781                 sext.w a5,a5
    a9ae:  1782                 slli a5,a5,0x20
    a9b0:  9381                 srli a5,a5,0x20
    a9b2:  863e                 mv a2,a5
    a9b4:  fe843783           ld a5,-24(s0)
    a9b8:  0087c703           lbu a4,8(a5)
    a9bc:  0097c683           lbu a3,9(a5)
    a9c0:  06a2                 slli a3,a3,0x8
    a9c2:  8f55                 or a4,a4,a3
    a9c4:  00a7c683           lbu a3,10(a5)
    a9c8:  06c2                 slli a3,a3,0x10
    a9ca:  8f55                 or a4,a4,a3
    a9cc:  00b7c783           lbu a5,11(a5)
    a9d0:  07e2                 slli a5,a5,0x18
    a9d2:  8fd9                 or a5,a5,a4
    a9d4:  2781                 sext.w a5,a5
    a9d6:  85be                 mv a1,a5
    a9d8:  8532                 mv a0,a2
    a9da:  b95ff0ef           jal ra,a56e <FUN_0000a56e>
    a9de:  fea43023           sd a0,-32(s0)
    a9e2:  fe043583           ld a1,-32(s0)
    a9e6:  fd843503           ld a0,-40(s0)
    a9ea:  b01ff0ef           jal ra,a4ea <FUN_0000a4ea>
    a9ee:  4781                 li a5,0
    a9f0:  853e                 mv a0,a5
    a9f2:  70a2                 ld ra,40(sp)
    a9f4:  7402                 ld s0,32(sp)
    a9f6:  6145                 addi sp,sp,48
    a9f8:  8082                 ret

000000000000a9fa <FUN_0000a9fa>:
    a9fa:  7179                 addi sp,sp,-48
    a9fc:  f422                 sd s0,40(sp)
    a9fe:  1800                 addi s0,sp,48
    aa00:  fca43c23           sd a0,-40(s0)
    aa04:  fcb43823           sd a1,-48(s0)
    aa08:  fe043423           sd zero,-24(s0)
    aa0c:  fd043783           ld a5,-48(s0)
    aa10:  e781                 bnez a5,aa18 <FUN_0000a9fa+0x1e>
    aa12:  57fd                 li a5,-1
    aa14:  9381                 srli a5,a5,0x20
    aa16:  a805                 j aa46 <FUN_0000a9fa+0x4c>
    aa18:  fd043783           ld a5,-48(s0)
    aa1c:  fef43423           sd a5,-24(s0)
    aa20:  fe843783           ld a5,-24(s0)
    aa24:  0047c703           lbu a4,4(a5)
    aa28:  0057c683           lbu a3,5(a5)
    aa2c:  06a2                 slli a3,a3,0x8
    aa2e:  8f55                 or a4,a4,a3
    aa30:  0067c683           lbu a3,6(a5)
    aa34:  06c2                 slli a3,a3,0x10
    aa36:  8f55                 or a4,a4,a3
    aa38:  0077c783           lbu a5,7(a5)
    aa3c:  07e2                 slli a5,a5,0x18
    aa3e:  8fd9                 or a5,a5,a4
    aa40:  2781                 sext.w a5,a5
    aa42:  1782                 slli a5,a5,0x20
    aa44:  9381                 srli a5,a5,0x20
    aa46:  853e                 mv a0,a5
    aa48:  7422                 ld s0,40(sp)
    aa4a:  6145                 addi sp,sp,48
    aa4c:  8082                 ret

000000000000aa4e <FUN_0000aa4e>:
    aa4e:  7179                 addi sp,sp,-48
    aa50:  f406                 sd ra,40(sp)
    aa52:  f022                 sd s0,32(sp)
    aa54:  1800                 addi s0,sp,48
    aa56:  fca43c23           sd a0,-40(s0)
    aa5a:  87ae                 mv a5,a1
    aa5c:  8732                 mv a4,a2
    aa5e:  fcf41b23           sh a5,-42(s0)
    aa62:  87ba                 mv a5,a4
    aa64:  fcf40aa3           sb a5,-43(s0)
    aa68:  fe043423           sd zero,-24(s0)
    aa6c:  fe040793           addi a5,s0,-32
    aa70:  4621                 li a2,8
    aa72:  4581                 li a1,0
    aa74:  853e                 mv a0,a5
    aa76:  c74ff0ef           jal ra,9eea <memset>
    aa7a:  57fd                 li a5,-1
    aa7c:  fef41023           sh a5,-32(s0)
    aa80:  fd645783           lhu a5,-42(s0)
    aa84:  fef41123           sh a5,-30(s0)
    aa88:  fd544783           lbu a5,-43(s0)
    aa8c:  fef40223           sb a5,-28(s0)
    aa90:  fe040793           addi a5,s0,-32
    aa94:  45a1                 li a1,8
    aa96:  853e                 mv a0,a5
    aa98:  ad7ff0ef           jal ra,a56e <FUN_0000a56e>
    aa9c:  fea43423           sd a0,-24(s0)
    aaa0:  fe843583           ld a1,-24(s0)
    aaa4:  fd843503           ld a0,-40(s0)
    aaa8:  a43ff0ef           jal ra,a4ea <FUN_0000a4ea>
    aaac:  0001                 nop
    aaae:  70a2                 ld ra,40(sp)
    aab0:  7402                 ld s0,32(sp)
    aab2:  6145                 addi sp,sp,48
    aab4:  8082                 ret

000000000000aab6 <FUN_0000aab6>:
    aab6:  7139                 addi sp,sp,-64
    aab8:  fc06                 sd ra,56(sp)
    aaba:  f822                 sd s0,48(sp)
    aabc:  0080                 addi s0,sp,64
    aabe:  fca43c23           sd a0,-40(s0)
    aac2:  fcb43823           sd a1,-48(s0)
    aac6:  87b2                 mv a5,a2
    aac8:  fcf42623           sw a5,-52(s0)
    aacc:  fe043423           sd zero,-24(s0)
    aad0:  fcc42783           lw a5,-52(s0)
    aad4:  863e                 mv a2,a5
    aad6:  4581                 li a1,0
    aad8:  fd043503           ld a0,-48(s0)
    aadc:  c0eff0ef           jal ra,9eea <memset>
    aae0:  fcc42783           lw a5,-52(s0)
    aae4:  85be                 mv a1,a5
    aae6:  fd043503           ld a0,-48(s0)
    aaea:  a85ff0ef           jal ra,a56e <FUN_0000a56e>
    aaee:  fea43423           sd a0,-24(s0)
    aaf2:  fe843583           ld a1,-24(s0)
    aaf6:  fd843503           ld a0,-40(s0)
    aafa:  a4fff0ef           jal ra,a548 <FUN_0000a548>
    aafe:  0001                 nop
    ab00:  70e2                 ld ra,56(sp)
    ab02:  7442                 ld s0,48(sp)
    ab04:  6121                 addi sp,sp,64
    ab06:  8082                 ret

000000000000ab08 <FUN_0000ab08>:
    ab08:  711d                 addi sp,sp,-96
    ab0a:  ec86                 sd ra,88(sp)
    ab0c:  e8a2                 sd s0,80(sp)
    ab0e:  1080                 addi s0,sp,96
    ab10:  faa43423           sd a0,-88(s0)
    ab14:  fe043023           sd zero,-32(s0)
    ab18:  fc041f23           sh zero,-34(s0)
    ab1c:  fc041e23           sh zero,-36(s0)
    ab20:  4785                 li a5,1
    ab22:  fef407a3           sb a5,-17(s0)
    ab26:  fb840793           addi a5,s0,-72
    ab2a:  4641                 li a2,16
    ab2c:  85be                 mv a1,a5
    ab2e:  fa843503           ld a0,-88(s0)
    ab32:  f85ff0ef           jal ra,aab6 <FUN_0000aab6>
    ab36:  fb840793           addi a5,s0,-72
    ab3a:  fef43023           sd a5,-32(s0)
    ab3e:  fe043783           ld a5,-32(s0)
    ab42:  0007c703           lbu a4,0(a5)
    ab46:  0017c783           lbu a5,1(a5)
    ab4a:  07a2                 slli a5,a5,0x8
    ab4c:  8fd9                 or a5,a5,a4
    ab4e:  fcf41f23           sh a5,-34(s0)
    ab52:  fe043783           ld a5,-32(s0)
    ab56:  0027c703           lbu a4,2(a5)
    ab5a:  0037c783           lbu a5,3(a5)
    ab5e:  07a2                 slli a5,a5,0x8
    ab60:  8fd9                 or a5,a5,a4
    ab62:  fcf41e23           sh a5,-36(s0)
    ab66:  fde45783           lhu a5,-34(s0)
    ab6a:  2781                 sext.w a5,a5
    ab6c:  86be                 mv a3,a5
    ab6e:  4711                 li a4,4
    ab70:  0ae68e63           beq a3,a4,ac2c <FUN_0000ab08+0x124>
    ab74:  86be                 mv a3,a5
    ab76:  4711                 li a4,4
    ab78:  00d74f63           blt a4,a3,ab96 <FUN_0000ab08+0x8e>
    ab7c:  86be                 mv a3,a5
    ab7e:  4709                 li a4,2
    ab80:  1ce68063           beq a3,a4,ad40 <FUN_0000ab08+0x238>
    ab84:  86be                 mv a3,a5
    ab86:  4709                 li a4,2
    ab88:  08d74b63           blt a4,a3,ac1e <FUN_0000ab08+0x116>
    ab8c:  873e                 mv a4,a5
    ab8e:  4785                 li a5,1
    ab90:  02f70d63           beq a4,a5,abca <FUN_0000ab08+0xc2>
    ab94:  a255                 j ad38 <FUN_0000ab08+0x230>
    ab96:  86be                 mv a3,a5
    ab98:  10100713           li a4,257
    ab9c:  08e68f63           beq a3,a4,ac3a <FUN_0000ab08+0x132>
    aba0:  86be                 mv a3,a5
    aba2:  10100713           li a4,257
    aba6:  00d74763           blt a4,a3,abb4 <FUN_0000ab08+0xac>
    abaa:  873e                 mv a4,a5
    abac:  47c1                 li a5,16
    abae:  18f70b63           beq a4,a5,ad44 <FUN_0000ab08+0x23c>
    abb2:  a259                 j ad38 <FUN_0000ab08+0x230>
    abb4:  86be                 mv a3,a5
    abb6:  10200713           li a4,258
    abba:  0ae68663           beq a3,a4,ac66 <FUN_0000ab08+0x15e>
    abbe:  873e                 mv a4,a5
    abc0:  10300793           li a5,259
    abc4:  08f70663           beq a4,a5,ac50 <FUN_0000ab08+0x148>
    abc8:  aa85                 j ad38 <FUN_0000ab08+0x230>
    abca:  fdc45783           lhu a5,-36(s0)
    abce:  0007871b           sext.w a4,a5
    abd2:  4789                 li a5,2
    abd4:  00f71763           bne a4,a5,abe2 <FUN_0000ab08+0xda>
    abd8:  fa843503           ld a0,-88(s0)
    abdc:  a77ff0ef           jal ra,a652 <FUN_0000a652>
    abe0:  a825                 j ac18 <FUN_0000ab08+0x110>
    abe2:  fdc45783           lhu a5,-36(s0)
    abe6:  0007871b           sext.w a4,a5
    abea:  478d                 li a5,3
    abec:  02f71263           bne a4,a5,ac10 <FUN_0000ab08+0x108>
    abf0:  00027537           lui a0,0x27
    abf4:  322030ef           jal ra,df16 <FUN_0000df16>
    abf8:  87aa                 mv a5,a0
    abfa:  c791                 beqz a5,ac06 <FUN_0000ab08+0xfe>
    abfc:  fa843783           ld a5,-88(s0)
    ac00:  0807a823           sw zero,144(a5)
    ac04:  a031                 j ac10 <FUN_0000ab08+0x108>
    ac06:  fa843783           ld a5,-88(s0)
    ac0a:  4705                 li a4,1
    ac0c:  08e7a823           sw a4,144(a5)
    ac10:  fa843503           ld a0,-88(s0)
    ac14:  9b7ff0ef           jal ra,a5ca <FUN_0000a5ca>
    ac18:  fe0407a3           sb zero,-17(s0)
    ac1c:  a23d                 j ad4a <FUN_0000ab08+0x242>
    ac1e:  fa843503           ld a0,-88(s0)
    ac22:  b1bff0ef           jal ra,a73c <FUN_0000a73c>
    ac26:  fe0407a3           sb zero,-17(s0)
    ac2a:  a205                 j ad4a <FUN_0000ab08+0x242>
    ac2c:  fa843503           ld a0,-88(s0)
    ac30:  abfff0ef           jal ra,a6ee <FUN_0000a6ee>
    ac34:  fe0407a3           sb zero,-17(s0)
    ac38:  aa09                 j ad4a <FUN_0000ab08+0x242>
    ac3a:  fb840793           addi a5,s0,-72
    ac3e:  85be                 mv a1,a5
    ac40:  fa843503           ld a0,-88(s0)
    ac44:  bb3ff0ef           jal ra,a7f6 <do_fel_write>
    ac48:  87aa                 mv a5,a0
    ac4a:  fef407a3           sb a5,-17(s0)
    ac4e:  a8f5                 j ad4a <FUN_0000ab08+0x242>
    ac50:  fb840793           addi a5,s0,-72
    ac54:  85be                 mv a1,a5
    ac56:  fa843503           ld a0,-88(s0)
    ac5a:  ce1ff0ef           jal ra,a93a <do_fel_read>
    ac5e:  87aa                 mv a5,a0
    ac60:  fef407a3           sb a5,-17(s0)
    ac64:  a0dd                 j ad4a <FUN_0000ab08+0x242>
    ac66:  fc043823           sd zero,-48(s0)
    ac6a:  4785                 li a5,1
    ac6c:  fef40723           sb a5,-18(s0)
    ac70:  fb840793           addi a5,s0,-72
    ac74:  85be                 mv a1,a5
    ac76:  fa843503           ld a0,-88(s0)
    ac7a:  d81ff0ef           jal ra,a9fa <FUN_0000a9fa>
    ac7e:  fca43823           sd a0,-48(s0)
    ac82:  fa843783           ld a5,-88(s0)
    ac86:  0847a783           lw a5,132(a5)
    ac8a:  cf99                 beqz a5,aca8 <FUN_0000ab08+0x1a0>
    ac8c:  fd043583           ld a1,-48(s0)
    ac90:  fa843503           ld a0,-88(s0)
    ac94:  0ca030ef           jal ra,dd5e <FUN_0000dd5e>
    ac98:  87aa                 mv a5,a0
    ac9a:  0007871b           sext.w a4,a5
    ac9e:  fa843783           ld a5,-88(s0)
    aca2:  08e7a423           sw a4,136(a5)
    aca6:  a031                 j acb2 <FUN_0000ab08+0x1aa>
    aca8:  fa843783           ld a5,-88(s0)
    acac:  4705                 li a4,1
    acae:  08e7a423           sw a4,136(a5)
    acb2:  fa843783           ld a5,-88(s0)
    acb6:  0947a783           lw a5,148(a5)
    acba:  cb81                 beqz a5,acca <FUN_0000ab08+0x1c2>
    acbc:  fa843783           ld a5,-88(s0)
    acc0:  0907a783           lw a5,144(a5)
    acc4:  fef40723           sb a5,-18(s0)
    acc8:  a021                 j acd0 <FUN_0000ab08+0x1c8>
    acca:  4785                 li a5,1
    accc:  fef40723           sb a5,-18(s0)
    acd0:  fa843783           ld a5,-88(s0)
    acd4:  0887a783           lw a5,136(a5)
    acd8:  cb81                 beqz a5,ace8 <FUN_0000ab08+0x1e0>
    acda:  fee44783           lbu a5,-18(s0)
    acde:  0ff7f793           andi a5,a5,255
    ace2:  c399                 beqz a5,ace8 <FUN_0000ab08+0x1e0>
    ace4:  4785                 li a5,1
    ace6:  a011                 j acea <FUN_0000ab08+0x1e2>
    ace8:  4781                 li a5,0
    acea:  0007871b           sext.w a4,a5
    acee:  fa843783           ld a5,-88(s0)
    acf2:  08e7a423           sw a4,136(a5)
    acf6:  fa843783           ld a5,-88(s0)
    acfa:  0887a783           lw a5,136(a5)
    acfe:  c7a9                 beqz a5,ad48 <FUN_0000ab08+0x240>
    ad00:  fe0407a3           sb zero,-17(s0)
    ad04:  fef44703           lbu a4,-17(s0)
    ad08:  fdc45783           lhu a5,-36(s0)
    ad0c:  863a                 mv a2,a4
    ad0e:  85be                 mv a1,a5
    ad10:  fa843503           ld a0,-88(s0)
    ad14:  d3bff0ef           jal ra,aa4e <FUN_0000aa4e>
    ad18:  fa843503           ld a0,-88(s0)
    ad1c:  183020ef           jal ra,d69e <FUN_0000d69e>
    ad20:  fd043783           ld a5,-48(s0)
    ad24:  fcf43423           sd a5,-56(s0)
    ad28:  fc843783           ld a5,-56(s0)
    ad2c:  9782                 jalr a5
    ad2e:  fa843783           ld a5,-88(s0)
    ad32:  0807a423           sw zero,136(a5)
    ad36:  a025                 j ad5e <FUN_0000ab08+0x256>
    ad38:  4785                 li a5,1
    ad3a:  fef407a3           sb a5,-17(s0)
    ad3e:  a031                 j ad4a <FUN_0000ab08+0x242>
    ad40:  0001                 nop
    ad42:  a021                 j ad4a <FUN_0000ab08+0x242>
    ad44:  0001                 nop
    ad46:  a011                 j ad4a <FUN_0000ab08+0x242>
    ad48:  0001                 nop
    ad4a:  fef44703           lbu a4,-17(s0)
    ad4e:  fdc45783           lhu a5,-36(s0)
    ad52:  863a                 mv a2,a4
    ad54:  85be                 mv a1,a5
    ad56:  fa843503           ld a0,-88(s0)
    ad5a:  cf5ff0ef           jal ra,aa4e <FUN_0000aa4e>
    ad5e:  60e6                 ld ra,88(sp)
    ad60:  6446                 ld s0,80(sp)
    ad62:  6125                 addi sp,sp,96
    ad64:  8082                 ret

000000000000ad66 <FUN_0000ad66>:
    ad66:  7179                 addi sp,sp,-48
    ad68:  f406                 sd ra,40(sp)
    ad6a:  f022                 sd s0,32(sp)
    ad6c:  1800                 addi s0,sp,48
    ad6e:  fca43c23           sd a0,-40(s0)
    ad72:  fe042623           sw zero,-20(s0)
    ad76:  c62ff0ef           jal ra,a1d8 <FUN_0000a1d8>
    ad7a:  fd843503           ld a0,-40(s0)
    ad7e:  d8bff0ef           jal ra,ab08 <FUN_0000ab08>
    ad82:  fec42783           lw a5,-20(s0)
    ad86:  2785                 addiw a5,a5,1
    ad88:  fef42623           sw a5,-20(s0)
    ad8c:  b7ed                 j ad76 <FUN_0000ad66+0x10>
    ad8e:  1101                 addi sp,sp,-32
    ad90:  ec22                 sd s0,24(sp)
    ad92:  1000                 addi s0,sp,32
    ad94:  fea43423           sd a0,-24(s0)
    ad98:  fe843783           ld a5,-24(s0)
    ad9c:  02078023           sb zero,32(a5)
    ada0:  0001                 nop
    ada2:  6462                 ld s0,24(sp)
    ada4:  6105                 addi sp,sp,32
    ada6:  8082                 ret
    ada8:  1101                 addi sp,sp,-32
    adaa:  ec22                 sd s0,24(sp)
    adac:  1000                 addi s0,sp,32
    adae:  fea43423           sd a0,-24(s0)
    adb2:  fe843783           ld a5,-24(s0)
    adb6:  02078023           sb zero,32(a5)
    adba:  0001                 nop
    adbc:  6462                 ld s0,24(sp)
    adbe:  6105                 addi sp,sp,32
    adc0:  8082                 ret
    adc2:  1101                 addi sp,sp,-32
    adc4:  ec22                 sd s0,24(sp)
    adc6:  1000                 addi s0,sp,32
    adc8:  fea43423           sd a0,-24(s0)
    adcc:  fe843783           ld a5,-24(s0)
    add0:  02078023           sb zero,32(a5)
    add4:  0001                 nop
    add6:  6462                 ld s0,24(sp)
    add8:  6105                 addi sp,sp,32
    adda:  8082                 ret

000000000000addc <FUN_0000addc>:
    addc:  7179                 addi sp,sp,-48
    adde:  f422                 sd s0,40(sp)
    ade0:  1800                 addi s0,sp,48
    ade2:  87aa                 mv a5,a0
    ade4:  8736                 mv a4,a3
    ade6:  fcf42e23           sw a5,-36(s0)
    adea:  87ae                 mv a5,a1
    adec:  fcf42c23           sw a5,-40(s0)
    adf0:  87b2                 mv a5,a2
    adf2:  fcf42a23           sw a5,-44(s0)
    adf6:  87ba                 mv a5,a4
    adf8:  fcf42823           sw a5,-48(s0)
    adfc:  fd442783           lw a5,-44(s0)
    ae00:  4705                 li a4,1
    ae02:  00f717bb           sllw a5,a4,a5
    ae06:  2781                 sext.w a5,a5
    ae08:  37fd                 addiw a5,a5,-1
    ae0a:  2781                 sext.w a5,a5
    ae0c:  fef42623           sw a5,-20(s0)
    ae10:  fdc46783           lwu a5,-36(s0)
    ae14:  439c                 lw a5,0(a5)
    ae16:  0007869b           sext.w a3,a5
    ae1a:  fd842783           lw a5,-40(s0)
    ae1e:  fec42703           lw a4,-20(s0)
    ae22:  00f717bb           sllw a5,a4,a5
    ae26:  2781                 sext.w a5,a5
    ae28:  fff7c793           not a5,a5
    ae2c:  2781                 sext.w a5,a5
    ae2e:  8736                 mv a4,a3
    ae30:  8ff9                 and a5,a5,a4
    ae32:  fef42423           sw a5,-24(s0)
    ae36:  fd842783           lw a5,-40(s0)
    ae3a:  fd042703           lw a4,-48(s0)
    ae3e:  00f717bb           sllw a5,a4,a5
    ae42:  0007871b           sext.w a4,a5
    ae46:  fe842783           lw a5,-24(s0)
    ae4a:  8fd9                 or a5,a5,a4
    ae4c:  fef42423           sw a5,-24(s0)
    ae50:  fdc46783           lwu a5,-36(s0)
    ae54:  873e                 mv a4,a5
    ae56:  fe842783           lw a5,-24(s0)
    ae5a:  c31c                 sw a5,0(a4)
    ae5c:  0001                 nop
    ae5e:  7422                 ld s0,40(sp)
    ae60:  6145                 addi sp,sp,48
    ae62:  8082                 ret

000000000000ae64 <usb_irq_handler>:
    ae64:  1101                 addi sp,sp,-32
    ae66:  ec06                 sd ra,24(sp)
    ae68:  e822                 sd s0,16(sp)
    ae6a:  1000                 addi s0,sp,32
    ae6c:  87aa                 mv a5,a0
    ae6e:  fef42623           sw a5,-20(s0)
    ae72:  21c020ef           jal ra,d08e <fel_irq_handler>
    ae76:  0001                 nop
    ae78:  60e2                 ld ra,24(sp)
    ae7a:  6442                 ld s0,16(sp)
    ae7c:  6105                 addi sp,sp,32
    ae7e:  8082                 ret

000000000000ae80 <FUN_0000ae80>:
    ae80:  7179                 addi sp,sp,-48
    ae82:  f406                 sd ra,40(sp)
    ae84:  f022                 sd s0,32(sp)
    ae86:  1800                 addi s0,sp,48
    ae88:  87aa                 mv a5,a0
    ae8a:  fcf42e23           sw a5,-36(s0)
    ae8e:  fdc42783           lw a5,-36(s0)
    ae92:  0057d79b           srliw a5,a5,0x5
    ae96:  fef42623           sw a5,-20(s0)
    ae9a:  fec42703           lw a4,-20(s0)
    ae9e:  040017b7           lui a5,0x4001
    aea2:  8007879b           addiw a5,a5,-2048
    aea6:  9fb9                 addw a5,a5,a4
    aea8:  2781                 sext.w a5,a5
    aeaa:  0027979b           slliw a5,a5,0x2
    aeae:  fef42423           sw a5,-24(s0)
    aeb2:  fdc42783           lw a5,-36(s0)
    aeb6:  8bfd                 andi a5,a5,31
    aeb8:  fef42223           sw a5,-28(s0)
    aebc:  fe442703           lw a4,-28(s0)
    aec0:  fe842783           lw a5,-24(s0)
    aec4:  4685                 li a3,1
    aec6:  4605                 li a2,1
    aec8:  85ba                 mv a1,a4
    aeca:  853e                 mv a0,a5
    aecc:  f11ff0ef           jal ra,addc <FUN_0000addc>
    aed0:  4781                 li a5,0
    aed2:  853e                 mv a0,a5
    aed4:  70a2                 ld ra,40(sp)
    aed6:  7402                 ld s0,32(sp)
    aed8:  6145                 addi sp,sp,48
    aeda:  8082                 ret

000000000000aedc <FUN_0000aedc>:
    aedc:  7179                 addi sp,sp,-48
    aede:  f422                 sd s0,40(sp)
    aee0:  1800                 addi s0,sp,48
    aee2:  fca43c23           sd a0,-40(s0)
    aee6:  fe042623           sw zero,-20(s0)
    aeea:  fd843783           ld a5,-40(s0)
    aeee:  0807a783           lw a5,128(a5) # 4001080 <gpio_get_boot_device+0x3ff2cea>
    aef2:  e7c5                 bnez a5,af9a <FUN_0000aedc+0xbe>
    aef4:  fe042623           sw zero,-20(s0)
    aef8:  a01d                 j af1e <FUN_0000aedc+0x42>
    aefa:  fec42703           lw a4,-20(s0)
    aefe:  040017b7           lui a5,0x4001
    af02:  8007879b           addiw a5,a5,-2048
    af06:  9fb9                 addw a5,a5,a4
    af08:  2781                 sext.w a5,a5
    af0a:  0027979b           slliw a5,a5,0x2
    af0e:  2781                 sext.w a5,a5
    af10:  0007a023           sw zero,0(a5) # 4001000 <gpio_get_boot_device+0x3ff2c6a>
    af14:  fec42783           lw a5,-20(s0)
    af18:  2785                 addiw a5,a5,1
    af1a:  fef42623           sw a5,-20(s0)
    af1e:  fec42783           lw a5,-20(s0)
    af22:  0007871b           sext.w a4,a5
    af26:  47a1                 li a5,8
    af28:  fce7d9e3           bge a5,a4,aefa <FUN_0000aedc+0x1e>
    af2c:  fe042623           sw zero,-20(s0)
    af30:  a00d                 j af52 <FUN_0000aedc+0x76>
    af32:  fec42703           lw a4,-20(s0)
    af36:  040007b7           lui a5,0x4000
    af3a:  9fb9                 addw a5,a5,a4
    af3c:  2781                 sext.w a5,a5
    af3e:  0027979b           slliw a5,a5,0x2
    af42:  2781                 sext.w a5,a5
    af44:  0007a023           sw zero,0(a5) # 4000000 <gpio_get_boot_device+0x3ff1c6a>
    af48:  fec42783           lw a5,-20(s0)
    af4c:  2785                 addiw a5,a5,1
    af4e:  fef42623           sw a5,-20(s0)
    af52:  fec42783           lw a5,-20(s0)
    af56:  0007871b           sext.w a4,a5
    af5a:  0ff00793           li a5,255
    af5e:  fce7dae3           bge a5,a4,af32 <FUN_0000aedc+0x56>
    af62:  fe042623           sw zero,-20(s0)
    af66:  a01d                 j af8c <FUN_0000aedc+0xb0>
    af68:  fec42703           lw a4,-20(s0)
    af6c:  040007b7           lui a5,0x4000
    af70:  4007879b           addiw a5,a5,1024
    af74:  9fb9                 addw a5,a5,a4
    af76:  2781                 sext.w a5,a5
    af78:  0027979b           slliw a5,a5,0x2
    af7c:  2781                 sext.w a5,a5
    af7e:  0007a023           sw zero,0(a5) # 4000000 <gpio_get_boot_device+0x3ff1c6a>
    af82:  fec42783           lw a5,-20(s0)
    af86:  2785                 addiw a5,a5,1
    af88:  fef42623           sw a5,-20(s0)
    af8c:  fec42783           lw a5,-20(s0)
    af90:  0007871b           sext.w a4,a5
    af94:  47a1                 li a5,8
    af96:  fce7d9e3           bge a5,a4,af68 <FUN_0000aedc+0x8c>
    af9a:  0001                 nop
    af9c:  7422                 ld s0,40(sp)
    af9e:  6145                 addi sp,sp,48
    afa0:  8082                 ret

000000000000afa2 <FUN_0000afa2>:
    afa2:  1101                 addi sp,sp,-32
    afa4:  ec06                 sd ra,24(sp)
    afa6:  e822                 sd s0,16(sp)
    afa8:  1000                 addi s0,sp,32
    afaa:  fe042623           sw zero,-20(s0)
    afae:  100007b7           lui a5,0x10000
    afb2:  0b47879b           addiw a5,a5,180
    afb6:  fef42623           sw a5,-20(s0)
    afba:  fec46783           lwu a5,-20(s0)
    afbe:  873e                 mv a4,a5
    afc0:  4799                 li a5,6
    afc2:  c31c                 sw a5,0(a4)
    afc4:  02d00513           li a0,45
    afc8:  eb9ff0ef           jal ra,ae80 <FUN_0000ae80>
    afcc:  0001                 nop
    afce:  60e2                 ld ra,24(sp)
    afd0:  6442                 ld s0,16(sp)
    afd2:  6105                 addi sp,sp,32
    afd4:  8082                 ret

000000000000afd6 <interrupt_handler>:
    afd6:  1101                 addi sp,sp,-32
    afd8:  ec06                 sd ra,24(sp)
    afda:  e822                 sd s0,16(sp)
    afdc:  1000                 addi s0,sp,32
    afde:  102007b7           lui a5,0x10200
    afe2:  0791                 addi a5,a5,4
    afe4:  439c                 lw a5,0(a5)
    afe6:  fef42623           sw a5,-20(s0)
    afea:  fec42783           lw a5,-20(s0)
    afee:  3ff7f793           andi a5,a5,1023
    aff2:  fef42623           sw a5,-20(s0)
    aff6:  fec42783           lw a5,-20(s0)
    affa:  0007871b           sext.w a4,a5
    affe:  02d00793           li a5,45
    b002:  00f71763           bne a4,a5,b010 <interrupt_handler+0x3a>
    b006:  fec42783           lw a5,-20(s0)
    b00a:  853e                 mv a0,a5
    b00c:  e59ff0ef           jal ra,ae64 <usb_irq_handler>
    b010:  102007b7           lui a5,0x10200
    b014:  0791                 addi a5,a5,4
    b016:  fec42703           lw a4,-20(s0)
    b01a:  c398                 sw a4,0(a5)
    b01c:  0001                 nop
    b01e:  60e2                 ld ra,24(sp)
    b020:  6442                 ld s0,16(sp)
    b022:  6105                 addi sp,sp,32
    b024:  8082                 ret

000000000000b026 <FUN_0000b026>:
    b026:  1101                 addi sp,sp,-32
    b028:  ec22                 sd s0,24(sp)
    b02a:  1000                 addi s0,sp,32
    b02c:  102007b7           lui a5,0x10200
    b030:  0791                 addi a5,a5,4
    b032:  439c                 lw a5,0(a5)
    b034:  fef42623           sw a5,-20(s0)
    b038:  fec42783           lw a5,-20(s0)
    b03c:  3ff7f793           andi a5,a5,1023
    b040:  fef42623           sw a5,-20(s0)
    b044:  102007b7           lui a5,0x10200
    b048:  0791                 addi a5,a5,4
    b04a:  fec42703           lw a4,-20(s0)
    b04e:  c398                 sw a4,0(a5)
    b050:  0001                 nop
    b052:  6462                 ld s0,24(sp)
    b054:  6105                 addi sp,sp,32
    b056:  8082                 ret

000000000000b058 <FUN_0000b058>:
    b058:  1101                 addi sp,sp,-32
    b05a:  ec06                 sd ra,24(sp)
    b05c:  e822                 sd s0,16(sp)
    b05e:  1000                 addi s0,sp,32
    b060:  fea43423           sd a0,-24(s0)
    b064:  fe843783           ld a5,-24(s0)
    b068:  0807a783           lw a5,128(a5) # 10200080 <gpio_get_boot_device+0x101f1ce
    b06c:  e399                 bnez a5,b072 <FUN_0000b058+0x1a>
    b06e:  f35ff0ef           jal ra,afa2 <FUN_0000afa2>
    b072:  0001                 nop
    b074:  60e2                 ld ra,24(sp)
    b076:  6442                 ld s0,16(sp)
    b078:  6105                 addi sp,sp,32
    b07a:  8082                 ret

000000000000b07c <disable_interrupts>:
    b07c:  1101                 addi sp,sp,-32
    b07e:  ec22                 sd s0,24(sp)
    b080:  1000                 addi s0,sp,32
    b082:  fea43423           sd a0,-24(s0)
    b086:  000012b7           lui t0,0x1
    b08a:  8002829b           addiw t0,t0,-2048
    b08e:  3042b073           csrc mie,t0
    b092:  0001                 nop
    b094:  6462                 ld s0,24(sp)
    b096:  6105                 addi sp,sp,32
    b098:  8082                 ret

000000000000b09a <enable_interrupts>:
    b09a:  1101                 addi sp,sp,-32
    b09c:  ec22                 sd s0,24(sp)
    b09e:  1000                 addi s0,sp,32
    b0a0:  fea43423           sd a0,-24(s0)
    b0a4:  000012b7           lui t0,0x1
    b0a8:  8002829b           addiw t0,t0,-2048
    b0ac:  3042a073           csrs mie,t0
    b0b0:  0001                 nop
    b0b2:  6462                 ld s0,24(sp)
    b0b4:  6105                 addi sp,sp,32
    b0b6:  8082                 ret

000000000000b0b8 <clear_interrupts>:
    b0b8:  1141                 addi sp,sp,-16
    b0ba:  e422                 sd s0,8(sp)
    b0bc:  0800                 addi s0,sp,16
    b0be:  42a1                 li t0,8
    b0c0:  3002a073           csrs mstatus,t0
    b0c4:  0001                 nop
    b0c6:  6422                 ld s0,8(sp)
    b0c8:  0141                 addi sp,sp,16
    b0ca:  8082                 ret

000000000000b0cc <FUN_0000b0cc>:
    b0cc:  1101                 addi sp,sp,-32
    b0ce:  ec22                 sd s0,24(sp)
    b0d0:  1000                 addi s0,sp,32
    b0d2:  87aa                 mv a5,a0
    b0d4:  fef407a3           sb a5,-17(s0)
    b0d8:  041007b7           lui a5,0x4100
    b0dc:  04278793           addi a5,a5,66 # 4100042 <gpio_get_boot_device+0x40f1cac>
    b0e0:  fef44703           lbu a4,-17(s0)
    b0e4:  00e78023           sb a4,0(a5)
    b0e8:  0001                 nop
    b0ea:  6462                 ld s0,24(sp)
    b0ec:  6105                 addi sp,sp,32
    b0ee:  8082                 ret

000000000000b0f0 <FUN_0000b0f0>:
    b0f0:  1141                 addi sp,sp,-16
    b0f2:  e422                 sd s0,8(sp)
    b0f4:  0800                 addi s0,sp,16
    b0f6:  041007b7           lui a5,0x4100
    b0fa:  04278793           addi a5,a5,66 # 4100042 <gpio_get_boot_device+0x40f1cac>
    b0fe:  0007c783           lbu a5,0(a5)
    b102:  0ff7f793           andi a5,a5,255
    b106:  853e                 mv a0,a5
    b108:  6422                 ld s0,8(sp)
    b10a:  0141                 addi sp,sp,16
    b10c:  8082                 ret

000000000000b10e <FUN_0000b10e>:
    b10e:  1101                 addi sp,sp,-32
    b110:  ec22                 sd s0,24(sp)
    b112:  1000                 addi s0,sp,32
    b114:  fea43423           sd a0,-24(s0)
    b118:  fe843783           ld a5,-24(s0)
    b11c:  4749                 li a4,18
    b11e:  00e78023           sb a4,0(a5)
    b122:  fe843783           ld a5,-24(s0)
    b126:  4705                 li a4,1
    b128:  00e780a3           sb a4,1(a5)
    b12c:  fe843783           ld a5,-24(s0)
    b130:  11000713           li a4,272
    b134:  00e79123           sh a4,2(a5)
    b138:  fe843783           ld a5,-24(s0)
    b13c:  00078223           sb zero,4(a5)
    b140:  fe843783           ld a5,-24(s0)
    b144:  000782a3           sb zero,5(a5)
    b148:  fe843783           ld a5,-24(s0)
    b14c:  00078323           sb zero,6(a5)
    b150:  fe843783           ld a5,-24(s0)
    b154:  04000713           li a4,64
    b158:  00e783a3           sb a4,7(a5)
    b15c:  fe843783           ld a5,-24(s0)
    b160:  6709                 lui a4,0x2
    b162:  f3a7071b           addiw a4,a4,-198
    b166:  00e79423           sh a4,8(a5)
    b16a:  fe843783           ld a5,-24(s0)
    b16e:  777d                 lui a4,0xfffff
    b170:  3721                 addiw a4,a4,-24
    b172:  00e79523           sh a4,10(a5)
    b176:  fe843783           ld a5,-24(s0)
    b17a:  2b300713           li a4,691
    b17e:  00e79623           sh a4,12(a5)
    b182:  fe843783           ld a5,-24(s0)
    b186:  00078723           sb zero,14(a5)
    b18a:  fe843783           ld a5,-24(s0)
    b18e:  000787a3           sb zero,15(a5)
    b192:  fe843783           ld a5,-24(s0)
    b196:  00078823           sb zero,16(a5)
    b19a:  fe843783           ld a5,-24(s0)
    b19e:  4705                 li a4,1
    b1a0:  00e788a3           sb a4,17(a5)
    b1a4:  0001                 nop
    b1a6:  6462                 ld s0,24(sp)
    b1a8:  6105                 addi sp,sp,32
    b1aa:  8082                 ret

000000000000b1ac <FUN_0000b1ac>:
    b1ac:  1101                 addi sp,sp,-32
    b1ae:  ec22                 sd s0,24(sp)
    b1b0:  1000                 addi s0,sp,32
    b1b2:  fea43423           sd a0,-24(s0)
    b1b6:  fe843783           ld a5,-24(s0)
    b1ba:  4729                 li a4,10
    b1bc:  00e78023           sb a4,0(a5)
    b1c0:  fe843783           ld a5,-24(s0)
    b1c4:  4709                 li a4,2
    b1c6:  00e780a3           sb a4,1(a5)
    b1ca:  fe843783           ld a5,-24(s0)
    b1ce:  02000713           li a4,32
    b1d2:  00e79123           sh a4,2(a5)
    b1d6:  fe843783           ld a5,-24(s0)
    b1da:  4705                 li a4,1
    b1dc:  00e78223           sb a4,4(a5)
    b1e0:  fe843783           ld a5,-24(s0)
    b1e4:  4705                 li a4,1
    b1e6:  00e782a3           sb a4,5(a5)
    b1ea:  fe843783           ld a5,-24(s0)
    b1ee:  00078323           sb zero,6(a5)
    b1f2:  fe843783           ld a5,-24(s0)
    b1f6:  f8000713           li a4,-128
    b1fa:  00e783a3           sb a4,7(a5)
    b1fe:  fe843783           ld a5,-24(s0)
    b202:  f9600713           li a4,-106
    b206:  00e78423           sb a4,8(a5)
    b20a:  0001                 nop
    b20c:  6462                 ld s0,24(sp)
    b20e:  6105                 addi sp,sp,32
    b210:  8082                 ret

000000000000b212 <FUN_0000b212>:
    b212:  1101                 addi sp,sp,-32
    b214:  ec22                 sd s0,24(sp)
    b216:  1000                 addi s0,sp,32
    b218:  fea43423           sd a0,-24(s0)
    b21c:  fe843783           ld a5,-24(s0)
    b220:  4725                 li a4,9
    b222:  00e78023           sb a4,0(a5)
    b226:  fe843783           ld a5,-24(s0)
    b22a:  4711                 li a4,4
    b22c:  00e780a3           sb a4,1(a5)
    b230:  fe843783           ld a5,-24(s0)
    b234:  00078123           sb zero,2(a5)
    b238:  fe843783           ld a5,-24(s0)
    b23c:  000781a3           sb zero,3(a5)
    b240:  fe843783           ld a5,-24(s0)
    b244:  4709                 li a4,2
    b246:  00e78223           sb a4,4(a5)
    b24a:  fe843783           ld a5,-24(s0)
    b24e:  577d                 li a4,-1
    b250:  00e782a3           sb a4,5(a5)
    b254:  fe843783           ld a5,-24(s0)
    b258:  577d                 li a4,-1
    b25a:  00e78323           sb a4,6(a5)
    b25e:  fe843783           ld a5,-24(s0)
    b262:  577d                 li a4,-1
    b264:  00e783a3           sb a4,7(a5)
    b268:  fe843783           ld a5,-24(s0)
    b26c:  00078423           sb zero,8(a5)
    b270:  0001                 nop
    b272:  6462                 ld s0,24(sp)
    b274:  6105                 addi sp,sp,32
    b276:  8082                 ret

000000000000b278 <FUN_0000b278>:
    b278:  1101                 addi sp,sp,-32
    b27a:  ec22                 sd s0,24(sp)
    b27c:  1000                 addi s0,sp,32
    b27e:  fea43423           sd a0,-24(s0)
    b282:  fe843783           ld a5,-24(s0)
    b286:  471d                 li a4,7
    b288:  00e78023           sb a4,0(a5)
    b28c:  fe843783           ld a5,-24(s0)
    b290:  4715                 li a4,5
    b292:  00e780a3           sb a4,1(a5)
    b296:  fe843783           ld a5,-24(s0)
    b29a:  04000713           li a4,64
    b29e:  00e79223           sh a4,4(a5)
    b2a2:  fe843783           ld a5,-24(s0)
    b2a6:  4705                 li a4,1
    b2a8:  00e78123           sb a4,2(a5)
    b2ac:  fe843783           ld a5,-24(s0)
    b2b0:  4709                 li a4,2
    b2b2:  00e781a3           sb a4,3(a5)
    b2b6:  fe843783           ld a5,-24(s0)
    b2ba:  00078323           sb zero,6(a5)
    b2be:  0001                 nop
    b2c0:  6462                 ld s0,24(sp)
    b2c2:  6105                 addi sp,sp,32
    b2c4:  8082                 ret

000000000000b2c6 <FUN_0000b2c6>:
    b2c6:  1101                 addi sp,sp,-32
    b2c8:  ec22                 sd s0,24(sp)
    b2ca:  1000                 addi s0,sp,32
    b2cc:  fea43423           sd a0,-24(s0)
    b2d0:  fe843783           ld a5,-24(s0)
    b2d4:  471d                 li a4,7
    b2d6:  00e78023           sb a4,0(a5)
    b2da:  fe843783           ld a5,-24(s0)
    b2de:  4715                 li a4,5
    b2e0:  00e780a3           sb a4,1(a5)
    b2e4:  fe843783           ld a5,-24(s0)
    b2e8:  04000713           li a4,64
    b2ec:  00e79223           sh a4,4(a5)
    b2f0:  fe843783           ld a5,-24(s0)
    b2f4:  f8200713           li a4,-126
    b2f8:  00e78123           sb a4,2(a5)
    b2fc:  fe843783           ld a5,-24(s0)
    b300:  4709                 li a4,2
    b302:  00e781a3           sb a4,3(a5)
    b306:  fe843783           ld a5,-24(s0)
    b30a:  00078323           sb zero,6(a5)
    b30e:  0001                 nop
    b310:  6462                 ld s0,24(sp)
    b312:  6105                 addi sp,sp,32
    b314:  8082                 ret

000000000000b316 <FUN_0000b316>:
    b316:  7179                 addi sp,sp,-48
    b318:  f422                 sd s0,40(sp)
    b31a:  1800                 addi s0,sp,48
    b31c:  fea43423           sd a0,-24(s0)
    b320:  feb43023           sd a1,-32(s0)
    b324:  fcc43c23           sd a2,-40(s0)
    b328:  fe843783           ld a5,-24(s0)
    b32c:  fd843703           ld a4,-40(s0)
    b330:  e398                 sd a4,0(a5)
    b332:  fe843783           ld a5,-24(s0)
    b336:  07a1                 addi a5,a5,8
    b338:  fe043703           ld a4,-32(s0)
    b33c:  e398                 sd a4,0(a5)
    b33e:  0001                 nop
    b340:  7422                 ld s0,40(sp)
    b342:  6145                 addi sp,sp,48
    b344:  8082                 ret

000000000000b346 <FUN_0000b346>:
    b346:  1101                 addi sp,sp,-32
    b348:  ec22                 sd s0,24(sp)
    b34a:  1000                 addi s0,sp,32
    b34c:  fea43423           sd a0,-24(s0)
    b350:  fe843783           ld a5,-24(s0)
    b354:  471d                 li a4,7
    b356:  00e78023           sb a4,0(a5)
    b35a:  fe843783           ld a5,-24(s0)
    b35e:  4715                 li a4,5
    b360:  00e780a3           sb a4,1(a5)
    b364:  fe843783           ld a5,-24(s0)
    b368:  04000713           li a4,64
    b36c:  00e79223           sh a4,4(a5)
    b370:  fe843783           ld a5,-24(s0)
    b374:  4705                 li a4,1
    b376:  00e78123           sb a4,2(a5)
    b37a:  fe843783           ld a5,-24(s0)
    b37e:  4709                 li a4,2
    b380:  00e781a3           sb a4,3(a5)
    b384:  fe843783           ld a5,-24(s0)
    b388:  00078323           sb zero,6(a5)
    b38c:  0001                 nop
    b38e:  6462                 ld s0,24(sp)
    b390:  6105                 addi sp,sp,32
    b392:  8082                 ret

000000000000b394 <FUN_0000b394>:
    b394:  1101                 addi sp,sp,-32
    b396:  ec22                 sd s0,24(sp)
    b398:  1000                 addi s0,sp,32
    b39a:  fea43423           sd a0,-24(s0)
    b39e:  fe843783           ld a5,-24(s0)
    b3a2:  471d                 li a4,7
    b3a4:  00e78023           sb a4,0(a5)
    b3a8:  fe843783           ld a5,-24(s0)
    b3ac:  4715                 li a4,5
    b3ae:  00e780a3           sb a4,1(a5)
    b3b2:  fe843783           ld a5,-24(s0)
    b3b6:  04000713           li a4,64
    b3ba:  00e79223           sh a4,4(a5)
    b3be:  fe843783           ld a5,-24(s0)
    b3c2:  f8200713           li a4,-126
    b3c6:  00e78123           sb a4,2(a5)
    b3ca:  fe843783           ld a5,-24(s0)
    b3ce:  4709                 li a4,2
    b3d0:  00e781a3           sb a4,3(a5)
    b3d4:  fe843783           ld a5,-24(s0)
    b3d8:  00078323           sb zero,6(a5)
    b3dc:  0001                 nop
    b3de:  6462                 ld s0,24(sp)
    b3e0:  6105                 addi sp,sp,32
    b3e2:  8082                 ret

000000000000b3e4 <FUN_0000b3e4>:
    b3e4:  7179                 addi sp,sp,-48
    b3e6:  f422                 sd s0,40(sp)
    b3e8:  1800                 addi s0,sp,48
    b3ea:  fea43423           sd a0,-24(s0)
    b3ee:  feb43023           sd a1,-32(s0)
    b3f2:  fcc43c23           sd a2,-40(s0)
    b3f6:  fe843783           ld a5,-24(s0)
    b3fa:  fd843703           ld a4,-40(s0)
    b3fe:  e398                 sd a4,0(a5)
    b400:  fe843783           ld a5,-24(s0)
    b404:  07a1                 addi a5,a5,8
    b406:  fe043703           ld a4,-32(s0)
    b40a:  e398                 sd a4,0(a5)
    b40c:  0001                 nop
    b40e:  7422                 ld s0,40(sp)
    b410:  6145                 addi sp,sp,48
    b412:  8082                 ret

000000000000b414 <FUN_0000b414>:
    b414:  7179                 addi sp,sp,-48
    b416:  f422                 sd s0,40(sp)
    b418:  1800                 addi s0,sp,48
    b41a:  fea43423           sd a0,-24(s0)
    b41e:  feb43023           sd a1,-32(s0)
    b422:  fcc43c23           sd a2,-40(s0)
    b426:  fe843783           ld a5,-24(s0)
    b42a:  000784a3           sb zero,9(a5)
    b42e:  fe843783           ld a5,-24(s0)
    b432:  00078523           sb zero,10(a5)
    b436:  fe843783           ld a5,-24(s0)
    b43a:  0007b023           sd zero,0(a5)
    b43e:  fe843783           ld a5,-24(s0)
    b442:  00078423           sb zero,8(a5)
    b446:  fe843783           ld a5,-24(s0)
    b44a:  04000713           li a4,64
    b44e:  c7d8                 sw a4,12(a5)
    b450:  fe843783           ld a5,-24(s0)
    b454:  0007b823           sd zero,16(a5)
    b458:  fe043783           ld a5,-32(s0)
    b45c:  0027c703           lbu a4,2(a5)
    b460:  fe843783           ld a5,-24(s0)
    b464:  02e780a3           sb a4,33(a5)
    b468:  fe043783           ld a5,-32(s0)
    b46c:  0037c703           lbu a4,3(a5)
    b470:  fe843783           ld a5,-24(s0)
    b474:  02e78123           sb a4,34(a5)
    b478:  fe843783           ld a5,-24(s0)
    b47c:  fe043703           ld a4,-32(s0)
    b480:  ef98                 sd a4,24(a5)
    b482:  fe843783           ld a5,-24(s0)
    b486:  4705                 li a4,1
    b488:  02e78023           sb a4,32(a5)
    b48c:  fe043783           ld a5,-32(s0)
    b490:  0047d783           lhu a5,4(a5)
    b494:  0007871b           sext.w a4,a5
    b498:  fe843783           ld a5,-24(s0)
    b49c:  d3d8                 sw a4,36(a5)
    b49e:  fe843783           ld a5,-24(s0)
    b4a2:  0207b423           sd zero,40(a5)
    b4a6:  fd843783           ld a5,-40(s0)
    b4aa:  0027c703           lbu a4,2(a5)
    b4ae:  fe843783           ld a5,-24(s0)
    b4b2:  02e78ca3           sb a4,57(a5)
    b4b6:  fd843783           ld a5,-40(s0)
    b4ba:  0037c703           lbu a4,3(a5)
    b4be:  fe843783           ld a5,-24(s0)
    b4c2:  02e78d23           sb a4,58(a5)
    b4c6:  fe843783           ld a5,-24(s0)
    b4ca:  fd843703           ld a4,-40(s0)
    b4ce:  fb98                 sd a4,48(a5)
    b4d0:  fe843783           ld a5,-24(s0)
    b4d4:  4709                 li a4,2
    b4d6:  02e78c23           sb a4,56(a5)
    b4da:  fd843783           ld a5,-40(s0)
    b4de:  0047d783           lhu a5,4(a5)
    b4e2:  0007871b           sext.w a4,a5
    b4e6:  fe843783           ld a5,-24(s0)
    b4ea:  dfd8                 sw a4,60(a5)
    b4ec:  fe843783           ld a5,-24(s0)
    b4f0:  0407b023           sd zero,64(a5)
    b4f4:  fe843783           ld a5,-24(s0)
    b4f8:  0407a423           sw zero,72(a5)
    b4fc:  fe843783           ld a5,-24(s0)
    b500:  04078623           sb zero,76(a5)
    b504:  fe843783           ld a5,-24(s0)
    b508:  0407a823           sw zero,80(a5)
    b50c:  fe843783           ld a5,-24(s0)
    b510:  04078a23           sb zero,84(a5)
    b514:  fe843783           ld a5,-24(s0)
    b518:  04078aa3           sb zero,85(a5)
    b51c:  0001                 nop
    b51e:  7422                 ld s0,40(sp)
    b520:  6145                 addi sp,sp,48
    b522:  8082                 ret

000000000000b524 <FUN_0000b524>:
    b524:  7179                 addi sp,sp,-48
    b526:  f422                 sd s0,40(sp)
    b528:  1800                 addi s0,sp,48
    b52a:  fea43423           sd a0,-24(s0)
    b52e:  feb43023           sd a1,-32(s0)
    b532:  fcc43c23           sd a2,-40(s0)
    b536:  fcd43823           sd a3,-48(s0)
    b53a:  fe843783           ld a5,-24(s0)
    b53e:  fe043703           ld a4,-32(s0)
    b542:  e398                 sd a4,0(a5)
    b544:  fe843783           ld a5,-24(s0)
    b548:  0007a423           sw zero,8(a5)
    b54c:  fe843783           ld a5,-24(s0)
    b550:  0007a623           sw zero,12(a5)
    b554:  fe843783           ld a5,-24(s0)
    b558:  fd843703           ld a4,-40(s0)
    b55c:  f398                 sd a4,32(a5)
    b55e:  fe843783           ld a5,-24(s0)
    b562:  0207a423           sw zero,40(a5)
    b566:  fe843783           ld a5,-24(s0)
    b56a:  fd043703           ld a4,-48(s0)
    b56e:  eb98                 sd a4,16(a5)
    b570:  fe843783           ld a5,-24(s0)
    b574:  0007ac23           sw zero,24(a5)
    b578:  0001                 nop
    b57a:  7422                 ld s0,40(sp)
    b57c:  6145                 addi sp,sp,48
    b57e:  8082                 ret

000000000000b580 <FUN_0000b580>:
    b580:  1101                 addi sp,sp,-32
    b582:  ec22                 sd s0,24(sp)
    b584:  1000                 addi s0,sp,32
    b586:  fea43423           sd a0,-24(s0)
    b58a:  feb43023           sd a1,-32(s0)
    b58e:  fe843783           ld a5,-24(s0)
    b592:  fe043703           ld a4,-32(s0)
    b596:  e398                 sd a4,0(a5)
    b598:  fe843783           ld a5,-24(s0)
    b59c:  0007a423           sw zero,8(a5)
    b5a0:  fe843783           ld a5,-24(s0)
    b5a4:  0000b737           lui a4,0xb
    b5a8:  d8e70713           addi a4,a4,-626 # ad8e <FUN_0000ad66+0x28>
    b5ac:  eb98                 sd a4,16(a5)
    b5ae:  fe843783           ld a5,-24(s0)
    b5b2:  0007ac23           sw zero,24(a5)
    b5b6:  fe843783           ld a5,-24(s0)
    b5ba:  00078623           sb zero,12(a5)
    b5be:  fe843783           ld a5,-24(s0)
    b5c2:  02078023           sb zero,32(a5)
    b5c6:  fe843783           ld a5,-24(s0)
    b5ca:  0007ae23           sw zero,28(a5)
    b5ce:  0001                 nop
    b5d0:  6462                 ld s0,24(sp)
    b5d2:  6105                 addi sp,sp,32
    b5d4:  8082                 ret

000000000000b5d6 <FUN_0000b5d6>:
    b5d6:  1101                 addi sp,sp,-32
    b5d8:  ec22                 sd s0,24(sp)
    b5da:  1000                 addi s0,sp,32
    b5dc:  fea43423           sd a0,-24(s0)
    b5e0:  feb43023           sd a1,-32(s0)
    b5e4:  fe843783           ld a5,-24(s0)
    b5e8:  fe043703           ld a4,-32(s0)
    b5ec:  e398                 sd a4,0(a5)
    b5ee:  fe843783           ld a5,-24(s0)
    b5f2:  0007a423           sw zero,8(a5)
    b5f6:  fe843783           ld a5,-24(s0)
    b5fa:  0000b737           lui a4,0xb
    b5fe:  dc270713           addi a4,a4,-574 # adc2 <FUN_0000ad66+0x5c>
    b602:  eb98                 sd a4,16(a5)
    b604:  fe843783           ld a5,-24(s0)
    b608:  0007ac23           sw zero,24(a5)
    b60c:  fe843783           ld a5,-24(s0)
    b610:  00078623           sb zero,12(a5)
    b614:  fe843783           ld a5,-24(s0)
    b618:  02078023           sb zero,32(a5)
    b61c:  fe843783           ld a5,-24(s0)
    b620:  4705                 li a4,1
    b622:  cfd8                 sw a4,28(a5)
    b624:  0001                 nop
    b626:  6462                 ld s0,24(sp)
    b628:  6105                 addi sp,sp,32
    b62a:  8082                 ret

000000000000b62c <FUN_0000b62c>:
    b62c:  1101                 addi sp,sp,-32
    b62e:  ec22                 sd s0,24(sp)
    b630:  1000                 addi s0,sp,32
    b632:  fea43423           sd a0,-24(s0)
    b636:  feb43023           sd a1,-32(s0)
    b63a:  fe843783           ld a5,-24(s0)
    b63e:  fe043703           ld a4,-32(s0)
    b642:  e398                 sd a4,0(a5)
    b644:  fe843783           ld a5,-24(s0)
    b648:  0007a423           sw zero,8(a5)
    b64c:  fe843783           ld a5,-24(s0)
    b650:  0000b737           lui a4,0xb
    b654:  da870713           addi a4,a4,-600 # ada8 <FUN_0000ad66+0x42>
    b658:  eb98                 sd a4,16(a5)
    b65a:  fe843783           ld a5,-24(s0)
    b65e:  0007ac23           sw zero,24(a5)
    b662:  fe843783           ld a5,-24(s0)
    b666:  00078623           sb zero,12(a5)
    b66a:  fe843783           ld a5,-24(s0)
    b66e:  02078023           sb zero,32(a5)
    b672:  fe843783           ld a5,-24(s0)
    b676:  4709                 li a4,2
    b678:  cfd8                 sw a4,28(a5)
    b67a:  0001                 nop
    b67c:  6462                 ld s0,24(sp)
    b67e:  6105                 addi sp,sp,32
    b680:  8082                 ret

000000000000b682 <FUN_0000b682>:
    b682:  7179                 addi sp,sp,-48
    b684:  f422                 sd s0,40(sp)
    b686:  1800                 addi s0,sp,48
    b688:  fea43423           sd a0,-24(s0)
    b68c:  feb43023           sd a1,-32(s0)
    b690:  fcc43c23           sd a2,-40(s0)
    b694:  fcd43823           sd a3,-48(s0)
    b698:  fe843783           ld a5,-24(s0)
    b69c:  fe043703           ld a4,-32(s0)
    b6a0:  eb98                 sd a4,16(a5)
    b6a2:  fe843783           ld a5,-24(s0)
    b6a6:  fd843703           ld a4,-40(s0)
    b6aa:  f798                 sd a4,40(a5)
    b6ac:  fe843783           ld a5,-24(s0)
    b6b0:  fd043703           ld a4,-48(s0)
    b6b4:  e3b8                 sd a4,64(a5)
    b6b6:  0001                 nop
    b6b8:  7422                 ld s0,40(sp)
    b6ba:  6145                 addi sp,sp,48
    b6bc:  8082                 ret

000000000000b6be <FUN_0000b6be>:
    b6be:  1101                 addi sp,sp,-32
    b6c0:  ec22                 sd s0,24(sp)
    b6c2:  1000                 addi s0,sp,32
    b6c4:  fe0407a3           sb zero,-17(s0)
    b6c8:  041007b7           lui a5,0x4100
    b6cc:  04078793           addi a5,a5,64 # 4100040 <gpio_get_boot_device+0x40f1caa>
    b6d0:  0007c783           lbu a5,0(a5)
    b6d4:  fef407a3           sb a5,-17(s0)
    b6d8:  fef44783           lbu a5,-17(s0)
    b6dc:  fdf7f793           andi a5,a5,-33
    b6e0:  fef407a3           sb a5,-17(s0)
    b6e4:  041007b7           lui a5,0x4100
    b6e8:  04078793           addi a5,a5,64 # 4100040 <gpio_get_boot_device+0x40f1caa>
    b6ec:  fef44703           lbu a4,-17(s0)
    b6f0:  00e78023           sb a4,0(a5)
    b6f4:  041007b7           lui a5,0x4100
    b6f8:  04078793           addi a5,a5,64 # 4100040 <gpio_get_boot_device+0x40f1caa>
    b6fc:  0007c783           lbu a5,0(a5)
    b700:  fef407a3           sb a5,-17(s0)
    b704:  0001                 nop
    b706:  6462                 ld s0,24(sp)
    b708:  6105                 addi sp,sp,32
    b70a:  8082                 ret

000000000000b70c <FUN_0000b70c>:
    b70c:  1101                 addi sp,sp,-32
    b70e:  ec22                 sd s0,24(sp)
    b710:  1000                 addi s0,sp,32
    b712:  fe042623           sw zero,-20(s0)
    b716:  041007b7           lui a5,0x4100
    b71a:  40078793           addi a5,a5,1024 # 4100400 <gpio_get_boot_device+0x40f206
    b71e:  439c                 lw a5,0(a5)
    b720:  fef42623           sw a5,-20(s0)
    b724:  fec42703           lw a4,-20(s0)
    b728:  67b1                 lui a5,0xc
    b72a:  8fd9                 or a5,a5,a4
    b72c:  fef42623           sw a5,-20(s0)
    b730:  041007b7           lui a5,0x4100
    b734:  40078793           addi a5,a5,1024 # 4100400 <gpio_get_boot_device+0x40f206
    b738:  fec42703           lw a4,-20(s0)
    b73c:  c398                 sw a4,0(a5)
    b73e:  0001                 nop
    b740:  6462                 ld s0,24(sp)
    b742:  6105                 addi sp,sp,32
    b744:  8082                 ret

000000000000b746 <FUN_0000b746>:
    b746:  1101                 addi sp,sp,-32
    b748:  ec22                 sd s0,24(sp)
    b74a:  1000                 addi s0,sp,32
    b74c:  fe042423           sw zero,-24(s0)
    b750:  fe042623           sw zero,-20(s0)
    b754:  041007b7           lui a5,0x4100
    b758:  40078793           addi a5,a5,1024 # 4100400 <gpio_get_boot_device+0x40f206
    b75c:  439c                 lw a5,0(a5)
    b75e:  fef42423           sw a5,-24(s0)
    b762:  fe842703           lw a4,-24(s0)
    b766:  67c1                 lui a5,0x10
    b768:  8fd9                 or a5,a5,a4
    b76a:  fef42423           sw a5,-24(s0)
    b76e:  041007b7           lui a5,0x4100
    b772:  40078793           addi a5,a5,1024 # 4100400 <gpio_get_boot_device+0x40f206
    b776:  fe842703           lw a4,-24(s0)
    b77a:  c398                 sw a4,0(a5)
    b77c:  7d000793           li a5,2000
    b780:  fef42623           sw a5,-20(s0)
    b784:  0001                 nop
    b786:  fec42783           lw a5,-20(s0)
    b78a:  fff7871b           addiw a4,a5,-1
    b78e:  fee42623           sw a4,-20(s0)
    b792:  fbf5                 bnez a5,b786 <FUN_0000b746+0x40>
    b794:  fe842703           lw a4,-24(s0)
    b798:  6785                 lui a5,0x1
    b79a:  c0078793           addi a5,a5,-1024 # c00 <FUN_00000bbe+0x42>
    b79e:  8fd9                 or a5,a5,a4
    b7a0:  fef42423           sw a5,-24(s0)
    b7a4:  041007b7           lui a5,0x4100
    b7a8:  40078793           addi a5,a5,1024 # 4100400 <gpio_get_boot_device+0x40f206
    b7ac:  fe842703           lw a4,-24(s0)
    b7b0:  c398                 sw a4,0(a5)
    b7b2:  0001                 nop
    b7b4:  6462                 ld s0,24(sp)
    b7b6:  6105                 addi sp,sp,32
    b7b8:  8082                 ret

000000000000b7ba <FUN_0000b7ba>:
    b7ba:  1101                 addi sp,sp,-32
    b7bc:  ec22                 sd s0,24(sp)
    b7be:  1000                 addi s0,sp,32
    b7c0:  fe042623           sw zero,-20(s0)
    b7c4:  041007b7           lui a5,0x4100
    b7c8:  40078793           addi a5,a5,1024 # 4100400 <gpio_get_boot_device+0x40f206
    b7cc:  439c                 lw a5,0(a5)
    b7ce:  2781                 sext.w a5,a5
    b7d0:  fef405a3           sb a5,-21(s0)
    b7d4:  feb44783           lbu a5,-21(s0)
    b7d8:  0007871b           sext.w a4,a5
    b7dc:  0c0007b7           lui a5,0xc000
    b7e0:  8ff9                 and a5,a5,a4
    b7e2:  2781                 sext.w a5,a5
    b7e4:  e7b1                 bnez a5,b830 <FUN_0000b7ba+0x76>
    b7e6:  041007b7           lui a5,0x4100
    b7ea:  04178793           addi a5,a5,65 # 4100041 <gpio_get_boot_device+0x40f1cab>
    b7ee:  0007c783           lbu a5,0(a5)
    b7f2:  0ff7f793           andi a5,a5,255
    b7f6:  2781                 sext.w a5,a5
    b7f8:  8be1                 andi a5,a5,24
    b7fa:  2781                 sext.w a5,a5
    b7fc:  873e                 mv a4,a5
    b7fe:  47e1                 li a5,24
    b800:  02f70663           beq a4,a5,b82c <FUN_0000b7ba+0x72>
    b804:  041007b7           lui a5,0x4100
    b808:  40078793           addi a5,a5,1024 # 4100400 <gpio_get_boot_device+0x40f206
    b80c:  439c                 lw a5,0(a5)
    b80e:  fef42623           sw a5,-20(s0)
    b812:  fec42703           lw a4,-20(s0)
    b816:  678d                 lui a5,0x3
    b818:  8fd9                 or a5,a5,a4
    b81a:  fef42623           sw a5,-20(s0)
    b81e:  041007b7           lui a5,0x4100
    b822:  40078793           addi a5,a5,1024 # 4100400 <gpio_get_boot_device+0x40f206
    b826:  fec42703           lw a4,-20(s0)
    b82a:  c398                 sw a4,0(a5)
    b82c:  4785                 li a5,1
    b82e:  a011                 j b832 <FUN_0000b7ba+0x78>
    b830:  4781                 li a5,0
    b832:  853e                 mv a0,a5
    b834:  6462                 ld s0,24(sp)
    b836:  6105                 addi sp,sp,32
    b838:  8082                 ret

000000000000b83a <FUN_0000b83a>:
    b83a:  1101                 addi sp,sp,-32
    b83c:  ec22                 sd s0,24(sp)
    b83e:  1000                 addi s0,sp,32
    b840:  fe042623           sw zero,-20(s0)
    b844:  041007b7           lui a5,0x4100
    b848:  40078793           addi a5,a5,1024 # 4100400 <gpio_get_boot_device+0x40f206
    b84c:  439c                 lw a5,0(a5)
    b84e:  fef42623           sw a5,-20(s0)
    b852:  fec42703           lw a4,-20(s0)
    b856:  77c1                 lui a5,0xffff0
    b858:  17fd                 addi a5,a5,-1
    b85a:  8ff9                 and a5,a5,a4
    b85c:  fef42623           sw a5,-20(s0)
    b860:  041007b7           lui a5,0x4100
    b864:  40078793           addi a5,a5,1024 # 4100400 <gpio_get_boot_device+0x40f206
    b868:  fec42703           lw a4,-20(s0)
    b86c:  c398                 sw a4,0(a5)
    b86e:  0001                 nop
    b870:  6462                 ld s0,24(sp)
    b872:  6105                 addi sp,sp,32
    b874:  8082                 ret

000000000000b876 <FUN_0000b876>:
    b876:  1101                 addi sp,sp,-32
    b878:  ec22                 sd s0,24(sp)
    b87a:  1000                 addi s0,sp,32
    b87c:  041007b7           lui a5,0x4100
    b880:  04178793           addi a5,a5,65 # 4100041 <gpio_get_boot_device+0x40f1cab>
    b884:  0007c783           lbu a5,0(a5)
    b888:  fef407a3           sb a5,-17(s0)
    b88c:  fef40783           lb a5,-17(s0)
    b890:  0207d563           bgez a5,b8ba <FUN_0000b876+0x44>
    b894:  041007b7           lui a5,0x4100
    b898:  04178793           addi a5,a5,65 # 4100041 <gpio_get_boot_device+0x40f1cab>
    b89c:  0007c783           lbu a5,0(a5)
    b8a0:  fef40723           sb a5,-18(s0)
    b8a4:  fee44783           lbu a5,-18(s0)
    b8a8:  2781                 sext.w a5,a5
    b8aa:  8be1                 andi a5,a5,24
    b8ac:  2781                 sext.w a5,a5
    b8ae:  873e                 mv a4,a5
    b8b0:  47e1                 li a5,24
    b8b2:  00f71463           bne a4,a5,b8ba <FUN_0000b876+0x44>
    b8b6:  4785                 li a5,1
    b8b8:  a011                 j b8bc <FUN_0000b876+0x46>
    b8ba:  4781                 li a5,0
    b8bc:  853e                 mv a0,a5
    b8be:  6462                 ld s0,24(sp)
    b8c0:  6105                 addi sp,sp,32
    b8c2:  8082                 ret

000000000000b8c4 <FUN_0000b8c4>:
    b8c4:  1101                 addi sp,sp,-32
    b8c6:  ec06                 sd ra,24(sp)
    b8c8:  e822                 sd s0,16(sp)
    b8ca:  1000                 addi s0,sp,32
    b8cc:  e41ff0ef           jal ra,b70c <FUN_0000b70c>
    b8d0:  e77ff0ef           jal ra,b746 <FUN_0000b746>
    b8d4:  fa3ff0ef           jal ra,b876 <FUN_0000b876>
    b8d8:  87aa                 mv a5,a0
    b8da:  fef42623           sw a5,-20(s0)
    b8de:  eddff0ef           jal ra,b7ba <FUN_0000b7ba>
    b8e2:  87aa                 mv a5,a0
    b8e4:  fef42423           sw a5,-24(s0)
    b8e8:  fec42783           lw a5,-20(s0)
    b8ec:  2781                 sext.w a5,a5
    b8ee:  e791                 bnez a5,b8fa <FUN_0000b8c4+0x36>
    b8f0:  fe842783           lw a5,-24(s0)
    b8f4:  2781                 sext.w a5,a5
    b8f6:  e391                 bnez a5,b8fa <FUN_0000b8c4+0x36>
    b8f8:  bff1                 j b8d4 <FUN_0000b8c4+0x10>
    b8fa:  f41ff0ef           jal ra,b83a <FUN_0000b83a>
    b8fe:  0001                 nop
    b900:  60e2                 ld ra,24(sp)
    b902:  6442                 ld s0,16(sp)
    b904:  6105                 addi sp,sp,32
    b906:  8082                 ret

000000000000b908 <FUN_0000b908>:
    b908:  1101                 addi sp,sp,-32
    b90a:  ec06                 sd ra,24(sp)
    b90c:  e822                 sd s0,16(sp)
    b90e:  1000                 addi s0,sp,32
    b910:  fea43423           sd a0,-24(s0)
    b914:  f5afc0ef           jal ra,806e <brom_config_bit_1>
    b918:  87aa                 mv a5,a0
    b91a:  c785                 beqz a5,b942 <FUN_0000b908+0x3a>
    b91c:  041007b7           lui a5,0x4100
    b920:  04078793           addi a5,a5,64 # 4100040 <gpio_get_boot_device+0x40f1caa>
    b924:  0007c783           lbu a5,0(a5)
    b928:  0ff7f713           andi a4,a5,255
    b92c:  041007b7           lui a5,0x4100
    b930:  04078793           addi a5,a5,64 # 4100040 <gpio_get_boot_device+0x40f1caa>
    b934:  02076713           ori a4,a4,32
    b938:  0ff77713           andi a4,a4,255
    b93c:  00e78023           sb a4,0(a5)
    b940:  a019                 j b946 <FUN_0000b908+0x3e>
    b942:  d7dff0ef           jal ra,b6be <FUN_0000b6be>
    b946:  13d020ef           jal ra,e282 <FUN_0000e282>
    b94a:  041007b7           lui a5,0x4100
    b94e:  04278793           addi a5,a5,66 # 4100042 <gpio_get_boot_device+0x40f1cac>
    b952:  4705                 li a4,1
    b954:  00e78023           sb a4,0(a5)
    b958:  041007b7           lui a5,0x4100
    b95c:  09478793           addi a5,a5,148 # 4100094 <gpio_get_boot_device+0x40f1cfe
    b960:  471d                 li a4,7
    b962:  00e78023           sb a4,0(a5)
    b966:  041007b7           lui a5,0x4100
    b96a:  09678793           addi a5,a5,150 # 4100096 <gpio_get_boot_device+0x40f1d00
    b96e:  08000713           li a4,128
    b972:  00e79023           sh a4,0(a5)
    b976:  041007b7           lui a5,0x4100
    b97a:  04278793           addi a5,a5,66 # 4100042 <gpio_get_boot_device+0x40f1cac>
    b97e:  4709                 li a4,2
    b980:  00e78023           sb a4,0(a5)
    b984:  041007b7           lui a5,0x4100
    b988:  09078793           addi a5,a5,144 # 4100090 <gpio_get_boot_device+0x40f1cfa
    b98c:  471d                 li a4,7
    b98e:  00e78023           sb a4,0(a5)
    b992:  041007b7           lui a5,0x4100
    b996:  09278793           addi a5,a5,146 # 4100092 <gpio_get_boot_device+0x40f1cfc
    b99a:  10000713           li a4,256
    b99e:  00e79023           sh a4,0(a5)
    b9a2:  041007b7           lui a5,0x4100
    b9a6:  05078793           addi a5,a5,80 # 4100050 <gpio_get_boot_device+0x40f1cba>
    b9aa:  471d                 li a4,7
    b9ac:  00e78023           sb a4,0(a5)
    b9b0:  041007b7           lui a5,0x4100
    b9b4:  04878793           addi a5,a5,72 # 4100048 <gpio_get_boot_device+0x40f1cb2>
    b9b8:  0007c783           lbu a5,0(a5)
    b9bc:  0ff7f713           andi a4,a5,255
    b9c0:  041007b7           lui a5,0x4100
    b9c4:  04878793           addi a5,a5,72 # 4100048 <gpio_get_boot_device+0x40f1cb2>
    b9c8:  00176713           ori a4,a4,1
    b9cc:  0ff77713           andi a4,a4,255
    b9d0:  00e78023           sb a4,0(a5)
    b9d4:  000487b7           lui a5,0x48
    b9d8:  e187b783           ld a5,-488(a5) # 47e18 <gpio_get_boot_device+0x39a82>
    b9dc:  853e                 mv a0,a5
    b9de:  5a9000ef           jal ra,c786 <FUN_0000c786>
    b9e2:  e8cfc0ef           jal ra,806e <brom_config_bit_1>
    b9e6:  87aa                 mv a5,a0
    b9e8:  cb81                 beqz a5,b9f8 <FUN_0000b908+0xf0>
    b9ea:  fe843783           ld a5,-24(s0)
    b9ee:  67bc                 ld a5,72(a5)
    b9f0:  470d                 li a4,3
    b9f2:  04e78623           sb a4,76(a5)
    b9f6:  a039                 j ba04 <FUN_0000b908+0xfc>
    b9f8:  fe843783           ld a5,-24(s0)
    b9fc:  67bc                 ld a5,72(a5)
    b9fe:  4709                 li a4,2
    ba00:  04e78623           sb a4,76(a5)
    ba04:  ec1ff0ef           jal ra,b8c4 <FUN_0000b8c4>
    ba08:  041007b7           lui a5,0x4100
    ba0c:  04078793           addi a5,a5,64 # 4100040 <gpio_get_boot_device+0x40f1caa>
    ba10:  0007c783           lbu a5,0(a5)
    ba14:  0ff7f713           andi a4,a5,255
    ba18:  041007b7           lui a5,0x4100
    ba1c:  04078793           addi a5,a5,64 # 4100040 <gpio_get_boot_device+0x40f1caa>
    ba20:  04076713           ori a4,a4,64
    ba24:  0ff77713           andi a4,a4,255
    ba28:  00e78023           sb a4,0(a5)
    ba2c:  0001                 nop
    ba2e:  60e2                 ld ra,24(sp)
    ba30:  6442                 ld s0,16(sp)
    ba32:  6105                 addi sp,sp,32
    ba34:  8082                 ret

000000000000ba36 <FUN_0000ba36>:
    ba36:  1101                 addi sp,sp,-32
    ba38:  ec06                 sd ra,24(sp)
    ba3a:  e822                 sd s0,16(sp)
    ba3c:  1000                 addi s0,sp,32
    ba3e:  fea43423           sd a0,-24(s0)
    ba42:  041007b7           lui a5,0x4100
    ba46:  04378793           addi a5,a5,67 # 4100043 <gpio_get_boot_device+0x40f1cad>
    ba4a:  0007c783           lbu a5,0(a5)
    ba4e:  0ff7f713           andi a4,a5,255
    ba52:  041007b7           lui a5,0x4100
    ba56:  04378793           addi a5,a5,67 # 4100043 <gpio_get_boot_device+0x40f1cad>
    ba5a:  9b79                 andi a4,a4,-2
    ba5c:  0ff77713           andi a4,a4,255
    ba60:  00e78023           sb a4,0(a5)
    ba64:  fe843503           ld a0,-24(s0)
    ba68:  ea1ff0ef           jal ra,b908 <FUN_0000b908>
    ba6c:  fe843503           ld a0,-24(s0)
    ba70:  de8ff0ef           jal ra,b058 <FUN_0000b058>
    ba74:  fe843503           ld a0,-24(s0)
    ba78:  e22ff0ef           jal ra,b09a <enable_interrupts>
    ba7c:  f6afe0ef           jal ra,a1e6 <FUN_0000a1e6>
    ba80:  0001                 nop
    ba82:  60e2                 ld ra,24(sp)
    ba84:  6442                 ld s0,16(sp)
    ba86:  6105                 addi sp,sp,32
    ba88:  8082                 ret

000000000000ba8a <FUN_0000ba8a>:
    ba8a:  7179                 addi sp,sp,-48
    ba8c:  f422                 sd s0,40(sp)
    ba8e:  1800                 addi s0,sp,48
    ba90:  fea43423           sd a0,-24(s0)
    ba94:  feb43023           sd a1,-32(s0)
    ba98:  fcc43c23           sd a2,-40(s0)
    ba9c:  fe843783           ld a5,-24(s0)
    baa0:  0097c783           lbu a5,9(a5)
    baa4:  2781                 sext.w a5,a5
    baa6:  07f7f793           andi a5,a5,127
    baaa:  2781                 sext.w a5,a5
    baac:  873e                 mv a4,a5
    baae:  4791                 li a5,4
    bab0:  00e7d463           bge a5,a4,bab8 <FUN_0000ba8a+0x2e>
    bab4:  57fd                 li a5,-1
    bab6:  a06d                 j bb60 <FUN_0000ba8a+0xd6>
    bab8:  fe843783           ld a5,-24(s0)
    babc:  0097c783           lbu a5,9(a5)
    bac0:  2781                 sext.w a5,a5
    bac2:  07f7f793           andi a5,a5,127
    bac6:  2781                 sext.w a5,a5
    bac8:  86be                 mv a3,a5
    baca:  4709                 li a4,2
    bacc:  04e68863           beq a3,a4,bb1c <FUN_0000ba8a+0x92>
    bad0:  86be                 mv a3,a5
    bad2:  4709                 li a4,2
    bad4:  00d74763           blt a4,a3,bae2 <FUN_0000ba8a+0x58>
    bad8:  873e                 mv a4,a5
    bada:  4785                 li a5,1
    badc:  02f70563           beq a4,a5,bb06 <FUN_0000ba8a+0x7c>
    bae0:  a809                 j baf2 <FUN_0000ba8a+0x68>
    bae2:  86be                 mv a3,a5
    bae4:  470d                 li a4,3
    bae6:  04e68663           beq a3,a4,bb32 <FUN_0000ba8a+0xa8>
    baea:  873e                 mv a4,a5
    baec:  4791                 li a5,4
    baee:  04f70d63           beq a4,a5,bb48 <FUN_0000ba8a+0xbe>
    baf2:  fe043783           ld a5,-32(s0)
    baf6:  0007a023           sw zero,0(a5)
    bafa:  fd843783           ld a5,-40(s0)
    bafe:  04100737           lui a4,0x4100
    bb02:  c398                 sw a4,0(a5)
    bb04:  a8a9                 j bb5e <FUN_0000ba8a+0xd4>
    bb06:  fe043783           ld a5,-32(s0)
    bb0a:  4705                 li a4,1
    bb0c:  c398                 sw a4,0(a5)
    bb0e:  fd843783           ld a5,-40(s0)
    bb12:  04100737           lui a4,0x4100
    bb16:  2711                 addiw a4,a4,4
    bb18:  c398                 sw a4,0(a5)
    bb1a:  a091                 j bb5e <FUN_0000ba8a+0xd4>
    bb1c:  fe043783           ld a5,-32(s0)
    bb20:  4709                 li a4,2
    bb22:  c398                 sw a4,0(a5)
    bb24:  fd843783           ld a5,-40(s0)
    bb28:  04100737           lui a4,0x4100
    bb2c:  2721                 addiw a4,a4,8
    bb2e:  c398                 sw a4,0(a5)
    bb30:  a03d                 j bb5e <FUN_0000ba8a+0xd4>
    bb32:  fe043783           ld a5,-32(s0)
    bb36:  470d                 li a4,3
    bb38:  c398                 sw a4,0(a5)
    bb3a:  fd843783           ld a5,-40(s0)
    bb3e:  04100737           lui a4,0x4100
    bb42:  2731                 addiw a4,a4,12
    bb44:  c398                 sw a4,0(a5)
    bb46:  a821                 j bb5e <FUN_0000ba8a+0xd4>
    bb48:  fe043783           ld a5,-32(s0)
    bb4c:  4711                 li a4,4
    bb4e:  c398                 sw a4,0(a5)
    bb50:  fd843783           ld a5,-40(s0)
    bb54:  04100737           lui a4,0x4100
    bb58:  2741                 addiw a4,a4,16
    bb5a:  c398                 sw a4,0(a5)
    bb5c:  0001                 nop
    bb5e:  4781                 li a5,0
    bb60:  853e                 mv a0,a5
    bb62:  7422                 ld s0,40(sp)
    bb64:  6145                 addi sp,sp,48
    bb66:  8082                 ret

000000000000bb68 <FUN_0000bb68>:
    bb68:  1141                 addi sp,sp,-16
    bb6a:  e422                 sd s0,8(sp)
    bb6c:  0800                 addi s0,sp,16
    bb6e:  0001                 nop
    bb70:  6422                 ld s0,8(sp)
    bb72:  0141                 addi sp,sp,16
    bb74:  8082                 ret

000000000000bb76 <FUN_0000bb76>:
    bb76:  1101                 addi sp,sp,-32
    bb78:  ec22                 sd s0,24(sp)
    bb7a:  1000                 addi s0,sp,32
    bb7c:  fea43423           sd a0,-24(s0)
    bb80:  fe843783           ld a5,-24(s0)
    bb84:  5bbc                 lw a5,112(a5)
    bb86:  ef91                 bnez a5,bba2 <FUN_0000bb76+0x2c>
    bb88:  041007b7           lui a5,0x4100
    bb8c:  04478793           addi a5,a5,68 # 4100044 <gpio_get_boot_device+0x40f1cae>
    bb90:  0007c783           lbu a5,0(a5)
    bb94:  0ff7f793           andi a5,a5,255
    bb98:  0007871b           sext.w a4,a5
    bb9c:  fe843783           ld a5,-24(s0)
    bba0:  dbb8                 sw a4,112(a5)
    bba2:  fe843783           ld a5,-24(s0)
    bba6:  5bbc                 lw a5,112(a5)
    bba8:  853e                 mv a0,a5
    bbaa:  6462                 ld s0,24(sp)
    bbac:  6105                 addi sp,sp,32
    bbae:  8082                 ret

000000000000bbb0 <FUN_0000bbb0>:
    bbb0:  1101                 addi sp,sp,-32
    bbb2:  ec22                 sd s0,24(sp)
    bbb4:  1000                 addi s0,sp,32
    bbb6:  fea43423           sd a0,-24(s0)
    bbba:  fe843783           ld a5,-24(s0)
    bbbe:  5bfc                 lw a5,116(a5)
    bbc0:  ef91                 bnez a5,bbdc <FUN_0000bbb0+0x2c>
    bbc2:  041007b7           lui a5,0x4100
    bbc6:  04678793           addi a5,a5,70 # 4100046 <gpio_get_boot_device+0x40f1cb0>
    bbca:  0007c783           lbu a5,0(a5)
    bbce:  0ff7f793           andi a5,a5,255
    bbd2:  0007871b           sext.w a4,a5
    bbd6:  fe843783           ld a5,-24(s0)
    bbda:  dbf8                 sw a4,116(a5)
    bbdc:  fe843783           ld a5,-24(s0)
    bbe0:  5bfc                 lw a5,116(a5)
    bbe2:  853e                 mv a0,a5
    bbe4:  6462                 ld s0,24(sp)
    bbe6:  6105                 addi sp,sp,32
    bbe8:  8082                 ret

000000000000bbea <FUN_0000bbea>:
    bbea:  1101                 addi sp,sp,-32
    bbec:  ec22                 sd s0,24(sp)
    bbee:  1000                 addi s0,sp,32
    bbf0:  fea43423           sd a0,-24(s0)
    bbf4:  fe843783           ld a5,-24(s0)
    bbf8:  5fbc                 lw a5,120(a5)
    bbfa:  ef91                 bnez a5,bc16 <FUN_0000bbea+0x2c>
    bbfc:  041007b7           lui a5,0x4100
    bc00:  04c78793           addi a5,a5,76 # 410004c <gpio_get_boot_device+0x40f1cb6>
    bc04:  0007c783           lbu a5,0(a5)
    bc08:  0ff7f793           andi a5,a5,255
    bc0c:  0007871b           sext.w a4,a5
    bc10:  fe843783           ld a5,-24(s0)
    bc14:  dfb8                 sw a4,120(a5)
    bc16:  fe843783           ld a5,-24(s0)
    bc1a:  5fbc                 lw a5,120(a5)
    bc1c:  853e                 mv a0,a5
    bc1e:  6462                 ld s0,24(sp)
    bc20:  6105                 addi sp,sp,32
    bc22:  8082                 ret

000000000000bc24 <FUN_0000bc24>:
    bc24:  1101                 addi sp,sp,-32
    bc26:  ec22                 sd s0,24(sp)
    bc28:  1000                 addi s0,sp,32
    bc2a:  fea43423           sd a0,-24(s0)
    bc2e:  87ae                 mv a5,a1
    bc30:  fef403a3           sb a5,-25(s0)
    bc34:  fe843783           ld a5,-24(s0)
    bc38:  5bb8                 lw a4,112(a5)
    bc3a:  fe744783           lbu a5,-25(s0)
    bc3e:  2781                 sext.w a5,a5
    bc40:  fff7c793           not a5,a5
    bc44:  2781                 sext.w a5,a5
    bc46:  8ff9                 and a5,a5,a4
    bc48:  0007871b           sext.w a4,a5
    bc4c:  fe843783           ld a5,-24(s0)
    bc50:  dbb8                 sw a4,112(a5)
    bc52:  041007b7           lui a5,0x4100
    bc56:  04478793           addi a5,a5,68 # 4100044 <gpio_get_boot_device+0x40f1cae>
    bc5a:  fe744703           lbu a4,-25(s0)
    bc5e:  00e78023           sb a4,0(a5)
    bc62:  4781                 li a5,0
    bc64:  853e                 mv a0,a5
    bc66:  6462                 ld s0,24(sp)
    bc68:  6105                 addi sp,sp,32
    bc6a:  8082                 ret

000000000000bc6c <FUN_0000bc6c>:
    bc6c:  1101                 addi sp,sp,-32
    bc6e:  ec22                 sd s0,24(sp)
    bc70:  1000                 addi s0,sp,32
    bc72:  fea43423           sd a0,-24(s0)
    bc76:  87ae                 mv a5,a1
    bc78:  fef403a3           sb a5,-25(s0)
    bc7c:  fe843783           ld a5,-24(s0)
    bc80:  5bf8                 lw a4,116(a5)
    bc82:  fe744783           lbu a5,-25(s0)
    bc86:  2781                 sext.w a5,a5
    bc88:  fff7c793           not a5,a5
    bc8c:  2781                 sext.w a5,a5
    bc8e:  8ff9                 and a5,a5,a4
    bc90:  0007871b           sext.w a4,a5
    bc94:  fe843783           ld a5,-24(s0)
    bc98:  dbf8                 sw a4,116(a5)
    bc9a:  041007b7           lui a5,0x4100
    bc9e:  04678793           addi a5,a5,70 # 4100046 <gpio_get_boot_device+0x40f1cb0>
    bca2:  fe744703           lbu a4,-25(s0)
    bca6:  00e78023           sb a4,0(a5)
    bcaa:  4781                 li a5,0
    bcac:  853e                 mv a0,a5
    bcae:  6462                 ld s0,24(sp)
    bcb0:  6105                 addi sp,sp,32
    bcb2:  8082                 ret

000000000000bcb4 <FUN_0000bcb4>:
    bcb4:  1101                 addi sp,sp,-32
    bcb6:  ec22                 sd s0,24(sp)
    bcb8:  1000                 addi s0,sp,32
    bcba:  fea43423           sd a0,-24(s0)
    bcbe:  87ae                 mv a5,a1
    bcc0:  fef403a3           sb a5,-25(s0)
    bcc4:  fe843783           ld a5,-24(s0)
    bcc8:  5fb8                 lw a4,120(a5)
    bcca:  fe744783           lbu a5,-25(s0)
    bcce:  2781                 sext.w a5,a5
    bcd0:  fff7c793           not a5,a5
    bcd4:  2781                 sext.w a5,a5
    bcd6:  8ff9                 and a5,a5,a4
    bcd8:  0007871b           sext.w a4,a5
    bcdc:  fe843783           ld a5,-24(s0)
    bce0:  dfb8                 sw a4,120(a5)
    bce2:  041007b7           lui a5,0x4100
    bce6:  04c78793           addi a5,a5,76 # 410004c <gpio_get_boot_device+0x40f1cb6>
    bcea:  fe744703           lbu a4,-25(s0)
    bcee:  00e78023           sb a4,0(a5)
    bcf2:  4781                 li a5,0
    bcf4:  853e                 mv a0,a5
    bcf6:  6462                 ld s0,24(sp)
    bcf8:  6105                 addi sp,sp,32
    bcfa:  8082                 ret

000000000000bcfc <FUN_0000bcfc>:
    bcfc:  1101                 addi sp,sp,-32
    bcfe:  ec22                 sd s0,24(sp)
    bd00:  1000                 addi s0,sp,32
    bd02:  fea43423           sd a0,-24(s0)
    bd06:  fe843783           ld a5,-24(s0)
    bd0a:  0607ac23           sw zero,120(a5)
    bd0e:  fe843783           ld a5,-24(s0)
    bd12:  0607a823           sw zero,112(a5)
    bd16:  fe843783           ld a5,-24(s0)
    bd1a:  0607aa23           sw zero,116(a5)
    bd1e:  4781                 li a5,0
    bd20:  853e                 mv a0,a5
    bd22:  6462                 ld s0,24(sp)
    bd24:  6105                 addi sp,sp,32
    bd26:  8082                 ret

000000000000bd28 <FUN_0000bd28>:
    bd28:  7179                 addi sp,sp,-48
    bd2a:  f406                 sd ra,40(sp)
    bd2c:  f022                 sd s0,32(sp)
    bd2e:  1800                 addi s0,sp,48
    bd30:  fea43423           sd a0,-24(s0)
    bd34:  feb43023           sd a1,-32(s0)
    bd38:  87b2                 mv a5,a2
    bd3a:  fcf42e23           sw a5,-36(s0)
    bd3e:  fdc42783           lw a5,-36(s0)
    bd42:  0187971b           slliw a4,a5,0x18
    bd46:  4187571b           sraiw a4,a4,0x18
    bd4a:  fe043783           ld a5,-32(s0)
    bd4e:  02e78023           sb a4,32(a5)
    bd52:  fe043783           ld a5,-32(s0)
    bd56:  6b9c                 ld a5,16(a5)
    bd58:  fe043503           ld a0,-32(s0)
    bd5c:  9782                 jalr a5
    bd5e:  0001                 nop
    bd60:  70a2                 ld ra,40(sp)
    bd62:  7402                 ld s0,32(sp)
    bd64:  6145                 addi sp,sp,48
    bd66:  8082                 ret

000000000000bd68 <FUN_0000bd68>:
    bd68:  7179                 addi sp,sp,-48
    bd6a:  f422                 sd s0,40(sp)
    bd6c:  1800                 addi s0,sp,48
    bd6e:  87aa                 mv a5,a0
    bd70:  fcb43823           sd a1,-48(s0)
    bd74:  8732                 mv a4,a2
    bd76:  fcf42e23           sw a5,-36(s0)
    bd7a:  87ba                 mv a5,a4
    bd7c:  fcf42c23           sw a5,-40(s0)
    bd80:  fe042223           sw zero,-28(s0)
    bd84:  fd043783           ld a5,-48(s0)
    bd88:  639c                 ld a5,0(a5)
    bd8a:  873e                 mv a4,a5
    bd8c:  fd043783           ld a5,-48(s0)
    bd90:  4f9c                 lw a5,24(a5)
    bd92:  1782                 slli a5,a5,0x20
    bd94:  9381                 srli a5,a5,0x20
    bd96:  97ba                 add a5,a5,a4
    bd98:  fef43423           sd a5,-24(s0)
    bd9c:  fd043783           ld a5,-48(s0)
    bda0:  4798                 lw a4,8(a5)
    bda2:  fd043783           ld a5,-48(s0)
    bda6:  4f9c                 lw a5,24(a5)
    bda8:  40f707bb           subw a5,a4,a5
    bdac:  2781                 sext.w a5,a5
    bdae:  863e                 mv a2,a5
    bdb0:  fd842783           lw a5,-40(s0)
    bdb4:  0007869b           sext.w a3,a5
    bdb8:  0006071b           sext.w a4,a2
    bdbc:  00d77363           bgeu a4,a3,bdc2 <FUN_0000bd68+0x5a>
    bdc0:  87b2                 mv a5,a2
    bdc2:  fef42223           sw a5,-28(s0)
    bdc6:  fd043783           ld a5,-48(s0)
    bdca:  4f9c                 lw a5,24(a5)
    bdcc:  fe442703           lw a4,-28(s0)
    bdd0:  9fb9                 addw a5,a5,a4
    bdd2:  0007871b           sext.w a4,a5
    bdd6:  fd043783           ld a5,-48(s0)
    bdda:  cf98                 sw a4,24(a5)
    bddc:  fe442783           lw a5,-28(s0)
    bde0:  fcf42c23           sw a5,-40(s0)
    bde4:  a829                 j bdfe <FUN_0000bd68+0x96>
    bde6:  fe843783           ld a5,-24(s0)
    bdea:  00178713           addi a4,a5,1
    bdee:  fee43423           sd a4,-24(s0)
    bdf2:  fdc46703           lwu a4,-36(s0)
    bdf6:  0007c783           lbu a5,0(a5)
    bdfa:  00f70023           sb a5,0(a4) # 4100000 <gpio_get_boot_device+0x40f1c6a>
    bdfe:  fd842783           lw a5,-40(s0)
    be02:  fff7871b           addiw a4,a5,-1
    be06:  fce42c23           sw a4,-40(s0)
    be0a:  fff1                 bnez a5,bde6 <FUN_0000bd68+0x7e>
    be0c:  fe442783           lw a5,-28(s0)
    be10:  853e                 mv a0,a5
    be12:  7422                 ld s0,40(sp)
    be14:  6145                 addi sp,sp,48
    be16:  8082                 ret

000000000000be18 <FUN_0000be18>:
    be18:  715d                 addi sp,sp,-80
    be1a:  e486                 sd ra,72(sp)
    be1c:  e0a2                 sd s0,64(sp)
    be1e:  0880                 addi s0,sp,80
    be20:  fca43423           sd a0,-56(s0)
    be24:  fcb43023           sd a1,-64(s0)
    be28:  fac43c23           sd a2,-72(s0)
    be2c:  fe042423           sw zero,-24(s0)
    be30:  fdc40713           addi a4,s0,-36
    be34:  fe040793           addi a5,s0,-32
    be38:  863a                 mv a2,a4
    be3a:  85be                 mv a1,a5
    be3c:  fc043503           ld a0,-64(s0)
    be40:  c4bff0ef           jal ra,ba8a <FUN_0000ba8a>
    be44:  87aa                 mv a5,a0
    be46:  c399                 beqz a5,be4c <FUN_0000be18+0x34>
    be48:  57fd                 li a5,-1
    be4a:  a245                 j bfea <FUN_0000be18+0x1d2>
    be4c:  fc043783           ld a5,-64(s0)
    be50:  47dc                 lw a5,12(a5)
    be52:  fef42223           sw a5,-28(s0)
    be56:  fdc42783           lw a5,-36(s0)
    be5a:  fe442703           lw a4,-28(s0)
    be5e:  863a                 mv a2,a4
    be60:  fb843583           ld a1,-72(s0)
    be64:  853e                 mv a0,a5
    be66:  f03ff0ef           jal ra,bd68 <FUN_0000bd68>
    be6a:  87aa                 mv a5,a0
    be6c:  fef42223           sw a5,-28(s0)
    be70:  fc043783           ld a5,-64(s0)
    be74:  47d8                 lw a4,12(a5)
    be76:  fe442783           lw a5,-28(s0)
    be7a:  2781                 sext.w a5,a5
    be7c:  00e78663           beq a5,a4,be88 <FUN_0000be18+0x70>
    be80:  4785                 li a5,1
    be82:  fef42623           sw a5,-20(s0)
    be86:  a025                 j beae <FUN_0000be18+0x96>
    be88:  fb843783           ld a5,-72(s0)
    be8c:  4798                 lw a4,8(a5)
    be8e:  fb843783           ld a5,-72(s0)
    be92:  4f9c                 lw a5,24(a5)
    be94:  00f71b63           bne a4,a5,beaa <FUN_0000be18+0x92>
    be98:  fb843783           ld a5,-72(s0)
    be9c:  00c7c783           lbu a5,12(a5)
    bea0:  e789                 bnez a5,beaa <FUN_0000be18+0x92>
    bea2:  4789                 li a5,2
    bea4:  fef42623           sw a5,-20(s0)
    bea8:  a019                 j beae <FUN_0000be18+0x96>
    beaa:  fe042623           sw zero,-20(s0)
    beae:  fec42783           lw a5,-20(s0)
    beb2:  2781                 sext.w a5,a5
    beb4:  cbf1                 beqz a5,bf88 <FUN_0000be18+0x170>
    beb6:  fe042783           lw a5,-32(s0)
    beba:  e3d9                 bnez a5,bf40 <FUN_0000be18+0x128>
    bebc:  fc843503           ld a0,-56(s0)
    bec0:  d2bff0ef           jal ra,bbea <FUN_0000bbea>
    bec4:  87aa                 mv a5,a0
    bec6:  8b91                 andi a5,a5,4
    bec8:  2781                 sext.w a5,a5
    beca:  e3c5                 bnez a5,bf6a <FUN_0000be18+0x152>
    becc:  fec42783           lw a5,-20(s0)
    bed0:  0007871b           sext.w a4,a5
    bed4:  4785                 li a5,1
    bed6:  02f71c63           bne a4,a5,bf0e <FUN_0000be18+0xf6>
    beda:  fe042703           lw a4,-32(s0)
    bede:  041007b7           lui a5,0x4100
    bee2:  04278793           addi a5,a5,66 # 4100042 <gpio_get_boot_device+0x40f1cac>
    bee6:  0ff77713           andi a4,a4,255
    beea:  00e78023           sb a4,0(a5)
    beee:  041007b7           lui a5,0x4100
    bef2:  08278793           addi a5,a5,130 # 4100082 <gpio_get_boot_device+0x40f1cec
    bef6:  4729                 li a4,10
    bef8:  00e79023           sh a4,0(a5)
    befc:  fc843783           ld a5,-56(s0)
    bf00:  67bc                 ld a5,72(a5)
    bf02:  0407a423           sw zero,72(a5)
    bf06:  4785                 li a5,1
    bf08:  fef42423           sw a5,-24(s0)
    bf0c:  a8b9                 j bf6a <FUN_0000be18+0x152>
    bf0e:  fec42783           lw a5,-20(s0)
    bf12:  0007871b           sext.w a4,a5
    bf16:  4789                 li a5,2
    bf18:  04f71963           bne a4,a5,bf6a <FUN_0000be18+0x152>
    bf1c:  fe042703           lw a4,-32(s0)
    bf20:  041007b7           lui a5,0x4100
    bf24:  04278793           addi a5,a5,66 # 4100042 <gpio_get_boot_device+0x40f1cac>
    bf28:  0ff77713           andi a4,a4,255
    bf2c:  00e78023           sb a4,0(a5)
    bf30:  041007b7           lui a5,0x4100
    bf34:  08278793           addi a5,a5,130 # 4100082 <gpio_get_boot_device+0x40f1cec
    bf38:  4709                 li a4,2
    bf3a:  00e79023           sh a4,0(a5)
    bf3e:  a035                 j bf6a <FUN_0000be18+0x152>
    bf40:  fe042703           lw a4,-32(s0)
    bf44:  041007b7           lui a5,0x4100
    bf48:  04278793           addi a5,a5,66 # 4100042 <gpio_get_boot_device+0x40f1cac>
    bf4c:  0ff77713           andi a4,a4,255
    bf50:  00e78023           sb a4,0(a5)
    bf54:  041007b7           lui a5,0x4100
    bf58:  08278793           addi a5,a5,130 # 4100082 <gpio_get_boot_device+0x40f1cec
    bf5c:  6709                 lui a4,0x2
    bf5e:  2705                 addiw a4,a4,1
    bf60:  00e79023           sh a4,0(a5)
    bf64:  4785                 li a5,1
    bf66:  fef42423           sw a5,-24(s0)
    bf6a:  fe842783           lw a5,-24(s0)
    bf6e:  0007871b           sext.w a4,a5
    bf72:  4785                 li a5,1
    bf74:  06f71963           bne a4,a5,bfe6 <FUN_0000be18+0x1ce>
    bf78:  4601                 li a2,0
    bf7a:  fb843583           ld a1,-72(s0)
    bf7e:  fc043503           ld a0,-64(s0)
    bf82:  da7ff0ef           jal ra,bd28 <FUN_0000bd28>
    bf86:  a085                 j bfe6 <FUN_0000be18+0x1ce>
    bf88:  fe042783           lw a5,-32(s0)
    bf8c:  eb9d                 bnez a5,bfc2 <FUN_0000be18+0x1aa>
    bf8e:  fc843503           ld a0,-56(s0)
    bf92:  c59ff0ef           jal ra,bbea <FUN_0000bbea>
    bf96:  87aa                 mv a5,a0
    bf98:  8b91                 andi a5,a5,4
    bf9a:  2781                 sext.w a5,a5
    bf9c:  e7a9                 bnez a5,bfe6 <FUN_0000be18+0x1ce>
    bf9e:  fe042703           lw a4,-32(s0)
    bfa2:  041007b7           lui a5,0x4100
    bfa6:  04278793           addi a5,a5,66 # 4100042 <gpio_get_boot_device+0x40f1cac>
    bfaa:  0ff77713           andi a4,a4,255
    bfae:  00e78023           sb a4,0(a5)
    bfb2:  041007b7           lui a5,0x4100
    bfb6:  08278793           addi a5,a5,130 # 4100082 <gpio_get_boot_device+0x40f1cec
    bfba:  4709                 li a4,2
    bfbc:  00e79023           sh a4,0(a5)
    bfc0:  a01d                 j bfe6 <FUN_0000be18+0x1ce>
    bfc2:  fe042703           lw a4,-32(s0)
    bfc6:  041007b7           lui a5,0x4100
    bfca:  04278793           addi a5,a5,66 # 4100042 <gpio_get_boot_device+0x40f1cac>
    bfce:  0ff77713           andi a4,a4,255
    bfd2:  00e78023           sb a4,0(a5)
    bfd6:  041007b7           lui a5,0x4100
    bfda:  08278793           addi a5,a5,130 # 4100082 <gpio_get_boot_device+0x40f1cec
    bfde:  6709                 lui a4,0x2
    bfe0:  2705                 addiw a4,a4,1
    bfe2:  00e79023           sh a4,0(a5)
    bfe6:  fe842783           lw a5,-24(s0)
    bfea:  853e                 mv a0,a5
    bfec:  60a6                 ld ra,72(sp)
    bfee:  6406                 ld s0,64(sp)
    bff0:  6161                 addi sp,sp,80
    bff2:  8082                 ret

000000000000bff4 <FUN_0000bff4>:
    bff4:  715d                 addi sp,sp,-80
    bff6:  e4a2                 sd s0,72(sp)
    bff8:  0880                 addi s0,sp,80
    bffa:  87aa                 mv a5,a0
    bffc:  fcb43023           sd a1,-64(s0)
    c000:  fac43c23           sd a2,-72(s0)
    c004:  8736                 mv a4,a3
    c006:  fcf42623           sw a5,-52(s0)
    c00a:  87ba                 mv a5,a4
    c00c:  fcf42423           sw a5,-56(s0)
    c010:  fe042623           sw zero,-20(s0)
    c014:  fb843783           ld a5,-72(s0)
    c018:  4798                 lw a4,8(a5)
    c01a:  fb843783           ld a5,-72(s0)
    c01e:  4f9c                 lw a5,24(a5)
    c020:  40f707bb           subw a5,a4,a5
    c024:  2781                 sext.w a5,a5
    c026:  863e                 mv a2,a5
    c028:  fc842783           lw a5,-56(s0)
    c02c:  0007869b           sext.w a3,a5
    c030:  0006071b           sext.w a4,a2
    c034:  00d77363           bgeu a4,a3,c03a <FUN_0000bff4+0x46>
    c038:  87b2                 mv a5,a2
    c03a:  fef42423           sw a5,-24(s0)
    c03e:  fb843783           ld a5,-72(s0)
    c042:  4f9c                 lw a5,24(a5)
    c044:  fe842703           lw a4,-24(s0)
    c048:  9fb9                 addw a5,a5,a4
    c04a:  0007871b           sext.w a4,a5
    c04e:  fb843783           ld a5,-72(s0)
    c052:  cf98                 sw a4,24(a5)
    c054:  fe842783           lw a5,-24(s0)
    c058:  fcf42423           sw a5,-56(s0)
    c05c:  fc842783           lw a5,-56(s0)
    c060:  0007871b           sext.w a4,a5
    c064:  4791                 li a5,4
    c066:  04e7f663           bgeu a5,a4,c0b2 <FUN_0000bff4+0xbe>
    c06a:  a825                 j c0a2 <FUN_0000bff4+0xae>
    c06c:  fcc42783           lw a5,-52(s0)
    c070:  0007c783           lbu a5,0(a5)
    c074:  0ff7f713           andi a4,a5,255
    c078:  fc043783           ld a5,-64(s0)
    c07c:  00e78023           sb a4,0(a5)
    c080:  fec42783           lw a5,-20(s0)
    c084:  0007871b           sext.w a4,a5
    c088:  479d                 li a5,7
    c08a:  00e7e763           bltu a5,a4,c098 <FUN_0000bff4+0xa4>
    c08e:  fec42783           lw a5,-20(s0)
    c092:  2785                 addiw a5,a5,1
    c094:  fef42623           sw a5,-20(s0)
    c098:  fc043783           ld a5,-64(s0)
    c09c:  0785                 addi a5,a5,1
    c09e:  fcf43023           sd a5,-64(s0)
    c0a2:  fc842783           lw a5,-56(s0)
    c0a6:  fff7871b           addiw a4,a5,-1
    c0aa:  fce42423           sw a4,-56(s0)
    c0ae:  ffdd                 bnez a5,c06c <FUN_0000bff4+0x78>
    c0b0:  a051                 j c134 <FUN_0000bff4+0x140>
    c0b2:  fc043783           ld a5,-64(s0)
    c0b6:  fef43023           sd a5,-32(s0)
    c0ba:  fc043783           ld a5,-64(s0)
    c0be:  fcf43c23           sd a5,-40(s0)
    c0c2:  fc842783           lw a5,-56(s0)
    c0c6:  0007871b           sext.w a4,a5
    c0ca:  4791                 li a5,4
    c0cc:  00f71b63           bne a4,a5,c0e2 <FUN_0000bff4+0xee>
    c0d0:  fcc42783           lw a5,-52(s0)
    c0d4:  439c                 lw a5,0(a5)
    c0d6:  0007871b           sext.w a4,a5
    c0da:  fe043783           ld a5,-32(s0)
    c0de:  c398                 sw a4,0(a5)
    c0e0:  a891                 j c134 <FUN_0000bff4+0x140>
    c0e2:  fc842783           lw a5,-56(s0)
    c0e6:  0007871b           sext.w a4,a5
    c0ea:  4789                 li a5,2
    c0ec:  02f71d63           bne a4,a5,c126 <FUN_0000bff4+0x132>
    c0f0:  fcc42783           lw a5,-52(s0)
    c0f4:  0007d783           lhu a5,0(a5)
    c0f8:  03079713           slli a4,a5,0x30
    c0fc:  9341                 srli a4,a4,0x30
    c0fe:  fd843783           ld a5,-40(s0)
    c102:  00e79023           sh a4,0(a5)
    c106:  a03d                 j c134 <FUN_0000bff4+0x140>
    c108:  fcc42783           lw a5,-52(s0)
    c10c:  0007c783           lbu a5,0(a5)
    c110:  0ff7f713           andi a4,a5,255
    c114:  fc043783           ld a5,-64(s0)
    c118:  00e78023           sb a4,0(a5)
    c11c:  fc043783           ld a5,-64(s0)
    c120:  0785                 addi a5,a5,1
    c122:  fcf43023           sd a5,-64(s0)
    c126:  fc842783           lw a5,-56(s0)
    c12a:  fff7871b           addiw a4,a5,-1
    c12e:  fce42423           sw a4,-56(s0)
    c132:  fbf9                 bnez a5,c108 <FUN_0000bff4+0x114>
    c134:  fe842783           lw a5,-24(s0)
    c138:  853e                 mv a0,a5
    c13a:  6426                 ld s0,72(sp)
    c13c:  6161                 addi sp,sp,80
    c13e:  8082                 ret

000000000000c140 <FUN_0000c140>:
    c140:  711d                 addi sp,sp,-96
    c142:  ec86                 sd ra,88(sp)
    c144:  e8a2                 sd s0,80(sp)
    c146:  1080                 addi s0,sp,96
    c148:  faa43c23           sd a0,-72(s0)
    c14c:  fab43823           sd a1,-80(s0)
    c150:  fac43423           sd a2,-88(s0)
    c154:  4785                 li a5,1
    c156:  fef42623           sw a5,-20(s0)
    c15a:  fe042223           sw zero,-28(s0)
    c15e:  fc840713           addi a4,s0,-56
    c162:  fcc40793           addi a5,s0,-52
    c166:  863a                 mv a2,a4
    c168:  85be                 mv a1,a5
    c16a:  fb043503           ld a0,-80(s0)
    c16e:  91dff0ef           jal ra,ba8a <FUN_0000ba8a>
    c172:  87aa                 mv a5,a0
    c174:  c399                 beqz a5,c17a <FUN_0000c140+0x3a>
    c176:  57fd                 li a5,-1
    c178:  a405                 j c398 <FUN_0000c140+0x258>
    c17a:  fa843783           ld a5,-88(s0)
    c17e:  639c                 ld a5,0(a5)
    c180:  873e                 mv a4,a5
    c182:  fa843783           ld a5,-88(s0)
    c186:  4f9c                 lw a5,24(a5)
    c188:  1782                 slli a5,a5,0x20
    c18a:  9381                 srli a5,a5,0x20
    c18c:  97ba                 add a5,a5,a4
    c18e:  fcf43c23           sd a5,-40(s0)
    c192:  fa843783           ld a5,-88(s0)
    c196:  4798                 lw a4,8(a5)
    c198:  fa843783           ld a5,-88(s0)
    c19c:  4f9c                 lw a5,24(a5)
    c19e:  40f707bb           subw a5,a4,a5
    c1a2:  fcf42a23           sw a5,-44(s0)
    c1a6:  fd442783           lw a5,-44(s0)
    c1aa:  2781                 sext.w a5,a5
    c1ac:  e399                 bnez a5,c1b2 <FUN_0000c140+0x72>
    c1ae:  57fd                 li a5,-1
    c1b0:  a2e5                 j c398 <FUN_0000c140+0x258>
    c1b2:  fcc42703           lw a4,-52(s0)
    c1b6:  041007b7           lui a5,0x4100
    c1ba:  04278793           addi a5,a5,66 # 4100042 <gpio_get_boot_device+0x40f1cac>
    c1be:  0ff77713           andi a4,a4,255
    c1c2:  00e78023           sb a4,0(a5)
    c1c6:  041007b7           lui a5,0x4100
    c1ca:  08878793           addi a5,a5,136 # 4100088 <gpio_get_boot_device+0x40f1cf2
    c1ce:  439c                 lw a5,0(a5)
    c1d0:  fef42223           sw a5,-28(s0)
    c1d4:  fb043783           ld a5,-80(s0)
    c1d8:  47d8                 lw a4,12(a5)
    c1da:  fe442783           lw a5,-28(s0)
    c1de:  2781                 sext.w a5,a5
    c1e0:  00f77863           bgeu a4,a5,c1f0 <FUN_0000c140+0xb0>
    c1e4:  fb043783           ld a5,-80(s0)
    c1e8:  47dc                 lw a5,12(a5)
    c1ea:  fef42423           sw a5,-24(s0)
    c1ee:  a029                 j c1f8 <FUN_0000c140+0xb8>
    c1f0:  fe442783           lw a5,-28(s0)
    c1f4:  fef42423           sw a5,-24(s0)
    c1f8:  fc842783           lw a5,-56(s0)
    c1fc:  2781                 sext.w a5,a5
    c1fe:  fe842703           lw a4,-24(s0)
    c202:  86ba                 mv a3,a4
    c204:  fa843603           ld a2,-88(s0)
    c208:  fd843583           ld a1,-40(s0)
    c20c:  853e                 mv a0,a5
    c20e:  de7ff0ef           jal ra,bff4 <FUN_0000bff4>
    c212:  87aa                 mv a5,a0
    c214:  fef42223           sw a5,-28(s0)
    c218:  fb043783           ld a5,-80(s0)
    c21c:  47d8                 lw a4,12(a5)
    c21e:  fe442783           lw a5,-28(s0)
    c222:  2781                 sext.w a5,a5
    c224:  02e7f363           bgeu a5,a4,c24a <FUN_0000c140+0x10a>
    c228:  4785                 li a5,1
    c22a:  fef42623           sw a5,-20(s0)
    c22e:  fe442703           lw a4,-28(s0)
    c232:  fe842783           lw a5,-24(s0)
    c236:  2701                 sext.w a4,a4
    c238:  2781                 sext.w a5,a5
    c23a:  02f70663           beq a4,a5,c266 <FUN_0000c140+0x126>
    c23e:  fa843783           ld a5,-88(s0)
    c242:  577d                 li a4,-1
    c244:  02e78023           sb a4,32(a5)
    c248:  a839                 j c266 <FUN_0000c140+0x126>
    c24a:  fa843783           ld a5,-88(s0)
    c24e:  4798                 lw a4,8(a5)
    c250:  fa843783           ld a5,-88(s0)
    c254:  4f9c                 lw a5,24(a5)
    c256:  00f71663           bne a4,a5,c262 <FUN_0000c140+0x122>
    c25a:  4785                 li a5,1
    c25c:  fef42623           sw a5,-20(s0)
    c260:  a019                 j c266 <FUN_0000c140+0x126>
    c262:  fe042623           sw zero,-20(s0)
    c266:  fcc42703           lw a4,-52(s0)
    c26a:  041007b7           lui a5,0x4100
    c26e:  04278793           addi a5,a5,66 # 4100042 <gpio_get_boot_device+0x40f1cac>
    c272:  0ff77713           andi a4,a4,255
    c276:  00e78023           sb a4,0(a5)
    c27a:  041007b7           lui a5,0x4100
    c27e:  08878793           addi a5,a5,136 # 4100088 <gpio_get_boot_device+0x40f1cf2
    c282:  439c                 lw a5,0(a5)
    c284:  fef42223           sw a5,-28(s0)
    c288:  fec42783           lw a5,-20(s0)
    c28c:  2781                 sext.w a5,a5
    c28e:  cbd1                 beqz a5,c322 <FUN_0000c140+0x1e2>
    c290:  fcc42783           lw a5,-52(s0)
    c294:  eb8d                 bnez a5,c2c6 <FUN_0000c140+0x186>
    c296:  fcc42703           lw a4,-52(s0)
    c29a:  041007b7           lui a5,0x4100
    c29e:  04278793           addi a5,a5,66 # 4100042 <gpio_get_boot_device+0x40f1cac>
    c2a2:  0ff77713           andi a4,a4,255
    c2a6:  00e78023           sb a4,0(a5)
    c2aa:  041007b7           lui a5,0x4100
    c2ae:  08278793           addi a5,a5,130 # 4100082 <gpio_get_boot_device+0x40f1cec
    c2b2:  04800713           li a4,72
    c2b6:  00e79023           sh a4,0(a5)
    c2ba:  fb843783           ld a5,-72(s0)
    c2be:  67bc                 ld a5,72(a5)
    c2c0:  0407a423           sw zero,72(a5)
    c2c4:  a0a1                 j c30c <FUN_0000c140+0x1cc>
    c2c6:  fcc42703           lw a4,-52(s0)
    c2ca:  041007b7           lui a5,0x4100
    c2ce:  04278793           addi a5,a5,66 # 4100042 <gpio_get_boot_device+0x40f1cac>
    c2d2:  0ff77713           andi a4,a4,255
    c2d6:  00e78023           sb a4,0(a5)
    c2da:  041007b7           lui a5,0x4100
    c2de:  08678793           addi a5,a5,134 # 4100086 <gpio_get_boot_device+0x40f1cf0
    c2e2:  0007d783           lhu a5,0(a5)
    c2e6:  17c2                 slli a5,a5,0x30
    c2e8:  93c1                 srli a5,a5,0x30
    c2ea:  fcf42823           sw a5,-48(s0)
    c2ee:  fd042783           lw a5,-48(s0)
    c2f2:  9bf9                 andi a5,a5,-2
    c2f4:  fcf42823           sw a5,-48(s0)
    c2f8:  041007b7           lui a5,0x4100
    c2fc:  08678793           addi a5,a5,134 # 4100086 <gpio_get_boot_device+0x40f1cf0
    c300:  fd042703           lw a4,-48(s0)
    c304:  1742                 slli a4,a4,0x30
    c306:  9341                 srli a4,a4,0x30
    c308:  00e79023           sh a4,0(a5)
    c30c:  4601                 li a2,0
    c30e:  fa843583           ld a1,-88(s0)
    c312:  fb043503           ld a0,-80(s0)
    c316:  a13ff0ef           jal ra,bd28 <FUN_0000bd28>
    c31a:  4785                 li a5,1
    c31c:  fef42623           sw a5,-20(s0)
    c320:  a895                 j c394 <FUN_0000c140+0x254>
    c322:  fcc42783           lw a5,-52(s0)
    c326:  e785                 bnez a5,c34e <FUN_0000c140+0x20e>
    c328:  fcc42703           lw a4,-52(s0)
    c32c:  041007b7           lui a5,0x4100
    c330:  04278793           addi a5,a5,66 # 4100042 <gpio_get_boot_device+0x40f1cac>
    c334:  0ff77713           andi a4,a4,255
    c338:  00e78023           sb a4,0(a5)
    c33c:  041007b7           lui a5,0x4100
    c340:  08278793           addi a5,a5,130 # 4100082 <gpio_get_boot_device+0x40f1cec
    c344:  04000713           li a4,64
    c348:  00e79023           sh a4,0(a5)
    c34c:  a0a1                 j c394 <FUN_0000c140+0x254>
    c34e:  fcc42703           lw a4,-52(s0)
    c352:  041007b7           lui a5,0x4100
    c356:  04278793           addi a5,a5,66 # 4100042 <gpio_get_boot_device+0x40f1cac>
    c35a:  0ff77713           andi a4,a4,255
    c35e:  00e78023           sb a4,0(a5)
    c362:  041007b7           lui a5,0x4100
    c366:  08678793           addi a5,a5,134 # 4100086 <gpio_get_boot_device+0x40f1cf0
    c36a:  0007d783           lhu a5,0(a5)
    c36e:  17c2                 slli a5,a5,0x30
    c370:  93c1                 srli a5,a5,0x30
    c372:  fcf42823           sw a5,-48(s0)
    c376:  fd042783           lw a5,-48(s0)
    c37a:  9bf9                 andi a5,a5,-2
    c37c:  fcf42823           sw a5,-48(s0)
    c380:  041007b7           lui a5,0x4100
    c384:  08678793           addi a5,a5,134 # 4100086 <gpio_get_boot_device+0x40f1cf0
    c388:  fd042703           lw a4,-48(s0)
    c38c:  1742                 slli a4,a4,0x30
    c38e:  9341                 srli a4,a4,0x30
    c390:  00e79023           sh a4,0(a5)
    c394:  fec42783           lw a5,-20(s0)
    c398:  853e                 mv a0,a5
    c39a:  60e6                 ld ra,88(sp)
    c39c:  6446                 ld s0,80(sp)
    c39e:  6125                 addi sp,sp,96
    c3a0:  8082                 ret

000000000000c3a2 <FUN_0000c3a2>:
    c3a2:  715d                 addi sp,sp,-80
    c3a4:  e486                 sd ra,72(sp)
    c3a6:  e0a2                 sd s0,64(sp)
    c3a8:  0880                 addi s0,sp,80
    c3aa:  fca43423           sd a0,-56(s0)
    c3ae:  fcb43023           sd a1,-64(s0)
    c3b2:  87b2                 mv a5,a2
    c3b4:  faf40fa3           sb a5,-65(s0)
    c3b8:  fe043023           sd zero,-32(s0)
    c3bc:  fe042623           sw zero,-20(s0)
    c3c0:  fc042e23           sw zero,-36(s0)
    c3c4:  fc043783           ld a5,-64(s0)
    c3c8:  4fdc                 lw a5,28(a5)
    c3ca:  9bf1                 andi a5,a5,-4
    c3cc:  2781                 sext.w a5,a5
    c3ce:  c399                 beqz a5,c3d4 <FUN_0000c3a2+0x32>
    c3d0:  57fd                 li a5,-1
    c3d2:  ac05                 j c602 <FUN_0000c3a2+0x260>
    c3d4:  fbf44783           lbu a5,-65(s0)
    c3d8:  0ff7f793           andi a5,a5,255
    c3dc:  e789                 bnez a5,c3e6 <FUN_0000c3a2+0x44>
    c3de:  fc843503           ld a0,-56(s0)
    c3e2:  c9bfe0ef           jal ra,b07c <disable_interrupts>
    c3e6:  fc843783           ld a5,-56(s0)
    c3ea:  67b4                 ld a3,72(a5)
    c3ec:  fc043783           ld a5,-64(s0)
    c3f0:  4fdc                 lw a5,28(a5)
    c3f2:  02079713           slli a4,a5,0x20
    c3f6:  9301                 srli a4,a4,0x20
    c3f8:  87ba                 mv a5,a4
    c3fa:  0786                 slli a5,a5,0x1
    c3fc:  97ba                 add a5,a5,a4
    c3fe:  078e                 slli a5,a5,0x3
    c400:  97b6                 add a5,a5,a3
    c402:  fef43023           sd a5,-32(s0)
    c406:  fc043783           ld a5,-64(s0)
    c40a:  0007ac23           sw zero,24(a5)
    c40e:  fe043783           ld a5,-32(s0)
    c412:  0097c783           lbu a5,9(a5)
    c416:  c3b5                 beqz a5,c47a <FUN_0000c3a2+0xd8>
    c418:  fe043783           ld a5,-32(s0)
    c41c:  0097c703           lbu a4,9(a5)
    c420:  041007b7           lui a5,0x4100
    c424:  04278793           addi a5,a5,66 # 4100042 <gpio_get_boot_device+0x40f1cac>
    c428:  07f77713           andi a4,a4,127
    c42c:  0ff77713           andi a4,a4,255
    c430:  00e78023           sb a4,0(a5)
    c434:  fe043783           ld a5,-32(s0)
    c438:  0097c783           lbu a5,9(a5)
    c43c:  0187979b           slliw a5,a5,0x18
    c440:  4187d79b           sraiw a5,a5,0x18
    c444:  0007d763           bgez a5,c452 <FUN_0000c3a2+0xb0>
    c448:  041007b7           lui a5,0x4100
    c44c:  08278793           addi a5,a5,130 # 4100082 <gpio_get_boot_device+0x40f1cec
    c450:  a029                 j c45a <FUN_0000c3a2+0xb8>
    c452:  041007b7           lui a5,0x4100
    c456:  08678793           addi a5,a5,134 # 4100086 <gpio_get_boot_device+0x40f1cf0
    c45a:  0007d783           lhu a5,0(a5)
    c45e:  17c2                 slli a5,a5,0x30
    c460:  93c1                 srli a5,a5,0x30
    c462:  fef42623           sw a5,-20(s0)
    c466:  041007b7           lui a5,0x4100
    c46a:  08878793           addi a5,a5,136 # 4100088 <gpio_get_boot_device+0x40f1cf2
    c46e:  0007d783           lhu a5,0(a5)
    c472:  17c2                 slli a5,a5,0x30
    c474:  93c1                 srli a5,a5,0x30
    c476:  fcf42e23           sw a5,-36(s0)
    c47a:  fe043783           ld a5,-32(s0)
    c47e:  0097c783           lbu a5,9(a5)
    c482:  efa1                 bnez a5,c4da <FUN_0000c3a2+0x138>
    c484:  fc843783           ld a5,-56(s0)
    c488:  67bc                 ld a5,72(a5)
    c48a:  47b8                 lw a4,72(a5)
    c48c:  86ba                 mv a3,a4
    c48e:  4785                 li a5,1
    c490:  00f68663           beq a3,a5,c49c <FUN_0000c3a2+0xfa>
    c494:  4789                 li a5,2
    c496:  02f70163           beq a4,a5,c4b8 <FUN_0000c3a2+0x116>
    c49a:  a02d                 j c4c4 <FUN_0000c3a2+0x122>
    c49c:  fc043603           ld a2,-64(s0)
    c4a0:  fe043583           ld a1,-32(s0)
    c4a4:  fc843503           ld a0,-56(s0)
    c4a8:  971ff0ef           jal ra,be18 <FUN_0000be18>
    c4ac:  87aa                 mv a5,a0
    c4ae:  12078f63           beqz a5,c5ec <FUN_0000c3a2+0x24a>
    c4b2:  fc043023           sd zero,-64(s0)
    c4b6:  aa1d                 j c5ec <FUN_0000c3a2+0x24a>
    c4b8:  fc843783           ld a5,-56(s0)
    c4bc:  67bc                 ld a5,72(a5)
    c4be:  0407a423           sw zero,72(a5)
    c4c2:  a235                 j c5ee <FUN_0000c3a2+0x24c>
    c4c4:  fbf44783           lbu a5,-65(s0)
    c4c8:  0ff7f793           andi a5,a5,255
    c4cc:  e789                 bnez a5,c4d6 <FUN_0000c3a2+0x134>
    c4ce:  fc843503           ld a0,-56(s0)
    c4d2:  bc9fe0ef           jal ra,b09a <enable_interrupts>
    c4d6:  57fd                 li a5,-1
    c4d8:  a22d                 j c602 <FUN_0000c3a2+0x260>
    c4da:  fe043783           ld a5,-32(s0)
    c4de:  0097c783           lbu a5,9(a5)
    c4e2:  0187979b           slliw a5,a5,0x18
    c4e6:  4187d79b           sraiw a5,a5,0x18
    c4ea:  0207d463           bgez a5,c512 <FUN_0000c3a2+0x170>
    c4ee:  fec42783           lw a5,-20(s0)
    c4f2:  8b85                 andi a5,a5,1
    c4f4:  2781                 sext.w a5,a5
    c4f6:  ef91                 bnez a5,c512 <FUN_0000c3a2+0x170>
    c4f8:  fc043603           ld a2,-64(s0)
    c4fc:  fe043583           ld a1,-32(s0)
    c500:  fc843503           ld a0,-56(s0)
    c504:  915ff0ef           jal ra,be18 <FUN_0000be18>
    c508:  87aa                 mv a5,a0
    c50a:  c781                 beqz a5,c512 <FUN_0000c3a2+0x170>
    c50c:  fc043023           sd zero,-64(s0)
    c510:  a8f9                 j c5ee <FUN_0000c3a2+0x24c>
    c512:  fe043783           ld a5,-32(s0)
    c516:  0097c783           lbu a5,9(a5)
    c51a:  0187979b           slliw a5,a5,0x18
    c51e:  4187d79b           sraiw a5,a5,0x18
    c522:  0c07c663           bltz a5,c5ee <FUN_0000c3a2+0x24c>
    c526:  fec42783           lw a5,-20(s0)
    c52a:  8b85                 andi a5,a5,1
    c52c:  2781                 sext.w a5,a5
    c52e:  c3e1                 beqz a5,c5ee <FUN_0000c3a2+0x24c>
    c530:  041007b7           lui a5,0x4100
    c534:  08878793           addi a5,a5,136 # 4100088 <gpio_get_boot_device+0x40f1cf2
    c538:  0007d783           lhu a5,0(a5)
    c53c:  17c2                 slli a5,a5,0x30
    c53e:  93c1                 srli a5,a5,0x30
    c540:  fcf42e23           sw a5,-36(s0)
    c544:  fdc42783           lw a5,-36(s0)
    c548:  2781                 sext.w a5,a5
    c54a:  c3d5                 beqz a5,c5ee <FUN_0000c3a2+0x24c>
    c54c:  fc043603           ld a2,-64(s0)
    c550:  fe043583           ld a1,-32(s0)
    c554:  fc843503           ld a0,-56(s0)
    c558:  be9ff0ef           jal ra,c140 <FUN_0000c140>
    c55c:  fe043783           ld a5,-32(s0)
    c560:  0097c703           lbu a4,9(a5)
    c564:  041007b7           lui a5,0x4100
    c568:  04278793           addi a5,a5,66 # 4100042 <gpio_get_boot_device+0x40f1cac>
    c56c:  07f77713           andi a4,a4,127
    c570:  0ff77713           andi a4,a4,255
    c574:  00e78023           sb a4,0(a5)
    c578:  fe043783           ld a5,-32(s0)
    c57c:  0097c783           lbu a5,9(a5)
    c580:  0187979b           slliw a5,a5,0x18
    c584:  4187d79b           sraiw a5,a5,0x18
    c588:  0007d763           bgez a5,c596 <FUN_0000c3a2+0x1f4>
    c58c:  041007b7           lui a5,0x4100
    c590:  08278793           addi a5,a5,130 # 4100082 <gpio_get_boot_device+0x40f1cec
    c594:  a029                 j c59e <FUN_0000c3a2+0x1fc>
    c596:  041007b7           lui a5,0x4100
    c59a:  08678793           addi a5,a5,134 # 4100086 <gpio_get_boot_device+0x40f1cf0
    c59e:  0007d783           lhu a5,0(a5)
    c5a2:  17c2                 slli a5,a5,0x30
    c5a4:  93c1                 srli a5,a5,0x30
    c5a6:  fef42623           sw a5,-20(s0)
    c5aa:  041007b7           lui a5,0x4100
    c5ae:  08878793           addi a5,a5,136 # 4100088 <gpio_get_boot_device+0x40f1cf2
    c5b2:  0007d783           lhu a5,0(a5)
    c5b6:  17c2                 slli a5,a5,0x30
    c5b8:  93c1                 srli a5,a5,0x30
    c5ba:  fcf42e23           sw a5,-36(s0)
    c5be:  fc043783           ld a5,-64(s0)
    c5c2:  0207c783           lbu a5,32(a5)
    c5c6:  0187979b           slliw a5,a5,0x18
    c5ca:  4187d79b           sraiw a5,a5,0x18
    c5ce:  cb99                 beqz a5,c5e4 <FUN_0000c3a2+0x242>
    c5d0:  fec42783           lw a5,-20(s0)
    c5d4:  8b85                 andi a5,a5,1
    c5d6:  2781                 sext.w a5,a5
    c5d8:  c799                 beqz a5,c5e6 <FUN_0000c3a2+0x244>
    c5da:  fdc42783           lw a5,-36(s0)
    c5de:  2781                 sext.w a5,a5
    c5e0:  f7b5                 bnez a5,c54c <FUN_0000c3a2+0x1aa>
    c5e2:  a011                 j c5e6 <FUN_0000c3a2+0x244>
    c5e4:  0001                 nop
    c5e6:  fc043023           sd zero,-64(s0)
    c5ea:  a011                 j c5ee <FUN_0000c3a2+0x24c>
    c5ec:  0001                 nop
    c5ee:  fbf44783           lbu a5,-65(s0)
    c5f2:  0ff7f793           andi a5,a5,255
    c5f6:  e789                 bnez a5,c600 <FUN_0000c3a2+0x25e>
    c5f8:  fc843503           ld a0,-56(s0)
    c5fc:  a9ffe0ef           jal ra,b09a <enable_interrupts>
    c600:  4781                 li a5,0
    c602:  853e                 mv a0,a5
    c604:  60a6                 ld ra,72(sp)
    c606:  6406                 ld s0,64(sp)
    c608:  6161                 addi sp,sp,80
    c60a:  8082                 ret

000000000000c60c <FUN_0000c60c>:
    c60c:  7179                 addi sp,sp,-48
    c60e:  f406                 sd ra,40(sp)
    c610:  f022                 sd s0,32(sp)
    c612:  1800                 addi s0,sp,48
    c614:  fea43423           sd a0,-24(s0)
    c618:  feb43023           sd a1,-32(s0)
    c61c:  87b2                 mv a5,a2
    c61e:  fcf40fa3           sb a5,-33(s0)
    c622:  fdf44783           lbu a5,-33(s0)
    c626:  863e                 mv a2,a5
    c628:  fe043583           ld a1,-32(s0)
    c62c:  fe843503           ld a0,-24(s0)
    c630:  d73ff0ef           jal ra,c3a2 <FUN_0000c3a2>
    c634:  87aa                 mv a5,a0
    c636:  853e                 mv a0,a5
    c638:  70a2                 ld ra,40(sp)
    c63a:  7402                 ld s0,32(sp)
    c63c:  6145                 addi sp,sp,48
    c63e:  8082                 ret

000000000000c640 <FUN_0000c640>:
    c640:  1101                 addi sp,sp,-32
    c642:  ec22                 sd s0,24(sp)
    c644:  1000                 addi s0,sp,32
    c646:  fea43423           sd a0,-24(s0)
    c64a:  fe843783           ld a5,-24(s0)
    c64e:  0007a423           sw zero,8(a5)
    c652:  fe843783           ld a5,-24(s0)
    c656:  0007a223           sw zero,4(a5)
    c65a:  fe843783           ld a5,-24(s0)
    c65e:  0007a023           sw zero,0(a5)
    c662:  0001                 nop
    c664:  6462                 ld s0,24(sp)
    c666:  6105                 addi sp,sp,32
    c668:  8082                 ret

000000000000c66a <FUN_0000c66a>:
    c66a:  7179                 addi sp,sp,-48
    c66c:  f406                 sd ra,40(sp)
    c66e:  f022                 sd s0,32(sp)
    c670:  1800                 addi s0,sp,48
    c672:  fca43c23           sd a0,-40(s0)
    c676:  fe042623           sw zero,-20(s0)
    c67a:  fd843783           ld a5,-40(s0)
    c67e:  0087c783           lbu a5,8(a5)
    c682:  853e                 mv a0,a5
    c684:  a49fe0ef           jal ra,b0cc <FUN_0000b0cc>
    c688:  fd843783           ld a5,-40(s0)
    c68c:  0097c783           lbu a5,9(a5)
    c690:  0187979b           slliw a5,a5,0x18
    c694:  4187d79b           sraiw a5,a5,0x18
    c698:  0607d863           bgez a5,c708 <FUN_0000c66a+0x9e>
    c69c:  041007b7           lui a5,0x4100
    c6a0:  08278793           addi a5,a5,130 # 4100082 <gpio_get_boot_device+0x40f1cec
    c6a4:  04800713           li a4,72
    c6a8:  00e79023           sh a4,0(a5)
    c6ac:  fd843783           ld a5,-40(s0)
    c6b0:  47d8                 lw a4,12(a5)
    c6b2:  041007b7           lui a5,0x4100
    c6b6:  08078793           addi a5,a5,128 # 4100080 <gpio_get_boot_device+0x40f1cea
    c6ba:  7ff77713           andi a4,a4,2047
    c6be:  2701                 sext.w a4,a4
    c6c0:  c398                 sw a4,0(a5)
    c6c2:  041007b7           lui a5,0x4100
    c6c6:  04878793           addi a5,a5,72 # 4100048 <gpio_get_boot_device+0x40f1cb2>
    c6ca:  0007c783           lbu a5,0(a5)
    c6ce:  0ff7f793           andi a5,a5,255
    c6d2:  fef42623           sw a5,-20(s0)
    c6d6:  fec42783           lw a5,-20(s0)
    c6da:  0ff7f693           andi a3,a5,255
    c6de:  fd843783           ld a5,-40(s0)
    c6e2:  0087c783           lbu a5,8(a5)
    c6e6:  2781                 sext.w a5,a5
    c6e8:  4705                 li a4,1
    c6ea:  00f717bb           sllw a5,a4,a5
    c6ee:  2781                 sext.w a5,a5
    c6f0:  0ff7f713           andi a4,a5,255
    c6f4:  041007b7           lui a5,0x4100
    c6f8:  04878793           addi a5,a5,72 # 4100048 <gpio_get_boot_device+0x40f1cb2>
    c6fc:  8f55                 or a4,a4,a3
    c6fe:  0ff77713           andi a4,a4,255
    c702:  00e78023           sb a4,0(a5)
    c706:  a89d                 j c77c <FUN_0000c66a+0x112>
    c708:  041007b7           lui a5,0x4100
    c70c:  08678793           addi a5,a5,134 # 4100086 <gpio_get_boot_device+0x40f1cf0
    c710:  09000713           li a4,144
    c714:  00e79023           sh a4,0(a5)
    c718:  fd843783           ld a5,-40(s0)
    c71c:  47dc                 lw a5,12(a5)
    c71e:  03079713           slli a4,a5,0x30
    c722:  9341                 srli a4,a4,0x30
    c724:  041007b7           lui a5,0x4100
    c728:  08478793           addi a5,a5,132 # 4100084 <gpio_get_boot_device+0x40f1cee
    c72c:  7ff77713           andi a4,a4,2047
    c730:  1742                 slli a4,a4,0x30
    c732:  9341                 srli a4,a4,0x30
    c734:  00e79023           sh a4,0(a5)
    c738:  041007b7           lui a5,0x4100
    c73c:  04a78793           addi a5,a5,74 # 410004a <gpio_get_boot_device+0x40f1cb4>
    c740:  0007c783           lbu a5,0(a5)
    c744:  0ff7f793           andi a5,a5,255
    c748:  fef42623           sw a5,-20(s0)
    c74c:  fec42783           lw a5,-20(s0)
    c750:  0ff7f693           andi a3,a5,255
    c754:  fd843783           ld a5,-40(s0)
    c758:  0087c783           lbu a5,8(a5)
    c75c:  2781                 sext.w a5,a5
    c75e:  4705                 li a4,1
    c760:  00f717bb           sllw a5,a4,a5
    c764:  2781                 sext.w a5,a5
    c766:  0ff7f713           andi a4,a5,255
    c76a:  041007b7           lui a5,0x4100
    c76e:  04a78793           addi a5,a5,74 # 410004a <gpio_get_boot_device+0x40f1cb4>
    c772:  8f55                 or a4,a4,a3
    c774:  0ff77713           andi a4,a4,255
    c778:  00e78023           sb a4,0(a5)
    c77c:  0001                 nop
    c77e:  70a2                 ld ra,40(sp)
    c780:  7402                 ld s0,32(sp)
    c782:  6145                 addi sp,sp,48
    c784:  8082                 ret

000000000000c786 <FUN_0000c786>:
    c786:  1101                 addi sp,sp,-32
    c788:  ec06                 sd ra,24(sp)
    c78a:  e822                 sd s0,16(sp)
    c78c:  1000                 addi s0,sp,32
    c78e:  fea43423           sd a0,-24(s0)
    c792:  fe843783           ld a5,-24(s0)
    c796:  67bc                 ld a5,72(a5)
    c798:  03078793           addi a5,a5,48
    c79c:  853e                 mv a0,a5
    c79e:  ecdff0ef           jal ra,c66a <FUN_0000c66a>
    c7a2:  fe843783           ld a5,-24(s0)
    c7a6:  67bc                 ld a5,72(a5)
    c7a8:  07e1                 addi a5,a5,24
    c7aa:  853e                 mv a0,a5
    c7ac:  ebfff0ef           jal ra,c66a <FUN_0000c66a>
    c7b0:  0001                 nop
    c7b2:  60e2                 ld ra,24(sp)
    c7b4:  6442                 ld s0,16(sp)
    c7b6:  6105                 addi sp,sp,32
    c7b8:  8082                 ret

000000000000c7ba <FUN_0000c7ba>:
    c7ba:  7139                 addi sp,sp,-64
    c7bc:  fc06                 sd ra,56(sp)
    c7be:  f822                 sd s0,48(sp)
    c7c0:  0080                 addi s0,sp,64
    c7c2:  fca43423           sd a0,-56(s0)
    c7c6:  fe042623           sw zero,-20(s0)
    c7ca:  fe042423           sw zero,-24(s0)
    c7ce:  fc843783           ld a5,-56(s0)
    c7d2:  fcf43c23           sd a5,-40(s0)
    c7d6:  4501                 li a0,0
    c7d8:  8f5fe0ef           jal ra,b0cc <FUN_0000b0cc>
    c7dc:  041007b7           lui a5,0x4100
    c7e0:  08878793           addi a5,a5,136 # 4100088 <gpio_get_boot_device+0x40f1cf2
    c7e4:  0007d783           lhu a5,0(a5)
    c7e8:  17c2                 slli a5,a5,0x30
    c7ea:  93c1                 srli a5,a5,0x30
    c7ec:  fef42423           sw a5,-24(s0)
    c7f0:  fe842783           lw a5,-24(s0)
    c7f4:  0007871b           sext.w a4,a5
    c7f8:  47a1                 li a5,8
    c7fa:  06f70763           beq a4,a5,c868 <FUN_0000c7ba+0xae>
    c7fe:  fe042223           sw zero,-28(s0)
    c802:  a005                 j c822 <FUN_0000c7ba+0x68>
    c804:  041007b7           lui a5,0x4100
    c808:  08878793           addi a5,a5,136 # 4100088 <gpio_get_boot_device+0x40f1cf2
    c80c:  0007d783           lhu a5,0(a5)
    c810:  17c2                 slli a5,a5,0x30
    c812:  93c1                 srli a5,a5,0x30
    c814:  fef42423           sw a5,-24(s0)
    c818:  fe442783           lw a5,-28(s0)
    c81c:  2785                 addiw a5,a5,1
    c81e:  fef42223           sw a5,-28(s0)
    c822:  fe442783           lw a5,-28(s0)
    c826:  0007871b           sext.w a4,a5
    c82a:  47bd                 li a5,15
    c82c:  02e7ce63           blt a5,a4,c868 <FUN_0000c7ba+0xae>
    c830:  fe842783           lw a5,-24(s0)
    c834:  0007871b           sext.w a4,a5
    c838:  47a1                 li a5,8
    c83a:  fcf715e3           bne a4,a5,c804 <FUN_0000c7ba+0x4a>
    c83e:  a02d                 j c868 <FUN_0000c7ba+0xae>
    c840:  041007b7           lui a5,0x4100
    c844:  0007c783           lbu a5,0(a5) # 4100000 <gpio_get_boot_device+0x40f1c6a>
    c848:  0ff7f713           andi a4,a5,255
    c84c:  fd843783           ld a5,-40(s0)
    c850:  00e78023           sb a4,0(a5)
    c854:  fd843783           ld a5,-40(s0)
    c858:  0785                 addi a5,a5,1
    c85a:  fcf43c23           sd a5,-40(s0)
    c85e:  fec42783           lw a5,-20(s0)
    c862:  2785                 addiw a5,a5,1
    c864:  fef42623           sw a5,-20(s0)
    c868:  fe842783           lw a5,-24(s0)
    c86c:  fff7871b           addiw a4,a5,-1
    c870:  fee42423           sw a4,-24(s0)
    c874:  f7f1                 bnez a5,c840 <FUN_0000c7ba+0x86>
    c876:  fec42783           lw a5,-20(s0)
    c87a:  853e                 mv a0,a5
    c87c:  70e2                 ld ra,56(sp)
    c87e:  7442                 ld s0,48(sp)
    c880:  6121                 addi sp,sp,64
    c882:  8082                 ret

000000000000c884 <FUN_0000c884>:
    c884:  715d                 addi sp,sp,-80
    c886:  e486                 sd ra,72(sp)
    c888:  e0a2                 sd s0,64(sp)
    c88a:  0880                 addi s0,sp,80
    c88c:  faa43c23           sd a0,-72(s0)
    c890:  fe043423           sd zero,-24(s0)
    c894:  fe043023           sd zero,-32(s0)
    c898:  fc042e23           sw zero,-36(s0)
    c89c:  fb843783           ld a5,-72(s0)
    c8a0:  67bc                 ld a5,72(a5)
    c8a2:  fef43423           sd a5,-24(s0)
    c8a6:  fe843783           ld a5,-24(s0)
    c8aa:  6b9c                 ld a5,16(a5)
    c8ac:  fef43023           sd a5,-32(s0)
    c8b0:  fe843783           ld a5,-24(s0)
    c8b4:  0087c783           lbu a5,8(a5)
    c8b8:  853e                 mv a0,a5
    c8ba:  813fe0ef           jal ra,b0cc <FUN_0000b0cc>
    c8be:  041007b7           lui a5,0x4100
    c8c2:  08278793           addi a5,a5,130 # 4100082 <gpio_get_boot_device+0x40f1cec
    c8c6:  0007d783           lhu a5,0(a5)
    c8ca:  17c2                 slli a5,a5,0x30
    c8cc:  93c1                 srli a5,a5,0x30
    c8ce:  fcf42c23           sw a5,-40(s0)
    c8d2:  fd842783           lw a5,-40(s0)
    c8d6:  8b91                 andi a5,a5,4
    c8d8:  2781                 sext.w a5,a5
    c8da:  cf89                 beqz a5,c8f4 <FUN_0000c884+0x70>
    c8dc:  041007b7           lui a5,0x4100
    c8e0:  08278793           addi a5,a5,130 # 4100082 <gpio_get_boot_device+0x40f1cec
    c8e4:  00079023           sh zero,0(a5)
    c8e8:  fb843783           ld a5,-72(s0)
    c8ec:  67bc                 ld a5,72(a5)
    c8ee:  0407a423           sw zero,72(a5)
    c8f2:  a4c1                 j cbb2 <FUN_0000c884+0x32e>
    c8f4:  fd842783           lw a5,-40(s0)
    c8f8:  8bc1                 andi a5,a5,16
    c8fa:  2781                 sext.w a5,a5
    c8fc:  cf9d                 beqz a5,c93a <FUN_0000c884+0xb6>
    c8fe:  041007b7           lui a5,0x4100
    c902:  08278793           addi a5,a5,130 # 4100082 <gpio_get_boot_device+0x40f1cec
    c906:  0007d783           lhu a5,0(a5)
    c90a:  17c2                 slli a5,a5,0x30
    c90c:  93c1                 srli a5,a5,0x30
    c90e:  fcf42e23           sw a5,-36(s0)
    c912:  fdc42783           lw a5,-36(s0)
    c916:  9bbd                 andi a5,a5,-17
    c918:  fcf42e23           sw a5,-36(s0)
    c91c:  041007b7           lui a5,0x4100
    c920:  08278793           addi a5,a5,130 # 4100082 <gpio_get_boot_device+0x40f1cec
    c924:  fdc42703           lw a4,-36(s0)
    c928:  1742                 slli a4,a4,0x30
    c92a:  9341                 srli a4,a4,0x30
    c92c:  00e79023           sh a4,0(a5)
    c930:  fb843783           ld a5,-72(s0)
    c934:  67bc                 ld a5,72(a5)
    c936:  0407a423           sw zero,72(a5)
    c93a:  fb843783           ld a5,-72(s0)
    c93e:  67bc                 ld a5,72(a5)
    c940:  47bc                 lw a5,72(a5)
    c942:  86be                 mv a3,a5
    c944:  4711                 li a4,4
    c946:  24d76f63           bltu a4,a3,cba4 <FUN_0000c884+0x320>
    c94a:  00279713           slli a4,a5,0x2
    c94e:  67b9                 lui a5,0xe
    c950:  56878793           addi a5,a5,1384 # e568 <gpio_get_boot_device+0x1d2>
    c954:  97ba                 add a5,a5,a4
    c956:  439c                 lw a5,0(a5)
    c958:  8782                 jr a5
    c95a:  fd842783           lw a5,-40(s0)
    c95e:  8b85                 andi a5,a5,1
    c960:  2781                 sext.w a5,a5
    c962:  24078363           beqz a5,cba8 <FUN_0000c884+0x324>
    c966:  fc040793           addi a5,s0,-64
    c96a:  853e                 mv a0,a5
    c96c:  e4fff0ef           jal ra,c7ba <FUN_0000c7ba>
    c970:  87aa                 mv a5,a0
    c972:  fcf42a23           sw a5,-44(s0)
    c976:  fd442783           lw a5,-44(s0)
    c97a:  0007871b           sext.w a4,a5
    c97e:  47a1                 li a5,8
    c980:  00f70b63           beq a4,a5,c996 <FUN_0000c884+0x112>
    c984:  041007b7           lui a5,0x4100
    c988:  08278793           addi a5,a5,130 # 4100082 <gpio_get_boot_device+0x40f1cec
    c98c:  06000713           li a4,96
    c990:  00e79023           sh a4,0(a5)
    c994:  ac39                 j cbb2 <FUN_0000c884+0x32e>
    c996:  fb843783           ld a5,-72(s0)
    c99a:  67bc                 ld a5,72(a5)
    c99c:  05678793           addi a5,a5,86
    c9a0:  fc040713           addi a4,s0,-64
    c9a4:  4621                 li a2,8
    c9a6:  85ba                 mv a1,a4
    c9a8:  853e                 mv a0,a5
    c9aa:  ce0fd0ef           jal ra,9e8a <memcpy>
    c9ae:  fb843783           ld a5,-72(s0)
    c9b2:  67bc                 ld a5,72(a5)
    c9b4:  4705                 li a4,1
    c9b6:  04e78aa3           sb a4,85(a5)
    c9ba:  fc144783           lbu a5,-63(s0)
    c9be:  2781                 sext.w a5,a5
    c9c0:  86be                 mv a3,a5
    c9c2:  4725                 li a4,9
    c9c4:  00e68b63           beq a3,a4,c9da <FUN_0000c884+0x156>
    c9c8:  86be                 mv a3,a5
    c9ca:  472d                 li a4,11
    c9cc:  02e68463           beq a3,a4,c9f4 <FUN_0000c884+0x170>
    c9d0:  873e                 mv a4,a5
    c9d2:  4795                 li a5,5
    c9d4:  02f70763           beq a4,a5,ca02 <FUN_0000c884+0x17e>
    c9d8:  a0b5                 j ca44 <FUN_0000c884+0x1c0>
    c9da:  fc044783           lbu a5,-64(s0)
    c9de:  efa5                 bnez a5,ca56 <FUN_0000c884+0x1d2>
    c9e0:  0001                 nop
    c9e2:  041007b7           lui a5,0x4100
    c9e6:  08278793           addi a5,a5,130 # 4100082 <gpio_get_boot_device+0x40f1cec
    c9ea:  04800713           li a4,72
    c9ee:  00e79023           sh a4,0(a5)
    c9f2:  a2c1                 j cbb2 <FUN_0000c884+0x32e>
    c9f4:  fc044783           lbu a5,-64(s0)
    c9f8:  873e                 mv a4,a5
    c9fa:  4785                 li a5,1
    c9fc:  04f71f63           bne a4,a5,ca5a <FUN_0000c884+0x1d6>
    ca00:  b7cd                 j c9e2 <FUN_0000c884+0x15e>
    ca02:  fc044783           lbu a5,-64(s0)
    ca06:  efa1                 bnez a5,ca5e <FUN_0000c884+0x1da>
    ca08:  fc245783           lhu a5,-62(s0)
    ca0c:  2781                 sext.w a5,a5
    ca0e:  07f7f793           andi a5,a5,127
    ca12:  fcf42823           sw a5,-48(s0)
    ca16:  fb843783           ld a5,-72(s0)
    ca1a:  67bc                 ld a5,72(a5)
    ca1c:  fd042703           lw a4,-48(s0)
    ca20:  0ff77713           andi a4,a4,255
    ca24:  04e78a23           sb a4,84(a5)
    ca28:  041007b7           lui a5,0x4100
    ca2c:  08278793           addi a5,a5,130 # 4100082 <gpio_get_boot_device+0x40f1cec
    ca30:  04a00713           li a4,74
    ca34:  00e79023           sh a4,0(a5)
    ca38:  fb843783           ld a5,-72(s0)
    ca3c:  67bc                 ld a5,72(a5)
    ca3e:  470d                 li a4,3
    ca40:  c7b8                 sw a4,72(a5)
    ca42:  aa85                 j cbb2 <FUN_0000c884+0x32e>
    ca44:  041007b7           lui a5,0x4100
    ca48:  08278793           addi a5,a5,130 # 4100082 <gpio_get_boot_device+0x40f1cec
    ca4c:  04000713           li a4,64
    ca50:  00e79023           sh a4,0(a5)
    ca54:  a031                 j ca60 <FUN_0000c884+0x1dc>
    ca56:  0001                 nop
    ca58:  a021                 j ca60 <FUN_0000c884+0x1dc>
    ca5a:  0001                 nop
    ca5c:  a011                 j ca60 <FUN_0000c884+0x1dc>
    ca5e:  0001                 nop
    ca60:  fc044783           lbu a5,-64(s0)
    ca64:  0187979b           slliw a5,a5,0x18
    ca68:  4187d79b           sraiw a5,a5,0x18
    ca6c:  0007d863           bgez a5,ca7c <FUN_0000c884+0x1f8>
    ca70:  fb843783           ld a5,-72(s0)
    ca74:  67bc                 ld a5,72(a5)
    ca76:  4705                 li a4,1
    ca78:  c7b8                 sw a4,72(a5)
    ca7a:  a031                 j ca86 <FUN_0000c884+0x202>
    ca7c:  fb843783           ld a5,-72(s0)
    ca80:  67bc                 ld a5,72(a5)
    ca82:  4709                 li a4,2
    ca84:  c7b8                 sw a4,72(a5)
    ca86:  fc040793           addi a5,s0,-64
    ca8a:  85be                 mv a1,a5
    ca8c:  fb843503           ld a0,-72(s0)
    ca90:  416000ef           jal ra,cea6 <FUN_0000cea6>
    ca94:  87aa                 mv a5,a0
    ca96:  fcf42623           sw a5,-52(s0)
    ca9a:  fcc42783           lw a5,-52(s0)
    ca9e:  2781                 sext.w a5,a5
    caa0:  0207d863           bgez a5,cad0 <FUN_0000c884+0x24c>
    caa4:  041007b7           lui a5,0x4100
    caa8:  08278793           addi a5,a5,130 # 4100082 <gpio_get_boot_device+0x40f1cec
    caac:  06000713           li a4,96
    cab0:  00e79023           sh a4,0(a5)
    cab4:  041007b7           lui a5,0x4100
    cab8:  08278793           addi a5,a5,130 # 4100082 <gpio_get_boot_device+0x40f1cec
    cabc:  04800713           li a4,72
    cac0:  00e79023           sh a4,0(a5)
    cac4:  fb843783           ld a5,-72(s0)
    cac8:  67bc                 ld a5,72(a5)
    caca:  0407a423           sw zero,72(a5)
    cace:  a8e9                 j cba8 <FUN_0000c884+0x324>
    cad0:  fb843783           ld a5,-72(s0)
    cad4:  67bc                 ld a5,72(a5)
    cad6:  0557c783           lbu a5,85(a5)
    cada:  c7f9                 beqz a5,cba8 <FUN_0000c884+0x324>
    cadc:  fb843783           ld a5,-72(s0)
    cae0:  67bc                 ld a5,72(a5)
    cae2:  04078aa3           sb zero,85(a5)
    cae6:  a0c9                 j cba8 <FUN_0000c884+0x324>
    cae8:  fd842783           lw a5,-40(s0)
    caec:  8b89                 andi a5,a5,2
    caee:  2781                 sext.w a5,a5
    caf0:  efd5                 bnez a5,cbac <FUN_0000c884+0x328>
    caf2:  fe043783           ld a5,-32(s0)
    caf6:  cbdd                 beqz a5,cbac <FUN_0000c884+0x328>
    caf8:  fe043603           ld a2,-32(s0)
    cafc:  fe843583           ld a1,-24(s0)
    cb00:  fb843503           ld a0,-72(s0)
    cb04:  b14ff0ef           jal ra,be18 <FUN_0000be18>
    cb08:  a055                 j cbac <FUN_0000c884+0x328>
    cb0a:  fd842783           lw a5,-40(s0)
    cb0e:  8b85                 andi a5,a5,1
    cb10:  2781                 sext.w a5,a5
    cb12:  cfd9                 beqz a5,cbb0 <FUN_0000c884+0x32c>
    cb14:  fe043783           ld a5,-32(s0)
    cb18:  cfc1                 beqz a5,cbb0 <FUN_0000c884+0x32c>
    cb1a:  fe043603           ld a2,-32(s0)
    cb1e:  fe843583           ld a1,-24(s0)
    cb22:  fb843503           ld a0,-72(s0)
    cb26:  e1aff0ef           jal ra,c140 <FUN_0000c140>
    cb2a:  a059                 j cbb0 <FUN_0000c884+0x32c>
    cb2c:  fb843783           ld a5,-72(s0)
    cb30:  67bc                 ld a5,72(a5)
    cb32:  0577c783           lbu a5,87(a5)
    cb36:  2781                 sext.w a5,a5
    cb38:  873e                 mv a4,a5
    cb3a:  4795                 li a5,5
    cb3c:  04f71763           bne a4,a5,cb8a <FUN_0000c884+0x306>
    cb40:  041007b7           lui a5,0x4100
    cb44:  08278793           addi a5,a5,130 # 4100082 <gpio_get_boot_device+0x40f1cec
    cb48:  0c000713           li a4,192
    cb4c:  00e79023           sh a4,0(a5)
    cb50:  fc042423           sw zero,-56(s0)
    cb54:  d9cfe0ef           jal ra,b0f0 <FUN_0000b0f0>
    cb58:  87aa                 mv a5,a0
    cb5a:  fcf42423           sw a5,-56(s0)
    cb5e:  4501                 li a0,0
    cb60:  d6cfe0ef           jal ra,b0cc <FUN_0000b0cc>
    cb64:  fb843783           ld a5,-72(s0)
    cb68:  67b8                 ld a4,72(a5)
    cb6a:  041007b7           lui a5,0x4100
    cb6e:  09878793           addi a5,a5,152 # 4100098 <gpio_get_boot_device+0x40f1d02
    cb72:  05474703           lbu a4,84(a4) # 2054 <FUN_00001f22+0x132>
    cb76:  00e78023           sb a4,0(a5)
    cb7a:  fc842783           lw a5,-56(s0)
    cb7e:  0ff7f793           andi a5,a5,255
    cb82:  853e                 mv a0,a5
    cb84:  d48fe0ef           jal ra,b0cc <FUN_0000b0cc>
    cb88:  a011                 j cb8c <FUN_0000c884+0x308>
    cb8a:  0001                 nop
    cb8c:  fb843783           ld a5,-72(s0)
    cb90:  67bc                 ld a5,72(a5)
    cb92:  0407a423           sw zero,72(a5)
    cb96:  a831                 j cbb2 <FUN_0000c884+0x32e>
    cb98:  fb843783           ld a5,-72(s0)
    cb9c:  67bc                 ld a5,72(a5)
    cb9e:  0407a423           sw zero,72(a5)
    cba2:  a801                 j cbb2 <FUN_0000c884+0x32e>
    cba4:  0001                 nop
    cba6:  a031                 j cbb2 <FUN_0000c884+0x32e>
    cba8:  0001                 nop
    cbaa:  a021                 j cbb2 <FUN_0000c884+0x32e>
    cbac:  0001                 nop
    cbae:  a011                 j cbb2 <FUN_0000c884+0x32e>
    cbb0:  0001                 nop
    cbb2:  60a6                 ld ra,72(sp)
    cbb4:  6406                 ld s0,64(sp)
    cbb6:  6161                 addi sp,sp,80
    cbb8:  8082                 ret

000000000000cbba <FUN_0000cbba>:
    cbba:  715d                 addi sp,sp,-80
    cbbc:  e486                 sd ra,72(sp)
    cbbe:  e0a2                 sd s0,64(sp)
    cbc0:  0880                 addi s0,sp,80
    cbc2:  fca43423           sd a0,-56(s0)
    cbc6:  fcb43023           sd a1,-64(s0)
    cbca:  87b2                 mv a5,a2
    cbcc:  8736                 mv a4,a3
    cbce:  faf40fa3           sb a5,-65(s0)
    cbd2:  87ba                 mv a5,a4
    cbd4:  faf42c23           sw a5,-72(s0)
    cbd8:  fc043783           ld a5,-64(s0)
    cbdc:  fef43023           sd a5,-32(s0)
    cbe0:  fb842783           lw a5,-72(s0)
    cbe4:  2781                 sext.w a5,a5
    cbe6:  c399                 beqz a5,cbec <FUN_0000cbba+0x32>
    cbe8:  57fd                 li a5,-1
    cbea:  a0c5                 j ccca <FUN_0000cbba+0x110>
    cbec:  c82fb0ef           jal ra,806e <brom_config_bit_1>
    cbf0:  87aa                 mv a5,a0
    cbf2:  c799                 beqz a5,cc00 <FUN_0000cbba+0x46>
    cbf4:  fc843783           ld a5,-56(s0)
    cbf8:  63bc                 ld a5,64(a5)
    cbfa:  fef43423           sd a5,-24(s0)
    cbfe:  a031                 j cc0a <FUN_0000cbba+0x50>
    cc00:  fc843783           ld a5,-56(s0)
    cc04:  779c                 ld a5,40(a5)
    cc06:  fef43423           sd a5,-24(s0)
    cc0a:  fc042e23           sw zero,-36(s0)
    cc0e:  fc843783           ld a5,-56(s0)
    cc12:  679c                 ld a5,8(a5)
    cc14:  4625                 li a2,9
    cc16:  85be                 mv a1,a5
    cc18:  fc043503           ld a0,-64(s0)
    cc1c:  a6efd0ef           jal ra,9e8a <memcpy>
    cc20:  fc043783           ld a5,-64(s0)
    cc24:  07a5                 addi a5,a5,9
    cc26:  fcf43023           sd a5,-64(s0)
    cc2a:  fc843783           ld a5,-56(s0)
    cc2e:  6b9c                 ld a5,16(a5)
    cc30:  4625                 li a2,9
    cc32:  85be                 mv a1,a5
    cc34:  fc043503           ld a0,-64(s0)
    cc38:  a52fd0ef           jal ra,9e8a <memcpy>
    cc3c:  fc043783           ld a5,-64(s0)
    cc40:  07a5                 addi a5,a5,9
    cc42:  fcf43023           sd a5,-64(s0)
    cc46:  fe843783           ld a5,-24(s0)
    cc4a:  639c                 ld a5,0(a5)
    cc4c:  461d                 li a2,7
    cc4e:  85be                 mv a1,a5
    cc50:  fc043503           ld a0,-64(s0)
    cc54:  a36fd0ef           jal ra,9e8a <memcpy>
    cc58:  fc043783           ld a5,-64(s0)
    cc5c:  079d                 addi a5,a5,7
    cc5e:  fcf43023           sd a5,-64(s0)
    cc62:  fe843783           ld a5,-24(s0)
    cc66:  07a1                 addi a5,a5,8
    cc68:  639c                 ld a5,0(a5)
    cc6a:  461d                 li a2,7
    cc6c:  85be                 mv a1,a5
    cc6e:  fc043503           ld a0,-64(s0)
    cc72:  a18fd0ef           jal ra,9e8a <memcpy>
    cc76:  fc043783           ld a5,-64(s0)
    cc7a:  079d                 addi a5,a5,7
    cc7c:  fcf43023           sd a5,-64(s0)
    cc80:  02000793           li a5,32
    cc84:  fcf42e23           sw a5,-36(s0)
    cc88:  fe043783           ld a5,-32(s0)
    cc8c:  4725                 li a4,9
    cc8e:  00e78023           sb a4,0(a5)
    cc92:  fe043783           ld a5,-32(s0)
    cc96:  4709                 li a4,2
    cc98:  00e780a3           sb a4,1(a5)
    cc9c:  fdc42783           lw a5,-36(s0)
    cca0:  03079713           slli a4,a5,0x30
    cca4:  9341                 srli a4,a4,0x30
    cca6:  fe043783           ld a5,-32(s0)
    ccaa:  00e79123           sh a4,2(a5)
    ccae:  fe043783           ld a5,-32(s0)
    ccb2:  0077c783           lbu a5,7(a5)
    ccb6:  f807e793           ori a5,a5,-128
    ccba:  0ff7f713           andi a4,a5,255
    ccbe:  fe043783           ld a5,-32(s0)
    ccc2:  00e783a3           sb a4,7(a5)
    ccc6:  fdc42783           lw a5,-36(s0)
    ccca:  853e                 mv a0,a5
    cccc:  60a6                 ld ra,72(sp)
    ccce:  6406                 ld s0,64(sp)
    ccd0:  6161                 addi sp,sp,80
    ccd2:  8082                 ret

000000000000ccd4 <FUN_0000ccd4>:
    ccd4:  7139                 addi sp,sp,-64
    ccd6:  fc06                 sd ra,56(sp)
    ccd8:  f822                 sd s0,48(sp)
    ccda:  0080                 addi s0,sp,64
    ccdc:  fca43423           sd a0,-56(s0)
    cce0:  87ae                 mv a5,a1
    cce2:  fcf42223           sw a5,-60(s0)
    cce6:  fe043023           sd zero,-32(s0)
    ccea:  fc043c23           sd zero,-40(s0)
    ccee:  fc040ba3           sb zero,-41(s0)
    ccf2:  fc442783           lw a5,-60(s0)
    ccf6:  2781                 sext.w a5,a5
    ccf8:  1a078063           beqz a5,ce98 <FUN_0000ccd4+0x1c4>
    ccfc:  fc843783           ld a5,-56(s0)
    cd00:  67b4                 ld a3,72(a5)
    cd02:  fc442703           lw a4,-60(s0)
    cd06:  87ba                 mv a5,a4
    cd08:  0786                 slli a5,a5,0x1
    cd0a:  97ba                 add a5,a5,a4
    cd0c:  078e                 slli a5,a5,0x3
    cd0e:  97b6                 add a5,a5,a3
    cd10:  fcf43c23           sd a5,-40(s0)
    cd14:  fd843783           ld a5,-40(s0)
    cd18:  6b9c                 ld a5,16(a5)
    cd1a:  fef43023           sd a5,-32(s0)
    cd1e:  fd843783           ld a5,-40(s0)
    cd22:  0097c783           lbu a5,9(a5)
    cd26:  f807f793           andi a5,a5,-128
    cd2a:  fcf40ba3           sb a5,-41(s0)
    cd2e:  fd843783           ld a5,-40(s0)
    cd32:  0097c783           lbu a5,9(a5)
    cd36:  2781                 sext.w a5,a5
    cd38:  07f7f793           andi a5,a5,127
    cd3c:  fcf42823           sw a5,-48(s0)
    cd40:  fe043783           ld a5,-32(s0)
    cd44:  0207c783           lbu a5,32(a5)
    cd48:  0187979b           slliw a5,a5,0x18
    cd4c:  4187d79b           sraiw a5,a5,0x18
    cd50:  873e                 mv a4,a5
    cd52:  4785                 li a5,1
    cd54:  14f71463           bne a4,a5,ce9c <FUN_0000ccd4+0x1c8>
    cd58:  fd744783           lbu a5,-41(s0)
    cd5c:  0ff7f793           andi a5,a5,255
    cd60:  cbb5                 beqz a5,cdd4 <FUN_0000ccd4+0x100>
    cd62:  fd843783           ld a5,-40(s0)
    cd66:  0087c783           lbu a5,8(a5)
    cd6a:  853e                 mv a0,a5
    cd6c:  b60fe0ef           jal ra,b0cc <FUN_0000b0cc>
    cd70:  041007b7           lui a5,0x4100
    cd74:  08278793           addi a5,a5,130 # 4100082 <gpio_get_boot_device+0x40f1cec
    cd78:  0007d783           lhu a5,0(a5)
    cd7c:  17c2                 slli a5,a5,0x30
    cd7e:  93c1                 srli a5,a5,0x30
    cd80:  fef42623           sw a5,-20(s0)
    cd84:  fec42783           lw a5,-20(s0)
    cd88:  0207f793           andi a5,a5,32
    cd8c:  2781                 sext.w a5,a5
    cd8e:  c395                 beqz a5,cdb2 <FUN_0000ccd4+0xde>
    cd90:  041007b7           lui a5,0x4100
    cd94:  04278793           addi a5,a5,66 # 4100042 <gpio_get_boot_device+0x40f1cac>
    cd98:  fd042703           lw a4,-48(s0)
    cd9c:  1742                 slli a4,a4,0x30
    cd9e:  9341                 srli a4,a4,0x30
    cda0:  00e79023           sh a4,0(a5)
    cda4:  041007b7           lui a5,0x4100
    cda8:  08278793           addi a5,a5,130 # 4100082 <gpio_get_boot_device+0x40f1cec
    cdac:  00079023           sh zero,0(a5)
    cdb0:  a0fd                 j ce9e <FUN_0000ccd4+0x1ca>
    cdb2:  fec42783           lw a5,-20(s0)
    cdb6:  8b85                 andi a5,a5,1
    cdb8:  2781                 sext.w a5,a5
    cdba:  e3f5                 bnez a5,ce9e <FUN_0000ccd4+0x1ca>
    cdbc:  fe043783           ld a5,-32(s0)
    cdc0:  cff9                 beqz a5,ce9e <FUN_0000ccd4+0x1ca>
    cdc2:  fe043603           ld a2,-32(s0)
    cdc6:  fd843583           ld a1,-40(s0)
    cdca:  fc843503           ld a0,-56(s0)
    cdce:  84aff0ef           jal ra,be18 <FUN_0000be18>
    cdd2:  a0f1                 j ce9e <FUN_0000ccd4+0x1ca>
    cdd4:  041007b7           lui a5,0x4100
    cdd8:  04278793           addi a5,a5,66 # 4100042 <gpio_get_boot_device+0x40f1cac>
    cddc:  fd042703           lw a4,-48(s0)
    cde0:  0ff77713           andi a4,a4,255
    cde4:  00e78023           sb a4,0(a5)
    cde8:  041007b7           lui a5,0x4100
    cdec:  08678793           addi a5,a5,134 # 4100086 <gpio_get_boot_device+0x40f1cf0
    cdf0:  0007d783           lhu a5,0(a5)
    cdf4:  17c2                 slli a5,a5,0x30
    cdf6:  93c1                 srli a5,a5,0x30
    cdf8:  fef42623           sw a5,-20(s0)
    cdfc:  fec42783           lw a5,-20(s0)
    ce00:  0407f793           andi a5,a5,64
    ce04:  2781                 sext.w a5,a5
    ce06:  c395                 beqz a5,ce2a <FUN_0000ccd4+0x156>
    ce08:  041007b7           lui a5,0x4100
    ce0c:  04278793           addi a5,a5,66 # 4100042 <gpio_get_boot_device+0x40f1cac>
    ce10:  fd042703           lw a4,-48(s0)
    ce14:  1742                 slli a4,a4,0x30
    ce16:  9341                 srli a4,a4,0x30
    ce18:  00e79023           sh a4,0(a5)
    ce1c:  041007b7           lui a5,0x4100
    ce20:  08678793           addi a5,a5,134 # 4100086 <gpio_get_boot_device+0x40f1cf0
    ce24:  00079023           sh zero,0(a5)
    ce28:  a89d                 j ce9e <FUN_0000ccd4+0x1ca>
    ce2a:  0001                 nop
    ce2c:  fec42783           lw a5,-20(s0)
    ce30:  8b85                 andi a5,a5,1
    ce32:  2781                 sext.w a5,a5
    ce34:  c7ad                 beqz a5,ce9e <FUN_0000ccd4+0x1ca>
    ce36:  fe043783           ld a5,-32(s0)
    ce3a:  c3b5                 beqz a5,ce9e <FUN_0000ccd4+0x1ca>
    ce3c:  fe043603           ld a2,-32(s0)
    ce40:  fd843583           ld a1,-40(s0)
    ce44:  fc843503           ld a0,-56(s0)
    ce48:  af8ff0ef           jal ra,c140 <FUN_0000c140>
    ce4c:  fe043783           ld a5,-32(s0)
    ce50:  0207c783           lbu a5,32(a5)
    ce54:  0187979b           slliw a5,a5,0x18
    ce58:  4187d79b           sraiw a5,a5,0x18
    ce5c:  c3a9                 beqz a5,ce9e <FUN_0000ccd4+0x1ca>
    ce5e:  041007b7           lui a5,0x4100
    ce62:  04278793           addi a5,a5,66 # 4100042 <gpio_get_boot_device+0x40f1cac>
    ce66:  fd042703           lw a4,-48(s0)
    ce6a:  0ff77713           andi a4,a4,255
    ce6e:  00e78023           sb a4,0(a5)
    ce72:  041007b7           lui a5,0x4100
    ce76:  08678793           addi a5,a5,134 # 4100086 <gpio_get_boot_device+0x40f1cf0
    ce7a:  0007d783           lhu a5,0(a5)
    ce7e:  17c2                 slli a5,a5,0x30
    ce80:  93c1                 srli a5,a5,0x30
    ce82:  fef42623           sw a5,-20(s0)
    ce86:  fec42783           lw a5,-20(s0)
    ce8a:  8b85                 andi a5,a5,1
    ce8c:  2781                 sext.w a5,a5
    ce8e:  cb81                 beqz a5,ce9e <FUN_0000ccd4+0x1ca>
    ce90:  fe043783           ld a5,-32(s0)
    ce94:  c789                 beqz a5,ce9e <FUN_0000ccd4+0x1ca>
    ce96:  bf59                 j ce2c <FUN_0000ccd4+0x158>
    ce98:  0001                 nop
    ce9a:  a011                 j ce9e <FUN_0000ccd4+0x1ca>
    ce9c:  0001                 nop
    ce9e:  70e2                 ld ra,56(sp)
    cea0:  7442                 ld s0,48(sp)
    cea2:  6121                 addi sp,sp,64
    cea4:  8082                 ret

000000000000cea6 <FUN_0000cea6>:
    cea6:  715d                 addi sp,sp,-80
    cea8:  e486                 sd ra,72(sp)
    ceaa:  e0a2                 sd s0,64(sp)
    ceac:  0880                 addi s0,sp,80
    ceae:  faa43c23           sd a0,-72(s0)
    ceb2:  fab43823           sd a1,-80(s0)
    ceb6:  fe043023           sd zero,-32(s0)
    ceba:  fc043c23           sd zero,-40(s0)
    cebe:  fb043783           ld a5,-80(s0)
    cec2:  0027d783           lhu a5,2(a5)
    cec6:  fcf41b23           sh a5,-42(s0)
    ceca:  fe042623           sw zero,-20(s0)
    cece:  fb843783           ld a5,-72(s0)
    ced2:  67bc                 ld a5,72(a5)
    ced4:  fcf43c23           sd a5,-40(s0)
    ced8:  fd843783           ld a5,-40(s0)
    cedc:  6b9c                 ld a5,16(a5)
    cede:  fef43023           sd a5,-32(s0)
    cee2:  fb043783           ld a5,-80(s0)
    cee6:  0017c783           lbu a5,1(a5)
    ceea:  0007871b           sext.w a4,a5
    ceee:  86ba                 mv a3,a4
    cef0:  4799                 li a5,6
    cef2:  00f68763           beq a3,a5,cf00 <FUN_0000cea6+0x5a>
    cef6:  0fe00793           li a5,254
    cefa:  14f70c63           beq a4,a5,d052 <FUN_0000cea6+0x1ac>
    cefe:  aa9d                 j d074 <FUN_0000cea6+0x1ce>
    cf00:  fb043783           ld a5,-80(s0)
    cf04:  0007c783           lbu a5,0(a5)
    cf08:  873e                 mv a4,a5
    cf0a:  08000793           li a5,128
    cf0e:  16f71063           bne a4,a5,d06e <FUN_0000cea6+0x1c8>
    cf12:  fd645783           lhu a5,-42(s0)
    cf16:  0087d79b           srliw a5,a5,0x8
    cf1a:  17c2                 slli a5,a5,0x30
    cf1c:  93c1                 srli a5,a5,0x30
    cf1e:  2781                 sext.w a5,a5
    cf20:  86be                 mv a3,a5
    cf22:  4709                 li a4,2
    cf24:  06e68463           beq a3,a4,cf8c <FUN_0000cea6+0xe6>
    cf28:  86be                 mv a3,a5
    cf2a:  470d                 li a4,3
    cf2c:  0ce68963           beq a3,a4,cffe <FUN_0000cea6+0x158>
    cf30:  873e                 mv a4,a5
    cf32:  4785                 li a5,1
    cf34:  12f71f63           bne a4,a5,d072 <FUN_0000cea6+0x1cc>
    cf38:  fb043783           ld a5,-80(s0)
    cf3c:  0067d783           lhu a5,6(a5)
    cf40:  0007871b           sext.w a4,a5
    cf44:  47c9                 li a5,18
    cf46:  00e7f663           bgeu a5,a4,cf52 <FUN_0000cea6+0xac>
    cf4a:  47c9                 li a5,18
    cf4c:  fef42623           sw a5,-20(s0)
    cf50:  a039                 j cf5e <FUN_0000cea6+0xb8>
    cf52:  fb043783           ld a5,-80(s0)
    cf56:  0067d783           lhu a5,6(a5)
    cf5a:  fef42623           sw a5,-20(s0)
    cf5e:  fe043783           ld a5,-32(s0)
    cf62:  6398                 ld a4,0(a5)
    cf64:  fb843783           ld a5,-72(s0)
    cf68:  639c                 ld a5,0(a5)
    cf6a:  fec42683           lw a3,-20(s0)
    cf6e:  8636                 mv a2,a3
    cf70:  85be                 mv a1,a5
    cf72:  853a                 mv a0,a4
    cf74:  f17fc0ef           jal ra,9e8a <memcpy>
    cf78:  fec42703           lw a4,-20(s0)
    cf7c:  fe043783           ld a5,-32(s0)
    cf80:  c798                 sw a4,8(a5)
    cf82:  fe043783           ld a5,-32(s0)
    cf86:  00078623           sb zero,12(a5)
    cf8a:  a0d9                 j d050 <FUN_0000cea6+0x1aa>
    cf8c:  fe043783           ld a5,-32(s0)
    cf90:  6398                 ld a4,0(a5)
    cf92:  fd645783           lhu a5,-42(s0)
    cf96:  0087d79b           srliw a5,a5,0x8
    cf9a:  17c2                 slli a5,a5,0x30
    cf9c:  93c1                 srli a5,a5,0x30
    cf9e:  0ff7f793           andi a5,a5,255
    cfa2:  fd645683           lhu a3,-42(s0)
    cfa6:  2681                 sext.w a3,a3
    cfa8:  0ff6f693           andi a3,a3,255
    cfac:  2681                 sext.w a3,a3
    cfae:  863e                 mv a2,a5
    cfb0:  85ba                 mv a1,a4
    cfb2:  fb843503           ld a0,-72(s0)
    cfb6:  c05ff0ef           jal ra,cbba <FUN_0000cbba>
    cfba:  87aa                 mv a5,a0
    cfbc:  fef42623           sw a5,-20(s0)
    cfc0:  fb043783           ld a5,-80(s0)
    cfc4:  0067d783           lhu a5,6(a5)
    cfc8:  0007871b           sext.w a4,a5
    cfcc:  fec42783           lw a5,-20(s0)
    cfd0:  2781                 sext.w a5,a5
    cfd2:  00f74863           blt a4,a5,cfe2 <FUN_0000cea6+0x13c>
    cfd6:  fec42703           lw a4,-20(s0)
    cfda:  fe043783           ld a5,-32(s0)
    cfde:  c798                 sw a4,8(a5)
    cfe0:  a811                 j cff4 <FUN_0000cea6+0x14e>
    cfe2:  fb043783           ld a5,-80(s0)
    cfe6:  0067d783           lhu a5,6(a5)
    cfea:  0007871b           sext.w a4,a5
    cfee:  fe043783           ld a5,-32(s0)
    cff2:  c798                 sw a4,8(a5)
    cff4:  fe043783           ld a5,-32(s0)
    cff8:  00078623           sb zero,12(a5)
    cffc:  a891                 j d050 <FUN_0000cea6+0x1aa>
    cffe:  fd645783           lhu a5,-42(s0)
    d002:  2781                 sext.w a5,a5
    d004:  0ff7f793           andi a5,a5,255
    d008:  fcf42823           sw a5,-48(s0)
    d00c:  fd042783           lw a5,-48(s0)
    d010:  2781                 sext.w a5,a5
    d012:  ef95                 bnez a5,d04e <FUN_0000cea6+0x1a8>
    d014:  fe043783           ld a5,-32(s0)
    d018:  639c                 ld a5,0(a5)
    d01a:  fcf43423           sd a5,-56(s0)
    d01e:  fc843783           ld a5,-56(s0)
    d022:  4711                 li a4,4
    d024:  00e78023           sb a4,0(a5)
    d028:  fc843783           ld a5,-56(s0)
    d02c:  0785                 addi a5,a5,1
    d02e:  470d                 li a4,3
    d030:  00e78023           sb a4,0(a5)
    d034:  fc843783           ld a5,-56(s0)
    d038:  0789                 addi a5,a5,2
    d03a:  4725                 li a4,9
    d03c:  00e78023           sb a4,0(a5)
    d040:  fc843783           ld a5,-56(s0)
    d044:  078d                 addi a5,a5,3
    d046:  4711                 li a4,4
    d048:  00e78023           sb a4,0(a5)
    d04c:  a011                 j d050 <FUN_0000cea6+0x1aa>
    d04e:  0001                 nop
    d050:  a00d                 j d072 <FUN_0000cea6+0x1cc>
    d052:  fe043783           ld a5,-32(s0)
    d056:  639c                 ld a5,0(a5)
    d058:  fcf43023           sd a5,-64(s0)
    d05c:  fe043783           ld a5,-32(s0)
    d060:  4705                 li a4,1
    d062:  c798                 sw a4,8(a5)
    d064:  fc043783           ld a5,-64(s0)
    d068:  00078023           sb zero,0(a5)
    d06c:  a021                 j d074 <FUN_0000cea6+0x1ce>
    d06e:  0001                 nop
    d070:  a011                 j d074 <FUN_0000cea6+0x1ce>
    d072:  0001                 nop
    d074:  4605                 li a2,1
    d076:  fe043583           ld a1,-32(s0)
    d07a:  fb843503           ld a0,-72(s0)
    d07e:  d8eff0ef           jal ra,c60c <FUN_0000c60c>
    d082:  4781                 li a5,0
    d084:  853e                 mv a0,a5
    d086:  60a6                 ld ra,72(sp)
    d088:  6406                 ld s0,64(sp)
    d08a:  6161                 addi sp,sp,80
    d08c:  8082                 ret

000000000000d08e <fel_irq_handler>:
    d08e:  7139                 addi sp,sp,-64
    d090:  fc06                 sd ra,56(sp)
    d092:  f822                 sd s0,48(sp)
    d094:  0080                 addi s0,sp,64
    d096:  fe042023           sw zero,-32(s0)
    d09a:  fe042623           sw zero,-20(s0)
    d09e:  fc042e23           sw zero,-36(s0)
    d0a2:  fc042c23           sw zero,-40(s0)
    d0a6:  fc042a23           sw zero,-44(s0)
    d0aa:  846fe0ef           jal ra,b0f0 <FUN_0000b0f0>
    d0ae:  87aa                 mv a5,a0
    d0b0:  fef42023           sw a5,-32(s0)
    d0b4:  000487b7           lui a5,0x48
    d0b8:  e187b783           ld a5,-488(a5) # 47e18 <gpio_get_boot_device+0x39a82>
    d0bc:  853e                 mv a0,a5
    d0be:  b2dfe0ef           jal ra,bbea <FUN_0000bbea>
    d0c2:  87aa                 mv a5,a0
    d0c4:  fcf42e23           sw a5,-36(s0)
    d0c8:  000487b7           lui a5,0x48
    d0cc:  e187b783           ld a5,-488(a5) # 47e18 <gpio_get_boot_device+0x39a82>
    d0d0:  853e                 mv a0,a5
    d0d2:  aa5fe0ef           jal ra,bb76 <FUN_0000bb76>
    d0d6:  87aa                 mv a5,a0
    d0d8:  fcf42c23           sw a5,-40(s0)
    d0dc:  000487b7           lui a5,0x48
    d0e0:  e187b783           ld a5,-488(a5) # 47e18 <gpio_get_boot_device+0x39a82>
    d0e4:  853e                 mv a0,a5
    d0e6:  acbfe0ef           jal ra,bbb0 <FUN_0000bbb0>
    d0ea:  87aa                 mv a5,a0
    d0ec:  fcf42a23           sw a5,-44(s0)
    d0f0:  fdc42783           lw a5,-36(s0)
    d0f4:  8b91                 andi a5,a5,4
    d0f6:  2781                 sext.w a5,a5
    d0f8:  c3f1                 beqz a5,d1bc <fel_irq_handler+0x12e>
    d0fa:  f75fa0ef           jal ra,806e <brom_config_bit_1>
    d0fe:  87aa                 mv a5,a0
    d100:  cb91                 beqz a5,d114 <fel_irq_handler+0x86>
    d102:  000487b7           lui a5,0x48
    d106:  e187b783           ld a5,-488(a5) # 47e18 <gpio_get_boot_device+0x39a82>
    d10a:  67bc                 ld a5,72(a5)
    d10c:  470d                 li a4,3
    d10e:  04e78623           sb a4,76(a5)
    d112:  a809                 j d124 <fel_irq_handler+0x96>
    d114:  000487b7           lui a5,0x48
    d118:  e187b783           ld a5,-488(a5) # 47e18 <gpio_get_boot_device+0x39a82>
    d11c:  67bc                 ld a5,72(a5)
    d11e:  4709                 li a4,2
    d120:  04e78623           sb a4,76(a5)
    d124:  000487b7           lui a5,0x48
    d128:  e187b783           ld a5,-488(a5) # 47e18 <gpio_get_boot_device+0x39a82>
    d12c:  67bc                 ld a5,72(a5)
    d12e:  0407a423           sw zero,72(a5)
    d132:  000487b7           lui a5,0x48
    d136:  e187b783           ld a5,-488(a5) # 47e18 <gpio_get_boot_device+0x39a82>
    d13a:  4591                 li a1,4
    d13c:  853e                 mv a0,a5
    d13e:  b77fe0ef           jal ra,bcb4 <FUN_0000bcb4>
    d142:  041007b7           lui a5,0x4100
    d146:  04278793           addi a5,a5,66 # 4100042 <gpio_get_boot_device+0x40f1cac>
    d14a:  fe042703           lw a4,-32(s0)
    d14e:  0ff77713           andi a4,a4,255
    d152:  00e78023           sb a4,0(a5)
    d156:  a13fe0ef           jal ra,bb68 <FUN_0000bb68>
    d15a:  041007b7           lui a5,0x4100
    d15e:  04878793           addi a5,a5,72 # 4100048 <gpio_get_boot_device+0x40f1cb2>
    d162:  0007c783           lbu a5,0(a5)
    d166:  0ff7f713           andi a4,a5,255
    d16a:  041007b7           lui a5,0x4100
    d16e:  04878793           addi a5,a5,72 # 4100048 <gpio_get_boot_device+0x40f1cb2>
    d172:  00176713           ori a4,a4,1
    d176:  0ff77713           andi a4,a4,255
    d17a:  00e78023           sb a4,0(a5)
    d17e:  000487b7           lui a5,0x48
    d182:  e187b783           ld a5,-488(a5) # 47e18 <gpio_get_boot_device+0x39a82>
    d186:  853e                 mv a0,a5
    d188:  dfeff0ef           jal ra,c786 <FUN_0000c786>
    d18c:  fc042823           sw zero,-48(s0)
    d190:  f61fd0ef           jal ra,b0f0 <FUN_0000b0f0>
    d194:  87aa                 mv a5,a0
    d196:  fcf42823           sw a5,-48(s0)
    d19a:  4501                 li a0,0
    d19c:  f31fd0ef           jal ra,b0cc <FUN_0000b0cc>
    d1a0:  041007b7           lui a5,0x4100
    d1a4:  09878793           addi a5,a5,152 # 4100098 <gpio_get_boot_device+0x40f1d02
    d1a8:  00078023           sb zero,0(a5)
    d1ac:  fd042783           lw a5,-48(s0)
    d1b0:  0ff7f793           andi a5,a5,255
    d1b4:  853e                 mv a0,a5
    d1b6:  f17fd0ef           jal ra,b0cc <FUN_0000b0cc>
    d1ba:  aafd                 j d3b8 <fel_irq_handler+0x32a>
    d1bc:  fdc42783           lw a5,-36(s0)
    d1c0:  8b89                 andi a5,a5,2
    d1c2:  2781                 sext.w a5,a5
    d1c4:  cb89                 beqz a5,d1d6 <fel_irq_handler+0x148>
    d1c6:  000487b7           lui a5,0x48
    d1ca:  e187b783           ld a5,-488(a5) # 47e18 <gpio_get_boot_device+0x39a82>
    d1ce:  4589                 li a1,2
    d1d0:  853e                 mv a0,a5
    d1d2:  ae3fe0ef           jal ra,bcb4 <FUN_0000bcb4>
    d1d6:  fdc42783           lw a5,-36(s0)
    d1da:  8b85                 andi a5,a5,1
    d1dc:  2781                 sext.w a5,a5
    d1de:  c385                 beqz a5,d1fe <fel_irq_handler+0x170>
    d1e0:  000487b7           lui a5,0x48
    d1e4:  e187b783           ld a5,-488(a5) # 47e18 <gpio_get_boot_device+0x39a82>
    d1e8:  4585                 li a1,1
    d1ea:  853e                 mv a0,a5
    d1ec:  ac9fe0ef           jal ra,bcb4 <FUN_0000bcb4>
    d1f0:  000487b7           lui a5,0x48
    d1f4:  e187b783           ld a5,-488(a5) # 47e18 <gpio_get_boot_device+0x39a82>
    d1f8:  67bc                 ld a5,72(a5)
    d1fa:  0407a423           sw zero,72(a5)
    d1fe:  fd842783           lw a5,-40(s0)
    d202:  8b85                 andi a5,a5,1
    d204:  2781                 sext.w a5,a5
    d206:  c385                 beqz a5,d226 <fel_irq_handler+0x198>
    d208:  000487b7           lui a5,0x48
    d20c:  e187b783           ld a5,-488(a5) # 47e18 <gpio_get_boot_device+0x39a82>
    d210:  4585                 li a1,1
    d212:  853e                 mv a0,a5
    d214:  a11fe0ef           jal ra,bc24 <FUN_0000bc24>
    d218:  000487b7           lui a5,0x48
    d21c:  e187b783           ld a5,-488(a5) # 47e18 <gpio_get_boot_device+0x39a82>
    d220:  853e                 mv a0,a5
    d222:  e62ff0ef           jal ra,c884 <FUN_0000c884>
    d226:  4785                 li a5,1
    d228:  fef42623           sw a5,-20(s0)
    d22c:  a04d                 j d2ce <fel_irq_handler+0x240>
    d22e:  fec42783           lw a5,-20(s0)
    d232:  4705                 li a4,1
    d234:  00f717bb           sllw a5,a4,a5
    d238:  2781                 sext.w a5,a5
    d23a:  fcf42623           sw a5,-52(s0)
    d23e:  fd842703           lw a4,-40(s0)
    d242:  fcc42783           lw a5,-52(s0)
    d246:  8ff9                 and a5,a5,a4
    d248:  2781                 sext.w a5,a5
    d24a:  cfad                 beqz a5,d2c4 <fel_irq_handler+0x236>
    d24c:  fe042423           sw zero,-24(s0)
    d250:  000487b7           lui a5,0x48
    d254:  e187b783           ld a5,-488(a5) # 47e18 <gpio_get_boot_device+0x39a82>
    d258:  fcc42703           lw a4,-52(s0)
    d25c:  0ff77713           andi a4,a4,255
    d260:  85ba                 mv a1,a4
    d262:  853e                 mv a0,a5
    d264:  9c1fe0ef           jal ra,bc24 <FUN_0000bc24>
    d268:  4785                 li a5,1
    d26a:  fef42423           sw a5,-24(s0)
    d26e:  a0a1                 j d2b6 <fel_irq_handler+0x228>
    d270:  000487b7           lui a5,0x48
    d274:  e187b783           ld a5,-488(a5) # 47e18 <gpio_get_boot_device+0x39a82>
    d278:  67b4                 ld a3,72(a5)
    d27a:  fe842703           lw a4,-24(s0)
    d27e:  87ba                 mv a5,a4
    d280:  0786                 slli a5,a5,0x1
    d282:  97ba                 add a5,a5,a4
    d284:  078e                 slli a5,a5,0x3
    d286:  97b6                 add a5,a5,a3
    d288:  0097c783           lbu a5,9(a5)
    d28c:  0187979b           slliw a5,a5,0x18
    d290:  4187d79b           sraiw a5,a5,0x18
    d294:  0007dc63           bgez a5,d2ac <fel_irq_handler+0x21e>
    d298:  000487b7           lui a5,0x48
    d29c:  e187b783           ld a5,-488(a5) # 47e18 <gpio_get_boot_device+0x39a82>
    d2a0:  fe842703           lw a4,-24(s0)
    d2a4:  85ba                 mv a1,a4
    d2a6:  853e                 mv a0,a5
    d2a8:  a2dff0ef           jal ra,ccd4 <FUN_0000ccd4>
    d2ac:  fe842783           lw a5,-24(s0)
    d2b0:  2785                 addiw a5,a5,1
    d2b2:  fef42423           sw a5,-24(s0)
    d2b6:  fe842783           lw a5,-24(s0)
    d2ba:  0007871b           sext.w a4,a5
    d2be:  4789                 li a5,2
    d2c0:  fae7d8e3           bge a5,a4,d270 <fel_irq_handler+0x1e2>
    d2c4:  fec42783           lw a5,-20(s0)
    d2c8:  2785                 addiw a5,a5,1
    d2ca:  fef42623           sw a5,-20(s0)
    d2ce:  fec42783           lw a5,-20(s0)
    d2d2:  0007871b           sext.w a4,a5
    d2d6:  4795                 li a5,5
    d2d8:  f4e7dbe3           bge a5,a4,d22e <fel_irq_handler+0x1a0>
    d2dc:  4785                 li a5,1
    d2de:  fef42623           sw a5,-20(s0)
    d2e2:  a04d                 j d384 <fel_irq_handler+0x2f6>
    d2e4:  fec42783           lw a5,-20(s0)
    d2e8:  4705                 li a4,1
    d2ea:  00f717bb           sllw a5,a4,a5
    d2ee:  2781                 sext.w a5,a5
    d2f0:  fcf42423           sw a5,-56(s0)
    d2f4:  fd442703           lw a4,-44(s0)
    d2f8:  fc842783           lw a5,-56(s0)
    d2fc:  8ff9                 and a5,a5,a4
    d2fe:  2781                 sext.w a5,a5
    d300:  cfad                 beqz a5,d37a <fel_irq_handler+0x2ec>
    d302:  fe042223           sw zero,-28(s0)
    d306:  000487b7           lui a5,0x48
    d30a:  e187b783           ld a5,-488(a5) # 47e18 <gpio_get_boot_device+0x39a82>
    d30e:  fc842703           lw a4,-56(s0)
    d312:  0ff77713           andi a4,a4,255
    d316:  85ba                 mv a1,a4
    d318:  853e                 mv a0,a5
    d31a:  953fe0ef           jal ra,bc6c <FUN_0000bc6c>
    d31e:  4785                 li a5,1
    d320:  fef42223           sw a5,-28(s0)
    d324:  a0a1                 j d36c <fel_irq_handler+0x2de>
    d326:  000487b7           lui a5,0x48
    d32a:  e187b783           ld a5,-488(a5) # 47e18 <gpio_get_boot_device+0x39a82>
    d32e:  67b4                 ld a3,72(a5)
    d330:  fe442703           lw a4,-28(s0)
    d334:  87ba                 mv a5,a4
    d336:  0786                 slli a5,a5,0x1
    d338:  97ba                 add a5,a5,a4
    d33a:  078e                 slli a5,a5,0x3
    d33c:  97b6                 add a5,a5,a3
    d33e:  0097c783           lbu a5,9(a5)
    d342:  0187979b           slliw a5,a5,0x18
    d346:  4187d79b           sraiw a5,a5,0x18
    d34a:  0007cc63           bltz a5,d362 <fel_irq_handler+0x2d4>
    d34e:  000487b7           lui a5,0x48
    d352:  e187b783           ld a5,-488(a5) # 47e18 <gpio_get_boot_device+0x39a82>
    d356:  fe442703           lw a4,-28(s0)
    d35a:  85ba                 mv a1,a4
    d35c:  853e                 mv a0,a5
    d35e:  977ff0ef           jal ra,ccd4 <FUN_0000ccd4>
    d362:  fe442783           lw a5,-28(s0)
    d366:  2785                 addiw a5,a5,1
    d368:  fef42223           sw a5,-28(s0)
    d36c:  fe442783           lw a5,-28(s0)
    d370:  0007871b           sext.w a4,a5
    d374:  4789                 li a5,2
    d376:  fae7d8e3           bge a5,a4,d326 <fel_irq_handler+0x298>
    d37a:  fec42783           lw a5,-20(s0)
    d37e:  2785                 addiw a5,a5,1
    d380:  fef42623           sw a5,-20(s0)
    d384:  fec42783           lw a5,-20(s0)
    d388:  0007871b           sext.w a4,a5
    d38c:  4795                 li a5,5
    d38e:  f4e7dbe3           bge a5,a4,d2e4 <fel_irq_handler+0x256>
    d392:  fd6fe0ef           jal ra,bb68 <FUN_0000bb68>
    d396:  041007b7           lui a5,0x4100
    d39a:  04278793           addi a5,a5,66 # 4100042 <gpio_get_boot_device+0x40f1cac>
    d39e:  fe042703           lw a4,-32(s0)
    d3a2:  0ff77713           andi a4,a4,255
    d3a6:  00e78023           sb a4,0(a5)
    d3aa:  000487b7           lui a5,0x48
    d3ae:  e187b783           ld a5,-488(a5) # 47e18 <gpio_get_boot_device+0x39a82>
    d3b2:  853e                 mv a0,a5
    d3b4:  949fe0ef           jal ra,bcfc <FUN_0000bcfc>
    d3b8:  70e2                 ld ra,56(sp)
    d3ba:  7442                 ld s0,48(sp)
    d3bc:  6121                 addi sp,sp,64
    d3be:  8082                 ret

000000000000d3c0 <FUN_0000d3c0>:
    d3c0:  1141                 addi sp,sp,-16
    d3c2:  e406                 sd ra,8(sp)
    d3c4:  e022                 sd s0,0(sp)
    d3c6:  0800                 addi s0,sp,16
    d3c8:  10000613           li a2,256
    d3cc:  0cc00593           li a1,204
    d3d0:  00045537           lui a0,0x45
    d3d4:  b17fc0ef           jal ra,9eea <memset>
    d3d8:  0001                 nop
    d3da:  60a2                 ld ra,8(sp)
    d3dc:  6402                 ld s0,0(sp)
    d3de:  0141                 addi sp,sp,16
    d3e0:  8082                 ret

000000000000d3e2 <FUN_0000d3e2>:
    d3e2:  7179                 addi sp,sp,-48
    d3e4:  f406                 sd ra,40(sp)
    d3e6:  f022                 sd s0,32(sp)
    d3e8:  1800                 addi s0,sp,48
    d3ea:  fca43c23           sd a0,-40(s0)
    d3ee:  fe042623           sw zero,-20(s0)
    d3f2:  030067b7           lui a5,0x3006
    d3f6:  21078793           addi a5,a5,528 # 3006210 <gpio_get_boot_device+0x2ff7e7a
    d3fa:  439c                 lw a5,0(a5)
    d3fc:  fef42623           sw a5,-20(s0)
    d400:  fd843783           ld a5,-40(s0)
    d404:  0807a023           sw zero,128(a5)
    d408:  fec42703           lw a4,-20(s0)
    d40c:  6785                 lui a5,0x1
    d40e:  80078793           addi a5,a5,-2048 # 800 <FUN_00000660+0x1a0>
    d412:  8ff9                 and a5,a5,a4
    d414:  2781                 sext.w a5,a5
    d416:  cb99                 beqz a5,d42c <FUN_0000d3e2+0x4a>
    d418:  4581                 li a1,0
    d41a:  4521                 li a0,8
    d41c:  e29fa0ef           jal ra,8244 <debug_state_save>
    d420:  fd843783           ld a5,-40(s0)
    d424:  4705                 li a4,1
    d426:  08e7a223           sw a4,132(a5)
    d42a:  a029                 j d434 <FUN_0000d3e2+0x52>
    d42c:  fd843783           ld a5,-40(s0)
    d430:  0807a223           sw zero,132(a5)
    d434:  fec42703           lw a4,-20(s0)
    d438:  6785                 lui a5,0x1
    d43a:  8ff9                 and a5,a5,a4
    d43c:  2781                 sext.w a5,a5
    d43e:  c785                 beqz a5,d466 <FUN_0000d3e2+0x84>
    d440:  4581                 li a1,0
    d442:  4529                 li a0,10
    d444:  e01fa0ef           jal ra,8244 <debug_state_save>
    d448:  fd843783           ld a5,-40(s0)
    d44c:  4705                 li a4,1
    d44e:  08e7aa23           sw a4,148(a5) # 1094 <FUN_00000f2c+0x168>
    d452:  000487b7           lui a5,0x48
    d456:  d1078793           addi a5,a5,-752 # 47d10 <gpio_get_boot_device+0x3997a>
    d45a:  10000593           li a1,256
    d45e:  853e                 mv a0,a5
    d460:  261000ef           jal ra,dec0 <FUN_0000dec0>
    d464:  a029                 j d46e <FUN_0000d3e2+0x8c>
    d466:  fd843783           ld a5,-40(s0)
    d46a:  0807aa23           sw zero,148(a5)
    d46e:  fd843783           ld a5,-40(s0)
    d472:  0807a823           sw zero,144(a5)
    d476:  fd843783           ld a5,-40(s0)
    d47a:  0807a423           sw zero,136(a5)
    d47e:  0001                 nop
    d480:  70a2                 ld ra,40(sp)
    d482:  7402                 ld s0,32(sp)
    d484:  6145                 addi sp,sp,48
    d486:  8082                 ret

000000000000d488 <fel_main>:
    d488:  d9010113           addi sp,sp,-624
    d48c:  26113423           sd ra,616(sp)
    d490:  26813023           sd s0,608(sp)
    d494:  1c80                 addi s0,sp,624
    d496:  737d                 lui t1,0xfffff
    d498:  911a                 add sp,sp,t1
    d49a:  65f000ef           jal ra,e2f8 <usb_init>
    d49e:  f23ff0ef           jal ra,d3c0 <FUN_0000d3c0>
    d4a2:  000487b7           lui a5,0x48
    d4a6:  f5840713           addi a4,s0,-168
    d4aa:  e0e7bc23           sd a4,-488(a5) # 47e18 <gpio_get_boot_device+0x39a82>
    d4ae:  f4040793           addi a5,s0,-192
    d4b2:  f4f43c23           sd a5,-168(s0)
    d4b6:  f3040793           addi a5,s0,-208
    d4ba:  f6f43023           sd a5,-160(s0)
    d4be:  f2040793           addi a5,s0,-224
    d4c2:  f6f43423           sd a5,-152(s0)
    d4c6:  f1840793           addi a5,s0,-232
    d4ca:  f6f43823           sd a5,-144(s0)
    d4ce:  f1040793           addi a5,s0,-240
    d4d2:  f6f43c23           sd a5,-136(s0)
    d4d6:  f0040793           addi a5,s0,-256
    d4da:  f8f43023           sd a5,-128(s0)
    d4de:  ef840793           addi a5,s0,-264
    d4e2:  f8f43423           sd a5,-120(s0)
    d4e6:  ef040793           addi a5,s0,-272
    d4ea:  f8f43823           sd a5,-112(s0)
    d4ee:  ee040793           addi a5,s0,-288
    d4f2:  f8f43c23           sd a5,-104(s0)
    d4f6:  e8040793           addi a5,s0,-384
    d4fa:  faf43023           sd a5,-96(s0)
    d4fe:  e5040793           addi a5,s0,-432
    d502:  faf43423           sd a5,-88(s0)
    d506:  e2840793           addi a5,s0,-472
    d50a:  faf43823           sd a5,-80(s0)
    d50e:  e0040793           addi a5,s0,-512
    d512:  faf43c23           sd a5,-72(s0)
    d516:  dd840793           addi a5,s0,-552
    d51a:  fcf43023           sd a5,-64(s0)
    d51e:  f5840793           addi a5,s0,-168
    d522:  07078793           addi a5,a5,112
    d526:  853e                 mv a0,a5
    d528:  918ff0ef           jal ra,c640 <FUN_0000c640>
    d52c:  b8dfd0ef           jal ra,b0b8 <clear_interrupts>
    d530:  f5840793           addi a5,s0,-168
    d534:  853e                 mv a0,a5
    d536:  eadff0ef           jal ra,d3e2 <FUN_0000d3e2>
    d53a:  f5840793           addi a5,s0,-168
    d53e:  853e                 mv a0,a5
    d540:  99dfd0ef           jal ra,aedc <FUN_0000aedc>
    d544:  f4040793           addi a5,s0,-192
    d548:  853e                 mv a0,a5
    d54a:  bc5fd0ef           jal ra,b10e <FUN_0000b10e>
    d54e:  f3040793           addi a5,s0,-208
    d552:  853e                 mv a0,a5
    d554:  c59fd0ef           jal ra,b1ac <FUN_0000b1ac>
    d558:  f2040793           addi a5,s0,-224
    d55c:  853e                 mv a0,a5
    d55e:  cb5fd0ef           jal ra,b212 <FUN_0000b212>
    d562:  f1840793           addi a5,s0,-232
    d566:  853e                 mv a0,a5
    d568:  d11fd0ef           jal ra,b278 <FUN_0000b278>
    d56c:  f1040793           addi a5,s0,-240
    d570:  853e                 mv a0,a5
    d572:  d55fd0ef           jal ra,b2c6 <FUN_0000b2c6>
    d576:  f1840693           addi a3,s0,-232
    d57a:  f1040713           addi a4,s0,-240
    d57e:  f0040793           addi a5,s0,-256
    d582:  8636                 mv a2,a3
    d584:  85ba                 mv a1,a4
    d586:  853e                 mv a0,a5
    d588:  d8ffd0ef           jal ra,b316 <FUN_0000b316>
    d58c:  ef840793           addi a5,s0,-264
    d590:  853e                 mv a0,a5
    d592:  db5fd0ef           jal ra,b346 <FUN_0000b346>
    d596:  ef040793           addi a5,s0,-272
    d59a:  853e                 mv a0,a5
    d59c:  df9fd0ef           jal ra,b394 <FUN_0000b394>
    d5a0:  ef840693           addi a3,s0,-264
    d5a4:  ef040713           addi a4,s0,-272
    d5a8:  ee040793           addi a5,s0,-288
    d5ac:  8636                 mv a2,a3
    d5ae:  85ba                 mv a1,a4
    d5b0:  853e                 mv a0,a5
    d5b2:  e33fd0ef           jal ra,b3e4 <FUN_0000b3e4>
    d5b6:  ab9fa0ef           jal ra,806e <brom_config_bit_1>
    d5ba:  87aa                 mv a5,a0
    d5bc:  cf89                 beqz a5,d5d6 <fel_main+0x14e>
    d5be:  ef040693           addi a3,s0,-272
    d5c2:  ef840713           addi a4,s0,-264
    d5c6:  e8040793           addi a5,s0,-384
    d5ca:  8636                 mv a2,a3
    d5cc:  85ba                 mv a1,a4
    d5ce:  853e                 mv a0,a5
    d5d0:  e45fd0ef           jal ra,b414 <FUN_0000b414>
    d5d4:  a821                 j d5ec <fel_main+0x164>
    d5d6:  f1040693           addi a3,s0,-240
    d5da:  f1840713           addi a4,s0,-232
    d5de:  e8040793           addi a5,s0,-384
    d5e2:  8636                 mv a2,a3
    d5e4:  85ba                 mv a1,a4
    d5e6:  853e                 mv a0,a5
    d5e8:  e2dfd0ef           jal ra,b414 <FUN_0000b414>
    d5ec:  e0040693           addi a3,s0,-512
    d5f0:  dd840613           addi a2,s0,-552
    d5f4:  77fd                 lui a5,0xfffff
    d5f6:  de878793           addi a5,a5,-536 # ffffffffffffede8 <gpio_get_boot_device
    d5fa:  ff040713           addi a4,s0,-16
    d5fe:  973e                 add a4,a4,a5
    d600:  e5040793           addi a5,s0,-432
    d604:  85ba                 mv a1,a4
    d606:  853e                 mv a0,a5
    d608:  f1dfd0ef           jal ra,b524 <FUN_0000b524>
    d60c:  77fd                 lui a5,0xfffff
    d60e:  da078793           addi a5,a5,-608 # ffffffffffffeda0 <gpio_get_boot_device
    d612:  ff040713           addi a4,s0,-16
    d616:  973e                 add a4,a4,a5
    d618:  e2840793           addi a5,s0,-472
    d61c:  85ba                 mv a1,a4
    d61e:  853e                 mv a0,a5
    d620:  f61fd0ef           jal ra,b580 <FUN_0000b580>
    d624:  77fd                 lui a5,0xfffff
    d626:  de878793           addi a5,a5,-536 # ffffffffffffede8 <gpio_get_boot_device
    d62a:  ff040713           addi a4,s0,-16
    d62e:  973e                 add a4,a4,a5
    d630:  e0040793           addi a5,s0,-512
    d634:  85ba                 mv a1,a4
    d636:  853e                 mv a0,a5
    d638:  ff5fd0ef           jal ra,b62c <FUN_0000b62c>
    d63c:  77fd                 lui a5,0xfffff
    d63e:  de878793           addi a5,a5,-536 # ffffffffffffede8 <gpio_get_boot_device
    d642:  ff040713           addi a4,s0,-16
    d646:  973e                 add a4,a4,a5
    d648:  dd840793           addi a5,s0,-552
    d64c:  85ba                 mv a1,a4
    d64e:  853e                 mv a0,a5
    d650:  f87fd0ef           jal ra,b5d6 <FUN_0000b5d6>
    d654:  fa043783           ld a5,-96(s0)
    d658:  e0040693           addi a3,s0,-512
    d65c:  dd840613           addi a2,s0,-552
    d660:  e2840713           addi a4,s0,-472
    d664:  85ba                 mv a1,a4
    d666:  853e                 mv a0,a5
    d668:  81afe0ef           jal ra,b682 <FUN_0000b682>
    d66c:  f5840793           addi a5,s0,-168
    d670:  853e                 mv a0,a5
    d672:  a0bfd0ef           jal ra,b07c <disable_interrupts>
    d676:  f5840793           addi a5,s0,-168
    d67a:  853e                 mv a0,a5
    d67c:  bbafe0ef           jal ra,ba36 <FUN_0000ba36>
    d680:  f5840793           addi a5,s0,-168
    d684:  853e                 mv a0,a5
    d686:  ee0fd0ef           jal ra,ad66 <FUN_0000ad66>
    d68a:  0001                 nop
    d68c:  6305                 lui t1,0x1
    d68e:  911a                 add sp,sp,t1
    d690:  26813083           ld ra,616(sp)
    d694:  26013403           ld s0,608(sp)
    d698:  27010113           addi sp,sp,624
    d69c:  8082                 ret

000000000000d69e <FUN_0000d69e>:
    d69e:  7179                 addi sp,sp,-48
    d6a0:  f406                 sd ra,40(sp)
    d6a2:  f022                 sd s0,32(sp)
    d6a4:  1800                 addi s0,sp,48
    d6a6:  fca43c23           sd a0,-40(s0)
    d6aa:  fe043023           sd zero,-32(s0)
    d6ae:  6795                 lui a5,0x5
    d6b0:  e207879b           addiw a5,a5,-480
    d6b4:  fef42623           sw a5,-20(s0)
    d6b8:  fd843783           ld a5,-40(s0)
    d6bc:  67bc                 ld a5,72(a5)
    d6be:  03078793           addi a5,a5,48 # 5030 <FUN_00004d1e+0x312>
    d6c2:  fef43023           sd a5,-32(s0)
    d6c6:  fe043783           ld a5,-32(s0)
    d6ca:  0087c783           lbu a5,8(a5)
    d6ce:  853e                 mv a0,a5
    d6d0:  9fdfd0ef           jal ra,b0cc <FUN_0000b0cc>
    d6d4:  041007b7           lui a5,0x4100
    d6d8:  08278793           addi a5,a5,130 # 4100082 <gpio_get_boot_device+0x40f1cec
    d6dc:  0007d783           lhu a5,0(a5)
    d6e0:  17c2                 slli a5,a5,0x30
    d6e2:  93c1                 srli a5,a5,0x30
    d6e4:  2781                 sext.w a5,a5
    d6e6:  8b85                 andi a5,a5,1
    d6e8:  2781                 sext.w a5,a5
    d6ea:  e399                 bnez a5,d6f0 <FUN_0000d69e+0x52>
    d6ec:  4785                 li a5,1
    d6ee:  a829                 j d708 <FUN_0000d69e+0x6a>
    d6f0:  fec42783           lw a5,-20(s0)
    d6f4:  2781                 sext.w a5,a5
    d6f6:  e399                 bnez a5,d6fc <FUN_0000d69e+0x5e>
    d6f8:  4789                 li a5,2
    d6fa:  a039                 j d708 <FUN_0000d69e+0x6a>
    d6fc:  fec42783           lw a5,-20(s0)
    d700:  37fd                 addiw a5,a5,-1
    d702:  fef42623           sw a5,-20(s0)
    d706:  b7f9                 j d6d4 <FUN_0000d69e+0x36>
    d708:  853e                 mv a0,a5
    d70a:  70a2                 ld ra,40(sp)
    d70c:  7402                 ld s0,32(sp)
    d70e:  6145                 addi sp,sp,48
    d710:  8082                 ret

000000000000d712 <FUN_0000d712>:
    d712:  1101                 addi sp,sp,-32
    d714:  ec06                 sd ra,24(sp)
    d716:  e822                 sd s0,16(sp)
    d718:  1000                 addi s0,sp,32
    d71a:  fe042623           sw zero,-20(s0)
    d71e:  fe042423           sw zero,-24(s0)
    d722:  e74fa0ef           jal ra,7d96 <FUN_00007d96>
    d726:  87aa                 mv a5,a0
    d728:  cf99                 beqz a5,d746 <FUN_0000d712+0x34>
    d72a:  070907b7           lui a5,0x7090
    d72e:  30878793           addi a5,a5,776 # 7090308 <gpio_get_boot_device+0x7081f72
    d732:  439c                 lw a5,0(a5)
    d734:  fef42623           sw a5,-20(s0)
    d738:  fec42783           lw a5,-20(s0)
    d73c:  0ff7f793           andi a5,a5,255
    d740:  fef42623           sw a5,-20(s0)
    d744:  a801                 j d754 <FUN_0000d712+0x42>
    d746:  0d000513           li a0,208
    d74a:  e1cfa0ef           jal ra,7d66 <sid_readl>
    d74e:  87aa                 mv a5,a0
    d750:  fef42623           sw a5,-20(s0)
    d754:  fec42783           lw a5,-20(s0)
    d758:  2781                 sext.w a5,a5
    d75a:  cb85                 beqz a5,d78a <FUN_0000d712+0x78>
    d75c:  a821                 j d774 <FUN_0000d712+0x62>
    d75e:  fe842783           lw a5,-24(s0)
    d762:  2785                 addiw a5,a5,1
    d764:  fef42423           sw a5,-24(s0)
    d768:  fec42783           lw a5,-20(s0)
    d76c:  0017d79b           srliw a5,a5,0x1
    d770:  fef42623           sw a5,-20(s0)
    d774:  fec42783           lw a5,-20(s0)
    d778:  2781                 sext.w a5,a5
    d77a:  f3f5                 bnez a5,d75e <FUN_0000d712+0x4c>
    d77c:  fe842783           lw a5,-24(s0)
    d780:  fef42623           sw a5,-20(s0)
    d784:  fec42783           lw a5,-20(s0)
    d788:  a011                 j d78c <FUN_0000d712+0x7a>
    d78a:  57fd                 li a5,-1
    d78c:  853e                 mv a0,a5
    d78e:  60e2                 ld ra,24(sp)
    d790:  6442                 ld s0,16(sp)
    d792:  6105                 addi sp,sp,32
    d794:  8082                 ret

000000000000d796 <FUN_0000d796>:
    d796:  7139                 addi sp,sp,-64
    d798:  fc06                 sd ra,56(sp)
    d79a:  f822                 sd s0,48(sp)
    d79c:  0080                 addi s0,sp,64
    d79e:  fca43c23           sd a0,-40(s0)
    d7a2:  fcb43823           sd a1,-48(s0)
    d7a6:  fcc43423           sd a2,-56(s0)
    d7aa:  fe043423           sd zero,-24(s0)
    d7ae:  fe043023           sd zero,-32(s0)
    d7b2:  67b9                 lui a5,0xe
    d7b4:  58078593           addi a1,a5,1408 # e580 <gpio_get_boot_device+0x1ea>
    d7b8:  fd043503           ld a0,-48(s0)
    d7bc:  e57fa0ef           jal ra,8612 <boot0_check_magic>
    d7c0:  87aa                 mv a5,a0
    d7c2:  ef8d                 bnez a5,d7fc <FUN_0000d796+0x66>
    d7c4:  fd043783           ld a5,-48(s0)
    d7c8:  fef43423           sd a5,-24(s0)
    d7cc:  fe843783           ld a5,-24(s0)
    d7d0:  4b98                 lw a4,16(a5)
    d7d2:  fc843783           ld a5,-56(s0)
    d7d6:  c398                 sw a4,0(a5)
    d7d8:  fe843783           ld a5,-24(s0)
    d7dc:  4b9c                 lw a5,16(a5)
    d7de:  1782                 slli a5,a5,0x20
    d7e0:  9381                 srli a5,a5,0x20
    d7e2:  fd043703           ld a4,-48(s0)
    d7e6:  973e                 add a4,a4,a5
    d7e8:  6785                 lui a5,0x1
    d7ea:  c0078613           addi a2,a5,-1024 # c00 <FUN_00000bbe+0x42>
    d7ee:  85ba                 mv a1,a4
    d7f0:  fd843503           ld a0,-40(s0)
    d7f4:  e96fc0ef           jal ra,9e8a <memcpy>
    d7f8:  4781                 li a5,0
    d7fa:  a825                 j d832 <FUN_0000d796+0x9c>
    d7fc:  fd043783           ld a5,-48(s0)
    d800:  fef43023           sd a5,-32(s0)
    d804:  fe043783           ld a5,-32(s0)
    d808:  4bd8                 lw a4,20(a5)
    d80a:  fc843783           ld a5,-56(s0)
    d80e:  c398                 sw a4,0(a5)
    d810:  fe043783           ld a5,-32(s0)
    d814:  4bdc                 lw a5,20(a5)
    d816:  1782                 slli a5,a5,0x20
    d818:  9381                 srli a5,a5,0x20
    d81a:  fd043703           ld a4,-48(s0)
    d81e:  973e                 add a4,a4,a5
    d820:  6785                 lui a5,0x1
    d822:  c0078613           addi a2,a5,-1024 # c00 <FUN_00000bbe+0x42>
    d826:  85ba                 mv a1,a4
    d828:  fd843503           ld a0,-40(s0)
    d82c:  e5efc0ef           jal ra,9e8a <memcpy>
    d830:  4781                 li a5,0
    d832:  853e                 mv a0,a5
    d834:  70e2                 ld ra,56(sp)
    d836:  7442                 ld s0,48(sp)
    d838:  6121                 addi sp,sp,64
    d83a:  8082                 ret

000000000000d83c <FUN_0000d83c>:
    d83c:  d8010113           addi sp,sp,-640
    d840:  26113c23           sd ra,632(sp)
    d844:  26813823           sd s0,624(sp)
    d848:  0500                 addi s0,sp,640
    d84a:  d8a43423           sd a0,-632(s0)
    d84e:  fe042623           sw zero,-20(s0)
    d852:  fe042423           sw zero,-24(s0)
    d856:  fe042223           sw zero,-28(s0)
    d85a:  fe042023           sw zero,-32(s0)
    d85e:  fc043c23           sd zero,-40(s0)
    d862:  fb840793           addi a5,s0,-72
    d866:  02000613           li a2,32
    d86a:  4581                 li a1,0
    d86c:  853e                 mv a0,a5
    d86e:  e7cfc0ef           jal ra,9eea <memset>
    d872:  d9840793           addi a5,s0,-616
    d876:  22000613           li a2,544
    d87a:  4581                 li a1,0
    d87c:  853e                 mv a0,a5
    d87e:  e6cfc0ef           jal ra,9eea <memset>
    d882:  d8843783           ld a5,-632(s0)
    d886:  4fdc                 lw a5,28(a5)
    d888:  0037d79b           srliw a5,a5,0x3
    d88c:  2781                 sext.w a5,a5
    d88e:  0017979b           slliw a5,a5,0x1
    d892:  2781                 sext.w a5,a5
    d894:  fef42223           sw a5,-28(s0)
    d898:  d9840793           addi a5,s0,-616
    d89c:  02000593           li a1,32
    d8a0:  853e                 mv a0,a5
    d8a2:  907f40ef           jal ra,21a8 <ALIGN>
    d8a6:  87aa                 mv a5,a0
    d8a8:  fcf43c23           sd a5,-40(s0)
    d8ac:  d8843783           ld a5,-632(s0)
    d8b0:  02c78713           addi a4,a5,44
    d8b4:  d8843783           ld a5,-632(s0)
    d8b8:  53dc                 lw a5,36(a5)
    d8ba:  863e                 mv a2,a5
    d8bc:  85ba                 mv a1,a4
    d8be:  fd843503           ld a0,-40(s0)
    d8c2:  dc8fc0ef           jal ra,9e8a <memcpy>
    d8c6:  d8843783           ld a5,-632(s0)
    d8ca:  53dc                 lw a5,36(a5)
    d8cc:  02079713           slli a4,a5,0x20
    d8d0:  9301                 srli a4,a4,0x20
    d8d2:  fd843783           ld a5,-40(s0)
    d8d6:  97ba                 add a5,a5,a4
    d8d8:  86be                 mv a3,a5
    d8da:  d8843783           ld a5,-632(s0)
    d8de:  12c78713           addi a4,a5,300
    d8e2:  d8843783           ld a5,-632(s0)
    d8e6:  579c                 lw a5,40(a5)
    d8e8:  863e                 mv a2,a5
    d8ea:  85ba                 mv a1,a4
    d8ec:  8536                 mv a0,a3
    d8ee:  d9cfc0ef           jal ra,9e8a <memcpy>
    d8f2:  d8843783           ld a5,-632(s0)
    d8f6:  53d8                 lw a4,36(a5)
    d8f8:  d8843783           ld a5,-632(s0)
    d8fc:  579c                 lw a5,40(a5)
    d8fe:  9fb9                 addw a5,a5,a4
    d900:  2781                 sext.w a5,a5
    d902:  fef42023           sw a5,-32(s0)
    d906:  fe042703           lw a4,-32(s0)
    d90a:  fe442783           lw a5,-28(s0)
    d90e:  2701                 sext.w a4,a4
    d910:  2781                 sext.w a5,a5
    d912:  00e7d863           bge a5,a4,d922 <FUN_0000d83c+0xe6>
    d916:  4591                 li a1,4
    d918:  4501                 li a0,0
    d91a:  92bfa0ef           jal ra,8244 <debug_state_save>
    d91e:  57fd                 li a5,-1
    d920:  a221                 j da28 <FUN_0000d83c+0x1ec>
    d922:  fe042703           lw a4,-32(s0)
    d926:  fd843783           ld a5,-40(s0)
    d92a:  97ba                 add a5,a5,a4
    d92c:  86be                 mv a3,a5
    d92e:  fe442703           lw a4,-28(s0)
    d932:  fe042783           lw a5,-32(s0)
    d936:  40f707bb           subw a5,a4,a5
    d93a:  2781                 sext.w a5,a5
    d93c:  2781                 sext.w a5,a5
    d93e:  863e                 mv a2,a5
    d940:  09100593           li a1,145
    d944:  8536                 mv a0,a3
    d946:  da4fc0ef           jal ra,9eea <memset>
    d94a:  fe442783           lw a5,-28(s0)
    d94e:  fb840693           addi a3,s0,-72
    d952:  02000713           li a4,32
    d956:  863e                 mv a2,a5
    d958:  fd843583           ld a1,-40(s0)
    d95c:  4505                 li a0,1
    d95e:  b70f30ef           jal ra,cce <sunxi_sha_calc>
    d962:  fe042623           sw zero,-20(s0)
    d966:  a81d                 j d99c <FUN_0000d83c+0x160>
    d968:  fec42703           lw a4,-20(s0)
    d96c:  00c027b7           lui a5,0xc02
    d970:  8487879b           addiw a5,a5,-1976
    d974:  9fb9                 addw a5,a5,a4
    d976:  2781                 sext.w a5,a5
    d978:  0027979b           slliw a5,a5,0x2
    d97c:  2781                 sext.w a5,a5
    d97e:  873e                 mv a4,a5
    d980:  fec42783           lw a5,-20(s0)
    d984:  078a                 slli a5,a5,0x2
    d986:  ff040693           addi a3,s0,-16
    d98a:  97b6                 add a5,a5,a3
    d98c:  fc87a783           lw a5,-56(a5) # c01fc8 <gpio_get_boot_device+0xbf3c32>
    d990:  c31c                 sw a5,0(a4)
    d992:  fec42783           lw a5,-20(s0)
    d996:  2785                 addiw a5,a5,1
    d998:  fef42623           sw a5,-20(s0)
    d99c:  fec42783           lw a5,-20(s0)
    d9a0:  0007871b           sext.w a4,a5
    d9a4:  479d                 li a5,7
    d9a6:  fce7d1e3           bge a5,a4,d968 <FUN_0000d83c+0x12c>
    d9aa:  030067b7           lui a5,0x3006
    d9ae:  14078793           addi a5,a5,320 # 3006140 <gpio_get_boot_device+0x2ff7daa
    d9b2:  439c                 lw a5,0(a5)
    d9b4:  fef42423           sw a5,-24(s0)
    d9b8:  fe842703           lw a4,-24(s0)
    d9bc:  800007b7           lui a5,0x80000
    d9c0:  8fd9                 or a5,a5,a4
    d9c2:  fef42423           sw a5,-24(s0)
    d9c6:  030067b7           lui a5,0x3006
    d9ca:  14078793           addi a5,a5,320 # 3006140 <gpio_get_boot_device+0x2ff7daa
    d9ce:  fe842703           lw a4,-24(s0)
    d9d2:  c398                 sw a4,0(a5)
    d9d4:  fe042623           sw zero,-20(s0)
    d9d8:  a031                 j d9e4 <FUN_0000d83c+0x1a8>
    d9da:  fec42783           lw a5,-20(s0)
    d9de:  2785                 addiw a5,a5,1
    d9e0:  fef42623           sw a5,-20(s0)
    d9e4:  fec42783           lw a5,-20(s0)
    d9e8:  0007871b           sext.w a4,a5
    d9ec:  0ff00793           li a5,255
    d9f0:  fee7d5e3           bge a5,a4,d9da <FUN_0000d83c+0x19e>
    d9f4:  030067b7           lui a5,0x3006
    d9f8:  14078793           addi a5,a5,320 # 3006140 <gpio_get_boot_device+0x2ff7daa
    d9fc:  439c                 lw a5,0(a5)
    d9fe:  fef42423           sw a5,-24(s0)
    da02:  fe842783           lw a5,-24(s0)
    da06:  8b89                 andi a5,a5,2
    da08:  2781                 sext.w a5,a5
    da0a:  cb91                 beqz a5,da1e <FUN_0000d83c+0x1e2>
    da0c:  fe842783           lw a5,-24(s0)
    da10:  8b85                 andi a5,a5,1
    da12:  2781                 sext.w a5,a5
    da14:  c399                 beqz a5,da1a <FUN_0000d83c+0x1de>
    da16:  4781                 li a5,0
    da18:  a801                 j da28 <FUN_0000d83c+0x1ec>
    da1a:  57fd                 li a5,-1
    da1c:  a031                 j da28 <FUN_0000d83c+0x1ec>
    da1e:  4595                 li a1,5
    da20:  4501                 li a0,0
    da22:  823fa0ef           jal ra,8244 <debug_state_save>
    da26:  4781                 li a5,0
    da28:  853e                 mv a0,a5
    da2a:  27813083           ld ra,632(sp)
    da2e:  27013403           ld s0,624(sp)
    da32:  28010113           addi sp,sp,640
    da36:  8082                 ret

000000000000da38 <FUN_0000da38>:
    da38:  81010113           addi sp,sp,-2032
    da3c:  7e113423           sd ra,2024(sp)
    da40:  7e813023           sd s0,2016(sp)
    da44:  7f010413           addi s0,sp,2032
    da48:  b6010113           addi sp,sp,-1184
    da4c:  77fd                 lui a5,0xfffff
    da4e:  ff040713           addi a4,s0,-16
    da52:  97ba                 add a5,a5,a4
    da54:  38a7b423           sd a0,904(a5) # fffffffffffff388 <gpio_get_boot_device+0
    da58:  fe043423           sd zero,-24(s0)
    da5c:  fe042223           sw zero,-28(s0)
    da60:  77fd                 lui a5,0xfffff
    da62:  3d078793           addi a5,a5,976 # fffffffffffff3d0 <gpio_get_boot_device+
    da66:  ff040713           addi a4,s0,-16
    da6a:  973e                 add a4,a4,a5
    da6c:  6785                 lui a5,0x1
    da6e:  c2078613           addi a2,a5,-992 # c20 <FUN_00000bbe+0x62>
    da72:  4581                 li a1,0
    da74:  853a                 mv a0,a4
    da76:  c74fc0ef           jal ra,9eea <memset>
    da7a:  77fd                 lui a5,0xfffff
    da7c:  3b078793           addi a5,a5,944 # fffffffffffff3b0 <gpio_get_boot_device+
    da80:  ff040713           addi a4,s0,-16
    da84:  97ba                 add a5,a5,a4
    da86:  02000613           li a2,32
    da8a:  4581                 li a1,0
    da8c:  853e                 mv a0,a5
    da8e:  c5cfc0ef           jal ra,9eea <memset>
    da92:  77fd                 lui a5,0xfffff
    da94:  39078793           addi a5,a5,912 # fffffffffffff390 <gpio_get_boot_device+
    da98:  ff040713           addi a4,s0,-16
    da9c:  97ba                 add a5,a5,a4
    da9e:  02000613           li a2,32
    daa2:  4581                 li a1,0
    daa4:  853e                 mv a0,a5
    daa6:  c44fc0ef           jal ra,9eea <memset>
    daaa:  77fd                 lui a5,0xfffff
    daac:  3d078793           addi a5,a5,976 # fffffffffffff3d0 <gpio_get_boot_device+
    dab0:  ff040713           addi a4,s0,-16
    dab4:  97ba                 add a5,a5,a4
    dab6:  02000593           li a1,32
    daba:  853e                 mv a0,a5
    dabc:  eecf40ef           jal ra,21a8 <ALIGN>
    dac0:  87aa                 mv a5,a0
    dac2:  fef43423           sd a5,-24(s0)
    dac6:  77fd                 lui a5,0xfffff
    dac8:  ff040713           addi a4,s0,-16
    dacc:  97ba                 add a5,a5,a4
    dace:  3887b783           ld a5,904(a5) # fffffffffffff388 <gpio_get_boot_device+0
    dad2:  47d8                 lw a4,12(a5)
    dad4:  77fd                 lui a5,0xfffff
    dad6:  ff040693           addi a3,s0,-16
    dada:  97b6                 add a5,a5,a3
    dadc:  863a                 mv a2,a4
    dade:  3887b583           ld a1,904(a5) # fffffffffffff388 <gpio_get_boot_device+0
    dae2:  fe843503           ld a0,-24(s0)
    dae6:  ba4fc0ef           jal ra,9e8a <memcpy>
    daea:  77fd                 lui a5,0xfffff
    daec:  ff040713           addi a4,s0,-16
    daf0:  97ba                 add a5,a5,a4
    daf2:  3887b783           ld a5,904(a5) # fffffffffffff388 <gpio_get_boot_device+0
    daf6:  47d0                 lw a2,12(a5)
    daf8:  77fd                 lui a5,0xfffff
    dafa:  3b078793           addi a5,a5,944 # fffffffffffff3b0 <gpio_get_boot_device+
    dafe:  ff040713           addi a4,s0,-16
    db02:  97ba                 add a5,a5,a4
    db04:  02000713           li a4,32
    db08:  86be                 mv a3,a5
    db0a:  fe843583           ld a1,-24(s0)
    db0e:  4505                 li a0,1
    db10:  9bef30ef           jal ra,cce <sunxi_sha_calc>
    db14:  77fd                 lui a5,0xfffff
    db16:  ff040713           addi a4,s0,-16
    db1a:  97ba                 add a5,a5,a4
    db1c:  3887b783           ld a5,904(a5) # fffffffffffff388 <gpio_get_boot_device+0
    db20:  4fc8                 lw a0,28(a5)
    db22:  77fd                 lui a5,0xfffff
    db24:  ff040713           addi a4,s0,-16
    db28:  97ba                 add a5,a5,a4
    db2a:  3887b783           ld a5,904(a5) # fffffffffffff388 <gpio_get_boot_device+0
    db2e:  12c78593           addi a1,a5,300
    db32:  77fd                 lui a5,0xfffff
    db34:  ff040713           addi a4,s0,-16
    db38:  97ba                 add a5,a5,a4
    db3a:  3887b783           ld a5,904(a5) # fffffffffffff388 <gpio_get_boot_device+0
    db3e:  5790                 lw a2,40(a5)
    db40:  77fd                 lui a5,0xfffff
    db42:  ff040713           addi a4,s0,-16
    db46:  97ba                 add a5,a5,a4
    db48:  3887b783           ld a5,904(a5) # fffffffffffff388 <gpio_get_boot_device+0
    db4c:  37878693           addi a3,a5,888
    db50:  77fd                 lui a5,0xfffff
    db52:  ff040713           addi a4,s0,-16
    db56:  97ba                 add a5,a5,a4
    db58:  3887b783           ld a5,904(a5) # fffffffffffff388 <gpio_get_boot_device+0
    db5c:  02c78713           addi a4,a5,44
    db60:  77fd                 lui a5,0xfffff
    db62:  39078793           addi a5,a5,912 # fffffffffffff390 <gpio_get_boot_device+
    db66:  ff040813           addi a6,s0,-16
    db6a:  97c2                 add a5,a5,a6
    db6c:  88ba                 mv a7,a4
    db6e:  02000813           li a6,32
    db72:  10000713           li a4,256
    db76:  bb6f30ef           jal ra,f2c <FUN_00000f2c>
    db7a:  77fd                 lui a5,0xfffff
    db7c:  39078793           addi a5,a5,912 # fffffffffffff390 <gpio_get_boot_device+
    db80:  ff040713           addi a4,s0,-16
    db84:  973e                 add a4,a4,a5
    db86:  77fd                 lui a5,0xfffff
    db88:  3b078793           addi a5,a5,944 # fffffffffffff3b0 <gpio_get_boot_device+
    db8c:  ff040693           addi a3,s0,-16
    db90:  97b6                 add a5,a5,a3
    db92:  02000613           li a2,32
    db96:  85ba                 mv a1,a4
    db98:  853e                 mv a0,a5
    db9a:  d08fc0ef           jal ra,a0a2 <FUN_0000a0a2>
    db9e:  87aa                 mv a5,a0
    dba0:  fef42223           sw a5,-28(s0)
    dba4:  fe442783           lw a5,-28(s0)
    dba8:  2781                 sext.w a5,a5
    dbaa:  e399                 bnez a5,dbb0 <FUN_0000da38+0x178>
    dbac:  4781                 li a5,0
    dbae:  a011                 j dbb2 <FUN_0000da38+0x17a>
    dbb0:  57fd                 li a5,-1
    dbb2:  853e                 mv a0,a5
    dbb4:  4a010113           addi sp,sp,1184
    dbb8:  7e813083           ld ra,2024(sp)
    dbbc:  7e013403           ld s0,2016(sp)
    dbc0:  7f010113           addi sp,sp,2032
    dbc4:  8082                 ret

000000000000dbc6 <FUN_0000dbc6>:
    dbc6:  7179                 addi sp,sp,-48
    dbc8:  f406                 sd ra,40(sp)
    dbca:  f022                 sd s0,32(sp)
    dbcc:  1800                 addi s0,sp,48
    dbce:  fca43c23           sd a0,-40(s0)
    dbd2:  fe043423           sd zero,-24(s0)
    dbd6:  fe042223           sw zero,-28(s0)
    dbda:  fd843783           ld a5,-40(s0)
    dbde:  e399                 bnez a5,dbe4 <FUN_0000dbc6+0x1e>
    dbe0:  57fd                 li a5,-1
    dbe2:  a041                 j dc62 <FUN_0000dbc6+0x9c>
    dbe4:  fd843783           ld a5,-40(s0)
    dbe8:  fef43423           sd a5,-24(s0)
    dbec:  fe843703           ld a4,-24(s0)
    dbf0:  4621                 li a2,8
    dbf2:  67b9                 lui a5,0xe
    dbf4:  59078593           addi a1,a5,1424 # e590 <gpio_get_boot_device+0x1fa>
    dbf8:  853a                 mv a0,a4
    dbfa:  d0efc0ef           jal ra,a108 <strncmp>
    dbfe:  87aa                 mv a5,a0
    dc00:  fef42223           sw a5,-28(s0)
    dc04:  fe442783           lw a5,-28(s0)
    dc08:  2781                 sext.w a5,a5
    dc0a:  c799                 beqz a5,dc18 <FUN_0000dbc6+0x52>
    dc0c:  4589                 li a1,2
    dc0e:  4501                 li a0,0
    dc10:  e34fa0ef           jal ra,8244 <debug_state_save>
    dc14:  57fd                 li a5,-1
    dc16:  a0b1                 j dc62 <FUN_0000dbc6+0x9c>
    dc18:  fd843503           ld a0,-40(s0)
    dc1c:  c21ff0ef           jal ra,d83c <FUN_0000d83c>
    dc20:  87aa                 mv a5,a0
    dc22:  fef42223           sw a5,-28(s0)
    dc26:  fe442783           lw a5,-28(s0)
    dc2a:  2781                 sext.w a5,a5
    dc2c:  0007d863           bgez a5,dc3c <FUN_0000dbc6+0x76>
    dc30:  4599                 li a1,6
    dc32:  4501                 li a0,0
    dc34:  e10fa0ef           jal ra,8244 <debug_state_save>
    dc38:  57fd                 li a5,-1
    dc3a:  a025                 j dc62 <FUN_0000dbc6+0x9c>
    dc3c:  fd843503           ld a0,-40(s0)
    dc40:  df9ff0ef           jal ra,da38 <FUN_0000da38>
    dc44:  87aa                 mv a5,a0
    dc46:  fef42223           sw a5,-28(s0)
    dc4a:  fe442783           lw a5,-28(s0)
    dc4e:  2781                 sext.w a5,a5
    dc50:  0007d863           bgez a5,dc60 <FUN_0000dbc6+0x9a>
    dc54:  459d                 li a1,7
    dc56:  4501                 li a0,0
    dc58:  decfa0ef           jal ra,8244 <debug_state_save>
    dc5c:  57fd                 li a5,-1
    dc5e:  a011                 j dc62 <FUN_0000dbc6+0x9c>
    dc60:  4781                 li a5,0
    dc62:  853e                 mv a0,a5
    dc64:  70a2                 ld ra,40(sp)
    dc66:  7402                 ld s0,32(sp)
    dc68:  6145                 addi sp,sp,48
    dc6a:  8082                 ret

000000000000dc6c <FUN_0000dc6c>:
    dc6c:  7119                 addi sp,sp,-128
    dc6e:  fc86                 sd ra,120(sp)
    dc70:  f8a2                 sd s0,112(sp)
    dc72:  0100                 addi s0,sp,128
    dc74:  f8a43c23           sd a0,-104(s0)
    dc78:  87ae                 mv a5,a1
    dc7a:  f8c43423           sd a2,-120(s0)
    dc7e:  f8f42a23           sw a5,-108(s0)
    dc82:  fe043423           sd zero,-24(s0)
    dc86:  fe042223           sw zero,-28(s0)
    dc8a:  f9843783           ld a5,-104(s0)
    dc8e:  8bbd                 andi a5,a5,15
    dc90:  c399                 beqz a5,dc96 <FUN_0000dc6c+0x2a>
    dc92:  57fd                 li a5,-1
    dc94:  a0ad                 j dcfe <FUN_0000dc6c+0x92>
    dc96:  f9442783           lw a5,-108(s0)
    dc9a:  2781                 sext.w a5,a5
    dc9c:  e399                 bnez a5,dca2 <FUN_0000dc6c+0x36>
    dc9e:  57fd                 li a5,-1
    dca0:  a8b9                 j dcfe <FUN_0000dc6c+0x92>
    dca2:  fa040793           addi a5,s0,-96
    dca6:  04000613           li a2,64
    dcaa:  4581                 li a1,0
    dcac:  853e                 mv a0,a5
    dcae:  a3cfc0ef           jal ra,9eea <memset>
    dcb2:  fa040693           addi a3,s0,-96
    dcb6:  f9442783           lw a5,-108(s0)
    dcba:  02000713           li a4,32
    dcbe:  863e                 mv a2,a5
    dcc0:  f9843583           ld a1,-104(s0)
    dcc4:  4505                 li a0,1
    dcc6:  808f30ef           jal ra,cce <sunxi_sha_calc>
    dcca:  f8843783           ld a5,-120(s0)
    dcce:  fef43423           sd a5,-24(s0)
    dcd2:  fe843783           ld a5,-24(s0)
    dcd6:  22c78713           addi a4,a5,556
    dcda:  fa040793           addi a5,s0,-96
    dcde:  02000613           li a2,32
    dce2:  85ba                 mv a1,a4
    dce4:  853e                 mv a0,a5
    dce6:  bbcfc0ef           jal ra,a0a2 <FUN_0000a0a2>
    dcea:  87aa                 mv a5,a0
    dcec:  fef42223           sw a5,-28(s0)
    dcf0:  fe442783           lw a5,-28(s0)
    dcf4:  2781                 sext.w a5,a5
    dcf6:  e399                 bnez a5,dcfc <FUN_0000dc6c+0x90>
    dcf8:  4781                 li a5,0
    dcfa:  a011                 j dcfe <FUN_0000dc6c+0x92>
    dcfc:  57fd                 li a5,-1
    dcfe:  853e                 mv a0,a5
    dd00:  70e6                 ld ra,120(sp)
    dd02:  7446                 ld s0,112(sp)
    dd04:  6109                 addi sp,sp,128
    dd06:  8082                 ret

000000000000dd08 <FUN_0000dd08>:
    dd08:  7179                 addi sp,sp,-48
    dd0a:  f406                 sd ra,40(sp)
    dd0c:  f022                 sd s0,32(sp)
    dd0e:  1800                 addi s0,sp,48
    dd10:  fca43c23           sd a0,-40(s0)
    dd14:  fe042623           sw zero,-20(s0)
    dd18:  9fbff0ef           jal ra,d712 <FUN_0000d712>
    dd1c:  87aa                 mv a5,a0
    dd1e:  fef42623           sw a5,-20(s0)
    dd22:  fec42783           lw a5,-20(s0)
    dd26:  2781                 sext.w a5,a5
    dd28:  0007d863           bgez a5,dd38 <FUN_0000dd08+0x30>
    dd2c:  4585                 li a1,1
    dd2e:  4501                 li a0,0
    dd30:  d14fa0ef           jal ra,8244 <debug_state_save>
    dd34:  4781                 li a5,0
    dd36:  a839                 j dd54 <FUN_0000dd08+0x4c>
    dd38:  fd843783           ld a5,-40(s0)
    dd3c:  fef43023           sd a5,-32(s0)
    dd40:  fe043783           ld a5,-32(s0)
    dd44:  4f98                 lw a4,24(a5)
    dd46:  fec42783           lw a5,-20(s0)
    dd4a:  00f76463           bltu a4,a5,dd52 <FUN_0000dd08+0x4a>
    dd4e:  4781                 li a5,0
    dd50:  a011                 j dd54 <FUN_0000dd08+0x4c>
    dd52:  57fd                 li a5,-1
    dd54:  853e                 mv a0,a5
    dd56:  70a2                 ld ra,40(sp)
    dd58:  7402                 ld s0,32(sp)
    dd5a:  6145                 addi sp,sp,48
    dd5c:  8082                 ret

000000000000dd5e <FUN_0000dd5e>:
    dd5e:  81010113           addi sp,sp,-2032
    dd62:  7e113423           sd ra,2024(sp)
    dd66:  7e813023           sd s0,2016(sp)
    dd6a:  7f010413           addi s0,sp,2032
    dd6e:  b9010113           addi sp,sp,-1136
    dd72:  77fd                 lui a5,0xfffff
    dd74:  ff040713           addi a4,s0,-16
    dd78:  97ba                 add a5,a5,a4
    dd7a:  3aa7bc23           sd a0,952(a5) # fffffffffffff3b8 <gpio_get_boot_device+0
    dd7e:  77fd                 lui a5,0xfffff
    dd80:  ff040713           addi a4,s0,-16
    dd84:  97ba                 add a5,a5,a4
    dd86:  3ab7b823           sd a1,944(a5) # fffffffffffff3b0 <gpio_get_boot_device+0
    dd8a:  fe043423           sd zero,-24(s0)
    dd8e:  fe042223           sw zero,-28(s0)
    dd92:  77fd                 lui a5,0xfffff
    dd94:  ff040713           addi a4,s0,-16
    dd98:  97ba                 add a5,a5,a4
    dd9a:  3c07a623           sw zero,972(a5) # fffffffffffff3cc <gpio_get_boot_device
    dd9e:  77fd                 lui a5,0xfffff
    dda0:  ff040713           addi a4,s0,-16
    dda4:  97ba                 add a5,a5,a4
    dda6:  3b07b783           ld a5,944(a5) # fffffffffffff3b0 <gpio_get_boot_device+0
    ddaa:  e799                 bnez a5,ddb8 <FUN_0000dd5e+0x5a>
    ddac:  4585                 li a1,1
    ddae:  4501                 li a0,0
    ddb0:  c94fa0ef           jal ra,8244 <debug_state_save>
    ddb4:  4781                 li a5,0
    ddb6:  a8dd                 j deac <FUN_0000dd5e+0x14e>
    ddb8:  77fd                 lui a5,0xfffff
    ddba:  3d078793           addi a5,a5,976 # fffffffffffff3d0 <gpio_get_boot_device+
    ddbe:  ff040713           addi a4,s0,-16
    ddc2:  973e                 add a4,a4,a5
    ddc4:  6785                 lui a5,0x1
    ddc6:  c2078613           addi a2,a5,-992 # c20 <FUN_00000bbe+0x62>
    ddca:  4581                 li a1,0
    ddcc:  853a                 mv a0,a4
    ddce:  91cfc0ef           jal ra,9eea <memset>
    ddd2:  77fd                 lui a5,0xfffff
    ddd4:  3d078793           addi a5,a5,976 # fffffffffffff3d0 <gpio_get_boot_device+
    ddd8:  ff040713           addi a4,s0,-16
    dddc:  97ba                 add a5,a5,a4
    ddde:  07bd                 addi a5,a5,15
    dde0:  9bc1                 andi a5,a5,-16
    dde2:  fef43423           sd a5,-24(s0)
    dde6:  fe843703           ld a4,-24(s0)
    ddea:  77fd                 lui a5,0xfffff
    ddec:  3cc78793           addi a5,a5,972 # fffffffffffff3cc <gpio_get_boot_device+
    ddf0:  ff040693           addi a3,s0,-16
    ddf4:  96be                 add a3,a3,a5
    ddf6:  77fd                 lui a5,0xfffff
    ddf8:  ff040613           addi a2,s0,-16
    ddfc:  97b2                 add a5,a5,a2
    ddfe:  8636                 mv a2,a3
    de00:  3b07b583           ld a1,944(a5) # fffffffffffff3b0 <gpio_get_boot_device+0
    de04:  853a                 mv a0,a4
    de06:  991ff0ef           jal ra,d796 <FUN_0000d796>
    de0a:  87aa                 mv a5,a0
    de0c:  fef42223           sw a5,-28(s0)
    de10:  fe442783           lw a5,-28(s0)
    de14:  2781                 sext.w a5,a5
    de16:  0007d863           bgez a5,de26 <FUN_0000dd5e+0xc8>
    de1a:  4589                 li a1,2
    de1c:  4501                 li a0,0
    de1e:  c26fa0ef           jal ra,8244 <debug_state_save>
    de22:  4781                 li a5,0
    de24:  a061                 j deac <FUN_0000dd5e+0x14e>
    de26:  fe843783           ld a5,-24(s0)
    de2a:  853e                 mv a0,a5
    de2c:  d9bff0ef           jal ra,dbc6 <FUN_0000dbc6>
    de30:  87aa                 mv a5,a0
    de32:  fef42223           sw a5,-28(s0)
    de36:  fe442783           lw a5,-28(s0)
    de3a:  2781                 sext.w a5,a5
    de3c:  0007d463           bgez a5,de44 <FUN_0000dd5e+0xe6>
    de40:  4781                 li a5,0
    de42:  a0ad                 j deac <FUN_0000dd5e+0x14e>
    de44:  fe843783           ld a5,-24(s0)
    de48:  853e                 mv a0,a5
    de4a:  ebfff0ef           jal ra,dd08 <FUN_0000dd08>
    de4e:  87aa                 mv a5,a0
    de50:  fef42223           sw a5,-28(s0)
    de54:  fe442783           lw a5,-28(s0)
    de58:  2781                 sext.w a5,a5
    de5a:  0007d863           bgez a5,de6a <FUN_0000dd5e+0x10c>
    de5e:  45a1                 li a1,8
    de60:  4501                 li a0,0
    de62:  be2fa0ef           jal ra,8244 <debug_state_save>
    de66:  4781                 li a5,0
    de68:  a091                 j deac <FUN_0000dd5e+0x14e>
    de6a:  77fd                 lui a5,0xfffff
    de6c:  ff040713           addi a4,s0,-16
    de70:  97ba                 add a5,a5,a4
    de72:  3cc7a703           lw a4,972(a5) # fffffffffffff3cc <gpio_get_boot_device+0
    de76:  fe843683           ld a3,-24(s0)
    de7a:  77fd                 lui a5,0xfffff
    de7c:  ff040613           addi a2,s0,-16
    de80:  97b2                 add a5,a5,a2
    de82:  8636                 mv a2,a3
    de84:  85ba                 mv a1,a4
    de86:  3b07b503           ld a0,944(a5) # fffffffffffff3b0 <gpio_get_boot_device+0
    de8a:  de3ff0ef           jal ra,dc6c <FUN_0000dc6c>
    de8e:  87aa                 mv a5,a0
    de90:  fef42223           sw a5,-28(s0)
    de94:  fe442783           lw a5,-28(s0)
    de98:  2781                 sext.w a5,a5
    de9a:  0007d863           bgez a5,deaa <FUN_0000dd5e+0x14c>
    de9e:  45a5                 li a1,9
    dea0:  4501                 li a0,0
    dea2:  ba2fa0ef           jal ra,8244 <debug_state_save>
    dea6:  4781                 li a5,0
    dea8:  a011                 j deac <FUN_0000dd5e+0x14e>
    deaa:  4785                 li a5,1
    deac:  853e                 mv a0,a5
    deae:  47010113           addi sp,sp,1136
    deb2:  7e813083           ld ra,2024(sp)
    deb6:  7e013403           ld s0,2016(sp)
    deba:  7f010113           addi sp,sp,2032
    debe:  8082                 ret

000000000000dec0 <FUN_0000dec0>:
    dec0:  7179                 addi sp,sp,-48
    dec2:  f406                 sd ra,40(sp)
    dec4:  f022                 sd s0,32(sp)
    dec6:  1800                 addi s0,sp,48
    dec8:  fca43c23           sd a0,-40(s0)
    decc:  87ae                 mv a5,a1
    dece:  fcf42a23           sw a5,-44(s0)
    ded2:  fd446783           lwu a5,-44(s0)
    ded6:  fd843703           ld a4,-40(s0)
    deda:  97ba                 add a5,a5,a4
    dedc:  fef43423           sd a5,-24(s0)
    dee0:  a821                 j def8 <FUN_0000dec0+0x38>
    dee2:  fd843783           ld a5,-40(s0)
    dee6:  853e                 mv a0,a5
    dee8:  b62f30ef           jal ra,124a <FUN_0000124a>
    deec:  fd843783           ld a5,-40(s0)
    def0:  02078793           addi a5,a5,32
    def4:  fcf43c23           sd a5,-40(s0)
    def8:  fd843703           ld a4,-40(s0)
    defc:  fe843783           ld a5,-24(s0)
    df00:  fef761e3           bltu a4,a5,dee2 <FUN_0000dec0+0x22>
    df04:  000487b7           lui a5,0x48
    df08:  d0078823           sb zero,-752(a5) # 47d10 <gpio_get_boot_device+0x3997a>
    df0c:  0001                 nop
    df0e:  70a2                 ld ra,40(sp)
    df10:  7402                 ld s0,32(sp)
    df12:  6145                 addi sp,sp,48
    df14:  8082                 ret

000000000000df16 <FUN_0000df16>:
    df16:  c5010113           addi sp,sp,-944
    df1a:  3a113423           sd ra,936(sp)
    df1e:  3a813023           sd s0,928(sp)
    df22:  1f00                 addi s0,sp,944
    df24:  c4a43c23           sd a0,-936(s0)
    df28:  fe043423           sd zero,-24(s0)
    df2c:  fe042223           sw zero,-28(s0)
    df30:  fe042023           sw zero,-32(s0)
    df34:  fc042e23           sw zero,-36(s0)
    df38:  000487b7           lui a5,0x48
    df3c:  d1078793           addi a5,a5,-752 # 47d10 <gpio_get_boot_device+0x3997a>
    df40:  fcf43823           sd a5,-48(s0)
    df44:  c5843783           ld a5,-936(s0)
    df48:  fcf43423           sd a5,-56(s0)
    df4c:  fc843703           ld a4,-56(s0)
    df50:  4621                 li a2,8
    df52:  67b9                 lui a5,0xe
    df54:  59078593           addi a1,a5,1424 # e590 <gpio_get_boot_device+0x1fa>
    df58:  853a                 mv a0,a4
    df5a:  9aefc0ef           jal ra,a108 <strncmp>
    df5e:  87aa                 mv a5,a0
    df60:  fcf42e23           sw a5,-36(s0)
    df64:  fdc42783           lw a5,-36(s0)
    df68:  2781                 sext.w a5,a5
    df6a:  c799                 beqz a5,df78 <FUN_0000df16+0x62>
    df6c:  45a9                 li a1,10
    df6e:  4501                 li a0,0
    df70:  ad4fa0ef           jal ra,8244 <debug_state_save>
    df74:  4785                 li a5,1
    df76:  a271                 j e102 <FUN_0000df16+0x1ec>
    df78:  fa840793           addi a5,s0,-88
    df7c:  02000613           li a2,32
    df80:  4581                 li a1,0
    df82:  853e                 mv a0,a5
    df84:  f67fb0ef           jal ra,9eea <memset>
    df88:  d6840793           addi a5,s0,-664
    df8c:  24000613           li a2,576
    df90:  4581                 li a1,0
    df92:  853e                 mv a0,a5
    df94:  f57fb0ef           jal ra,9eea <memset>
    df98:  fc843783           ld a5,-56(s0)
    df9c:  4fdc                 lw a5,28(a5)
    df9e:  0037d79b           srliw a5,a5,0x3
    dfa2:  2781                 sext.w a5,a5
    dfa4:  0017979b           slliw a5,a5,0x1
    dfa8:  2781                 sext.w a5,a5
    dfaa:  fef42223           sw a5,-28(s0)
    dfae:  d6840793           addi a5,s0,-664
    dfb2:  02000593           li a1,32
    dfb6:  853e                 mv a0,a5
    dfb8:  9f0f40ef           jal ra,21a8 <ALIGN>
    dfbc:  87aa                 mv a5,a0
    dfbe:  fef43423           sd a5,-24(s0)
    dfc2:  fc843783           ld a5,-56(s0)
    dfc6:  02c78713           addi a4,a5,44
    dfca:  fc843783           ld a5,-56(s0)
    dfce:  53dc                 lw a5,36(a5)
    dfd0:  863e                 mv a2,a5
    dfd2:  85ba                 mv a1,a4
    dfd4:  fe843503           ld a0,-24(s0)
    dfd8:  eb3fb0ef           jal ra,9e8a <memcpy>
    dfdc:  fc843783           ld a5,-56(s0)
    dfe0:  53dc                 lw a5,36(a5)
    dfe2:  02079713           slli a4,a5,0x20
    dfe6:  9301                 srli a4,a4,0x20
    dfe8:  fe843783           ld a5,-24(s0)
    dfec:  97ba                 add a5,a5,a4
    dfee:  86be                 mv a3,a5
    dff0:  fc843783           ld a5,-56(s0)
    dff4:  12c78713           addi a4,a5,300
    dff8:  fc843783           ld a5,-56(s0)
    dffc:  579c                 lw a5,40(a5)
    dffe:  863e                 mv a2,a5
    e000:  85ba                 mv a1,a4
    e002:  8536                 mv a0,a3
    e004:  e87fb0ef           jal ra,9e8a <memcpy>
    e008:  fc843783           ld a5,-56(s0)
    e00c:  53d8                 lw a4,36(a5)
    e00e:  fc843783           ld a5,-56(s0)
    e012:  579c                 lw a5,40(a5)
    e014:  9fb9                 addw a5,a5,a4
    e016:  2781                 sext.w a5,a5
    e018:  fef42023           sw a5,-32(s0)
    e01c:  fe042703           lw a4,-32(s0)
    e020:  fe843783           ld a5,-24(s0)
    e024:  97ba                 add a5,a5,a4
    e026:  86be                 mv a3,a5
    e028:  fe442703           lw a4,-28(s0)
    e02c:  fe042783           lw a5,-32(s0)
    e030:  40f707bb           subw a5,a4,a5
    e034:  2781                 sext.w a5,a5
    e036:  2781                 sext.w a5,a5
    e038:  863e                 mv a2,a5
    e03a:  09100593           li a1,145
    e03e:  8536                 mv a0,a3
    e040:  eabfb0ef           jal ra,9eea <memset>
    e044:  fe442783           lw a5,-28(s0)
    e048:  fa840693           addi a3,s0,-88
    e04c:  02000713           li a4,32
    e050:  863e                 mv a2,a5
    e052:  fe843583           ld a1,-24(s0)
    e056:  4505                 li a0,1
    e058:  c77f20ef           jal ra,cce <sunxi_sha_calc>
    e05c:  fa840713           addi a4,s0,-88
    e060:  02000613           li a2,32
    e064:  67b9                 lui a5,0xe
    e066:  5a078593           addi a1,a5,1440 # e5a0 <gpio_get_boot_device+0x20a>
    e06a:  853a                 mv a0,a4
    e06c:  836fc0ef           jal ra,a0a2 <FUN_0000a0a2>
    e070:  87aa                 mv a5,a0
    e072:  fcf42e23           sw a5,-36(s0)
    e076:  fdc42783           lw a5,-36(s0)
    e07a:  2781                 sext.w a5,a5
    e07c:  c799                 beqz a5,e08a <FUN_0000df16+0x174>
    e07e:  45ad                 li a1,11
    e080:  4501                 li a0,0
    e082:  9c2fa0ef           jal ra,8244 <debug_state_save>
    e086:  4785                 li a5,1
    e088:  a8ad                 j e102 <FUN_0000df16+0x1ec>
    e08a:  c6840793           addi a5,s0,-920
    e08e:  02000613           li a2,32
    e092:  4581                 li a1,0
    e094:  853e                 mv a0,a5
    e096:  e55fb0ef           jal ra,9eea <memset>
    e09a:  fc843783           ld a5,-56(s0)
    e09e:  4fc8                 lw a0,28(a5)
    e0a0:  fc843783           ld a5,-56(s0)
    e0a4:  12c78593           addi a1,a5,300
    e0a8:  fc843783           ld a5,-56(s0)
    e0ac:  5790                 lw a2,40(a5)
    e0ae:  fc843783           ld a5,-56(s0)
    e0b2:  37878693           addi a3,a5,888
    e0b6:  fc843783           ld a5,-56(s0)
    e0ba:  53d8                 lw a4,36(a5)
    e0bc:  fc843783           ld a5,-56(s0)
    e0c0:  02c78813           addi a6,a5,44
    e0c4:  c6840793           addi a5,s0,-920
    e0c8:  88c2                 mv a7,a6
    e0ca:  883a                 mv a6,a4
    e0cc:  10000713           li a4,256
    e0d0:  e5df20ef           jal ra,f2c <FUN_00000f2c>
    e0d4:  c6840793           addi a5,s0,-920
    e0d8:  10000613           li a2,256
    e0dc:  85be                 mv a1,a5
    e0de:  fd043503           ld a0,-48(s0)
    e0e2:  fc1fb0ef           jal ra,a0a2 <FUN_0000a0a2>
    e0e6:  87aa                 mv a5,a0
    e0e8:  fcf42e23           sw a5,-36(s0)
    e0ec:  fdc42783           lw a5,-36(s0)
    e0f0:  2781                 sext.w a5,a5
    e0f2:  c799                 beqz a5,e100 <FUN_0000df16+0x1ea>
    e0f4:  45b1                 li a1,12
    e0f6:  4501                 li a0,0
    e0f8:  94cfa0ef           jal ra,8244 <debug_state_save>
    e0fc:  4785                 li a5,1
    e0fe:  a011                 j e102 <FUN_0000df16+0x1ec>
    e100:  4781                 li a5,0
    e102:  853e                 mv a0,a5
    e104:  3a813083           ld ra,936(sp)
    e108:  3a013403           ld s0,928(sp)
    e10c:  3b010113           addi sp,sp,944
    e110:  8082                 ret

000000000000e112 <usb_bgr_disable>:
    e112:  1101                 addi sp,sp,-32
    e114:  ec22                 sd s0,24(sp)
    e116:  1000                 addi s0,sp,32
    e118:  fe042623           sw zero,-20(s0)
    e11c:  020027b7           lui a5,0x2002
    e120:  a8c78793           addi a5,a5,-1396 # 2001a8c <gpio_get_boot_device+0x1ff36
    e124:  439c                 lw a5,0(a5)
    e126:  fef42623           sw a5,-20(s0)
    e12a:  fec42703           lw a4,-20(s0)
    e12e:  ff0007b7           lui a5,0xff000
    e132:  eff78793           addi a5,a5,-257 # fffffffffefffeff <gpio_get_boot_device
    e136:  8ff9                 and a5,a5,a4
    e138:  fef42623           sw a5,-20(s0)
    e13c:  020027b7           lui a5,0x2002
    e140:  a8c78793           addi a5,a5,-1396 # 2001a8c <gpio_get_boot_device+0x1ff36
    e144:  fec42703           lw a4,-20(s0)
    e148:  c398                 sw a4,0(a5)
    e14a:  0001                 nop
    e14c:  6462                 ld s0,24(sp)
    e14e:  6105                 addi sp,sp,32
    e150:  8082                 ret

000000000000e152 <usb_bgr_enable>:
    e152:  1101                 addi sp,sp,-32
    e154:  ec06                 sd ra,24(sp)
    e156:  e822                 sd s0,16(sp)
    e158:  1000                 addi s0,sp,32
    e15a:  fe042623           sw zero,-20(s0)
    e15e:  020027b7           lui a5,0x2002
    e162:  a8c78793           addi a5,a5,-1396 # 2001a8c <gpio_get_boot_device+0x1ff36
    e166:  439c                 lw a5,0(a5)
    e168:  fef42623           sw a5,-20(s0)
    e16c:  fec42703           lw a4,-20(s0)
    e170:  010007b7           lui a5,0x1000
    e174:  8fd9                 or a5,a5,a4
    e176:  fef42623           sw a5,-20(s0)
    e17a:  020027b7           lui a5,0x2002
    e17e:  a8c78793           addi a5,a5,-1396 # 2001a8c <gpio_get_boot_device+0x1ff36
    e182:  fec42703           lw a4,-20(s0)
    e186:  c398                 sw a4,0(a5)
    e188:  03200513           li a0,50
    e18c:  ff9fb0ef           jal ra,a184 <udelay>
    e190:  020027b7           lui a5,0x2002
    e194:  a8c78793           addi a5,a5,-1396 # 2001a8c <gpio_get_boot_device+0x1ff36
    e198:  439c                 lw a5,0(a5)
    e19a:  fef42623           sw a5,-20(s0)
    e19e:  fec42783           lw a5,-20(s0)
    e1a2:  1007e793           ori a5,a5,256
    e1a6:  fef42623           sw a5,-20(s0)
    e1aa:  020027b7           lui a5,0x2002
    e1ae:  a8c78793           addi a5,a5,-1396 # 2001a8c <gpio_get_boot_device+0x1ff36
    e1b2:  fec42703           lw a4,-20(s0)
    e1b6:  c398                 sw a4,0(a5)
    e1b8:  03200513           li a0,50
    e1bc:  fc9fb0ef           jal ra,a184 <udelay>
    e1c0:  0001                 nop
    e1c2:  60e2                 ld ra,24(sp)
    e1c4:  6442                 ld s0,16(sp)
    e1c6:  6105                 addi sp,sp,32
    e1c8:  8082                 ret

000000000000e1ca <usb_phy_disable>:
    e1ca:  1101                 addi sp,sp,-32
    e1cc:  ec22                 sd s0,24(sp)
    e1ce:  1000                 addi s0,sp,32
    e1d0:  fe042623           sw zero,-20(s0)
    e1d4:  020027b7           lui a5,0x2002
    e1d8:  a7078793           addi a5,a5,-1424 # 2001a70 <gpio_get_boot_device+0x1ff36
    e1dc:  439c                 lw a5,0(a5)
    e1de:  fef42623           sw a5,-20(s0)
    e1e2:  fec42703           lw a4,-20(s0)
    e1e6:  c00007b7           lui a5,0xc0000
    e1ea:  17fd                 addi a5,a5,-1
    e1ec:  8ff9                 and a5,a5,a4
    e1ee:  fef42623           sw a5,-20(s0)
    e1f2:  020027b7           lui a5,0x2002
    e1f6:  a7078793           addi a5,a5,-1424 # 2001a70 <gpio_get_boot_device+0x1ff36
    e1fa:  fec42703           lw a4,-20(s0)
    e1fe:  c398                 sw a4,0(a5)
    e200:  0001                 nop
    e202:  6462                 ld s0,24(sp)
    e204:  6105                 addi sp,sp,32
    e206:  8082                 ret

000000000000e208 <usb_clk_phy_enable>:
    e208:  1101                 addi sp,sp,-32
    e20a:  ec06                 sd ra,24(sp)
    e20c:  e822                 sd s0,16(sp)
    e20e:  1000                 addi s0,sp,32
    e210:  fe042623           sw zero,-20(s0)
    e214:  020027b7           lui a5,0x2002
    e218:  a7078793           addi a5,a5,-1424 # 2001a70 <gpio_get_boot_device+0x1ff36
    e21c:  439c                 lw a5,0(a5)
    e21e:  fef42623           sw a5,-20(s0)
    e222:  fec42703           lw a4,-20(s0)
    e226:  800007b7           lui a5,0x80000
    e22a:  8fd9                 or a5,a5,a4
    e22c:  fef42623           sw a5,-20(s0)
    e230:  020027b7           lui a5,0x2002
    e234:  a7078793           addi a5,a5,-1424 # 2001a70 <gpio_get_boot_device+0x1ff36
    e238:  fec42703           lw a4,-20(s0)
    e23c:  c398                 sw a4,0(a5)
    e23e:  03200513           li a0,50
    e242:  f43fb0ef           jal ra,a184 <udelay>
    e246:  020027b7           lui a5,0x2002
    e24a:  a7078793           addi a5,a5,-1424 # 2001a70 <gpio_get_boot_device+0x1ff36
    e24e:  439c                 lw a5,0(a5)
    e250:  fef42623           sw a5,-20(s0)
    e254:  fec42703           lw a4,-20(s0)
    e258:  400007b7           lui a5,0x40000
    e25c:  8fd9                 or a5,a5,a4
    e25e:  fef42623           sw a5,-20(s0)
    e262:  020027b7           lui a5,0x2002
    e266:  a7078793           addi a5,a5,-1424 # 2001a70 <gpio_get_boot_device+0x1ff36
    e26a:  fec42703           lw a4,-20(s0)
    e26e:  c398                 sw a4,0(a5)
    e270:  03200513           li a0,50
    e274:  f11fb0ef           jal ra,a184 <udelay>
    e278:  0001                 nop
    e27a:  60e2                 ld ra,24(sp)
    e27c:  6442                 ld s0,16(sp)
    e27e:  6105                 addi sp,sp,32
    e280:  8082                 ret

000000000000e282 <FUN_0000e282>:
    e282:  1101                 addi sp,sp,-32
    e284:  ec22                 sd s0,24(sp)
    e286:  1000                 addi s0,sp,32
    e288:  fe042623           sw zero,-20(s0)
    e28c:  041007b7           lui a5,0x4100
    e290:  42078793           addi a5,a5,1056 # 4100420 <gpio_get_boot_device+0x40f208
    e294:  439c                 lw a5,0(a5)
    e296:  fef42623           sw a5,-20(s0)
    e29a:  fec42783           lw a5,-20(s0)
    e29e:  0017e793           ori a5,a5,1
    e2a2:  fef42623           sw a5,-20(s0)
    e2a6:  041007b7           lui a5,0x4100
    e2aa:  42078793           addi a5,a5,1056 # 4100420 <gpio_get_boot_device+0x40f208
    e2ae:  fec42703           lw a4,-20(s0)
    e2b2:  c398                 sw a4,0(a5)
    e2b4:  041007b7           lui a5,0x4100
    e2b8:  4107879b           addiw a5,a5,1040
    e2bc:  fef42423           sw a5,-24(s0)
    e2c0:  fe042223           sw zero,-28(s0)
    e2c4:  fe846783           lwu a5,-24(s0)
    e2c8:  439c                 lw a5,0(a5)
    e2ca:  fef42223           sw a5,-28(s0)
    e2ce:  fe442783           lw a5,-28(s0)
    e2d2:  9bdd                 andi a5,a5,-9
    e2d4:  fef42223           sw a5,-28(s0)
    e2d8:  fe442783           lw a5,-28(s0)
    e2dc:  0207e793           ori a5,a5,32
    e2e0:  fef42223           sw a5,-28(s0)
    e2e4:  fe846783           lwu a5,-24(s0)
    e2e8:  873e                 mv a4,a5
    e2ea:  fe442783           lw a5,-28(s0)
    e2ee:  c31c                 sw a5,0(a4)
    e2f0:  0001                 nop
    e2f2:  6462                 ld s0,24(sp)
    e2f4:  6105                 addi sp,sp,32
    e2f6:  8082                 ret

000000000000e2f8 <usb_init>:
    e2f8:  1141                 addi sp,sp,-16
    e2fa:  e406                 sd ra,8(sp)
    e2fc:  e022                 sd s0,0(sp)
    e2fe:  0800                 addi s0,sp,16
    e300:  e13ff0ef           jal ra,e112 <usb_bgr_disable>
    e304:  ec7ff0ef           jal ra,e1ca <usb_phy_disable>
    e308:  e4bff0ef           jal ra,e152 <usb_bgr_enable>
    e30c:  efdff0ef           jal ra,e208 <usb_clk_phy_enable>
    e310:  0001                 nop
    e312:  60a2                 ld ra,8(sp)
    e314:  6402                 ld s0,0(sp)
    e316:  0141                 addi sp,sp,16
    e318:  8082                 ret

000000000000e31a <syscon_read_fel_button>:
    e31a:  1101                 addi sp,sp,-32
    e31c:  ec06                 sd ra,24(sp)
    e31e:  e822                 sd s0,16(sp)
    e320:  1000                 addi s0,sp,32
    e322:  fe042623           sw zero,-20(s0)
    e326:  fe042423           sw zero,-24(s0)
    e32a:  b7bf90ef           jal ra,7ea4 <brom_config_bit_4>
    e32e:  87aa                 mv a5,a0
    e330:  c399                 beqz a5,e336 <syscon_read_fel_button+0x1c>
    e332:  4781                 li a5,0
    e334:  a8a1                 j e38c <syscon_read_fel_button+0x72>
    e336:  4791                 li a5,4
    e338:  fef42623           sw a5,-20(s0)
    e33c:  a825                 j e374 <syscon_read_fel_button+0x5a>
    e33e:  0fa00513           li a0,250
    e342:  e43fb0ef           jal ra,a184 <udelay>
    e346:  030007b7           lui a5,0x3000
    e34a:  02478793           addi a5,a5,36 # 3000024 <gpio_get_boot_device+0x2ff1c8e>
    e34e:  439c                 lw a5,0(a5)
    e350:  2781                 sext.w a5,a5
    e352:  0087d79b           srliw a5,a5,0x8
    e356:  2781                 sext.w a5,a5
    e358:  8b85                 andi a5,a5,1
    e35a:  0007871b           sext.w a4,a5
    e35e:  fe842783           lw a5,-24(s0)
    e362:  9fb9                 addw a5,a5,a4
    e364:  2781                 sext.w a5,a5
    e366:  fef42423           sw a5,-24(s0)
    e36a:  fec42783           lw a5,-20(s0)
    e36e:  37fd                 addiw a5,a5,-1
    e370:  fef42623           sw a5,-20(s0)
    e374:  fec42783           lw a5,-20(s0)
    e378:  2781                 sext.w a5,a5
    e37a:  fcf042e3           bgtz a5,e33e <syscon_read_fel_button+0x24>
    e37e:  fe842783           lw a5,-24(s0)
    e382:  2781                 sext.w a5,a5
    e384:  e399                 bnez a5,e38a <syscon_read_fel_button+0x70>
    e386:  57fd                 li a5,-1
    e388:  a011                 j e38c <syscon_read_fel_button+0x72>
    e38a:  4781                 li a5,0
    e38c:  853e                 mv a0,a5
    e38e:  60e2                 ld ra,24(sp)
    e390:  6442                 ld s0,16(sp)
    e392:  6105                 addi sp,sp,32
    e394:  8082                 ret

000000000000e396 <gpio_get_boot_device>:
    e396:  1101                 addi sp,sp,-32
    e398:  ec06                 sd ra,24(sp)
    e39a:  e822                 sd s0,16(sp)
    e39c:  1000                 addi s0,sp,32
    e39e:  fe042623           sw zero,-20(s0)
    e3a2:  020007b7           lui a5,0x2000
    e3a6:  06078793           addi a5,a5,96 # 2000060 <gpio_get_boot_device+0x1ff1cca>
    e3aa:  ff450737           lui a4,0xff450
    e3ae:  377d                 addiw a4,a4,-1
    e3b0:  c398                 sw a4,0(a5)
    e3b2:  4551                 li a0,20
    e3b4:  dd1fb0ef           jal ra,a184 <udelay>
    e3b8:  030007b7           lui a5,0x3000
    e3bc:  02478793           addi a5,a5,36 # 3000024 <gpio_get_boot_device+0x2ff1c8e>
    e3c0:  439c                 lw a5,0(a5)
    e3c2:  2781                 sext.w a5,a5
    e3c4:  00b7d79b           srliw a5,a5,0xb
    e3c8:  2781                 sext.w a5,a5
    e3ca:  8b8d                 andi a5,a5,3
    e3cc:  fef42623           sw a5,-20(s0)
    e3d0:  020007b7           lui a5,0x2000
    e3d4:  06078793           addi a5,a5,96 # 2000060 <gpio_get_boot_device+0x1ff1cca>
    e3d8:  577d                 li a4,-1
    e3da:  c398                 sw a4,0(a5)
    e3dc:  fec42783           lw a5,-20(s0)
    e3e0:  853e                 mv a0,a5
    e3e2:  60e2                 ld ra,24(sp)
    e3e4:  6442                 ld s0,16(sp)
    e3e6:  6105                 addi sp,sp,32
    e3e8:  8082                 ret
    e3ea:  0000                 unimp
    e3ec:  0000                 unimp
           ...

#303 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-08-20 14:28:46

贴一下D1 BROM相关逆向信息

代码段,数据段,地址

0x00000000 text
0x0000e3f0 data

符号表

0x00000022 fel_entry
0x00000028 normal_entry
0x0000010e sram_clear_stack
0x00000126 prcm_enable_rtc_clocks
0x00000166 debug_state_init
0x000001b4 boot_jump
0x000001bc FUN_000001bc
0x0000020e FUN_0000020e
0x0000026a FUN_0000026a
0x000002c6 FUN_000002c6
0x0000034e FUN_0000034e
0x0000047e FUN_0000047e
0x00000536 FUN_00000536
0x0000056a FUN_0000056a
0x000005e6 FUN_000005e6
0x00000660 FUN_00000660
0x00000a68 FUN_00000a68
0x00000afa FUN_00000afa
0x00000bbe FUN_00000bbe
0x00000c4c FUN_00000c4c
0x00000cce sunxi_sha_calc
0x00000f2c FUN_00000f2c
0x0000124a FUN_0000124a
0x00001396 FUN_00001396
0x00001424 FUN_00001424
0x0000150a FUN_0000150a
0x00001598 FUN_00001598
0x0000161e FUN_0000161e
0x00001772 FUN_00001772
0x0000199e FUN_0000199e
0x00001c3e FUN_00001c3e
0x00001cb4 FUN_00001cb4
0x00001e12 FUN_00001e12
0x00001f22 FUN_00001f22
0x000020ae FUN_000020ae
0x00002124 FUN_00002124
0x00002152 FUN_00002152
0x000021a8 ALIGN
0x000021f0 FUN_000021f0
0x00002256 FUN_00002256
0x0000239e FUN_0000239e
0x00002464 FUN_00002464
0x0000256e FUN_0000256e
0x00002742 FUN_00002742
0x0000279e FUN_0000279e
0x00002840 FUN_00002840
0x000028e0 FUN_000028e0
0x00002952 boot_verify_image
0x00002b68 boot_from_sdc0
0x00002bbc boot_from_sdc2
0x00002c88 FUN_00002c88
0x00002cdc FUN_00002cdc
0x00002d42 try_boot_process
0x00002e16 sid_boot_process
0x00002f16 gpio_boot_process
0x0000306c normal_boot_process
0x000030de attempt_fast_boot
0x00003226 maybe_attempt_fast_boot
0x00003284 normal_boot
0x00003320 trap_vector
0x000033c2 FUN_000033c2
0x00003462 FUN_00003462
0x000034ca FUN_000034ca
0x00003514 FUN_00003514
0x000035c4 FUN_000035c4
0x00003824 FUN_00003824
0x00003b08 memset
0x00003b44 load_boot0_from_sd
0x00003eaa boot_from_sd
0x00003f82 boot_from_emmc
0x00004208 FUN_00004208
0x00004238 FUN_00004238
0x00004264 FUN_00004264
0x000043e2 FUN_000043e2
0x000044d8 FUN_000044d8
0x00004596 FUN_00004596
0x0000463e FUN_0000463e
0x000048dc FUN_000048dc
0x00004924 FUN_00004924
0x000049aa FUN_000049aa
0x00004be4 FUN_00004be4
0x00004d1e FUN_00004d1e
0x00005064 FUN_00005064
0x000057c0 FUN_000057c0
0x00005858 FUN_00005858
0x0000588e FUN_0000588e
0x0000593a FUN_0000593a
0x00005984 FUN_00005984
0x000059d0 FUN_000059d0
0x00005a22 FUN_00005a22
0x00005b68 FUN_00005b68
0x00005cc4 FUN_00005cc4
0x00005d2c FUN_00005d2c
0x00005dc4 FUN_00005dc4
0x00005e22 FUN_00005e22
0x0000602c FUN_0000602c
0x0000608e FUN_0000608e
0x000060bc FUN_000060bc
0x000065ee FUN_000065ee
0x00006680 FUN_00006680
0x00006778 sd_read_sectors
0x00006846 FUN_00006846
0x0000694e FUN_0000694e
0x00006a2e FUN_00006a2e
0x00006ab0 FUN_00006ab0
0x00006b48 FUN_00006b48
0x00006b74 FUN_00006b74
0x00006bc0 FUN_00006bc0
0x00006c0c FUN_00006c0c
0x00006cec FUN_00006cec
0x00006d34 FUN_00006d34
0x00006d7c FUN_00006d7c
0x00006e0c FUN_00006e0c
0x00006e44 FUN_00006e44
0x00006ea0 FUN_00006ea0
0x00006edc FUN_00006edc
0x00006fd0 FUN_00006fd0
0x00007078 FUN_00007078
0x000070de FUN_000070de
0x00007146 FUN_00007146
0x000071b6 FUN_000071b6
0x00007554 FUN_00007554
0x00007590 FUN_00007590
0x00007688 FUN_00007688
0x000076c2 FUN_000076c2
0x000078fc FUN_000078fc
0x00007916 FUN_00007916
0x00007ad4 FUN_00007ad4
0x00007d1c FUN_00007d1c
0x00007d66 sid_readl
0x00007d96 FUN_00007d96
0x00007dba sid_init_brom_config
0x00007e14 sid_get_boot_mode
0x00007e44 brom_config_bit_2
0x00007e74 brom_config_skip_cache_setup
0x00007ea4 brom_config_bit_4
0x00007ec6 brom_config_bit_5
0x00007ef8 brom_config_bit_7_switch
0x00007f4c brom_config_bit_6
0x00007f70 FUN_00007f70
0x00007f80 brom_config_bit_13
0x00007fa6 brom_config_lower_ce_freq
0x00007fcc brom_config_disable_fel
0x00007ff0 FUN_00007ff0
0x00008000 brom_config_bit_10
0x00008024 brom_config_bit_15
0x0000804a brom_config_bit_8
0x0000806e brom_config_bit_1
0x00008090 brom_config_bit_12
0x000080b6 sid_get_boot_device
0x00008244 debug_state_save
0x00008388 debug_select_word
0x00008428 rtc_brom_debug
0x00008612 boot0_check_magic
0x000086b6 FUN_000086b6
0x000088c8 FUN_000088c8
0x00008942 FUN_00008942
0x00008a52 FUN_00008a52
0x00008a9a ccu_enable_pll_lock
0x00008b66 ccu_disable_pll_lock_output
0x00008ba4 ccu_enable_pll_output
0x00008be0 ccu_enable_pll_ldo
0x00008c26 ccu_enable_pll_cpux
0x00008cee FUN_00008cee
0x00008dce FUN_00008dce
0x00008ea2 FUN_00008ea2
0x00008f32 FUN_00008f32
0x00008fd8 FUN_00008fd8
0x00009068 ccu_set_cpux_to_24_MHz
0x000090dc ccu_set_psi_to_24_MHz
0x00009152 ccu_set_apb_to_24_MHz
0x00009228 ccu_set_ce_to_hosc
0x000092c8 FUN_000092c8
0x0000931e FUN_0000931e
0x00009418 FUN_00009418
0x0000947c ccu_reset_mbus_dram
0x000094b4 ccu_set_ce_reset
0x00009516 ccu_set_ce_gating
0x0000956c ccu_set_ce_to_pll
0x00009668 ccu_set_ce_clocks
0x000096fa ccu_init_cpu_ce_clocks
0x0000977c set_audio_codec_gating_bias
0x00009816 set_bg_trim_voltage
0x00009860 sid_read_voltages_0x14
0x000098b2 sid_read_voltage_0x1c
0x000098de prcm_set_gpu_pwroff_gating
0x00009916 prcm_set_ldo_voltage_bias
0x0000996c rtc_enable_hosc_iosc
0x000099c0 ccu_init_bus_clocks
0x000099e6 ccu_init
0x00009a00 debug_syscon
0x00009a48 rtc_get_fast_boot_status
0x00009a6c FUN_00009a6c
0x00009ac6 gpio_enable_jtag_pf
0x00009b1e riscv_init_caches
0x00009b4a fel_boot
0x00009ba4 boot_finish
0x00009bda trap_handler
0x00009c3c FUN_00009c3c
0x00009d08 FUN_00009d08
0x00009d30 FUN_00009d30
0x00009d88 FUN_00009d88
0x00009e8a memcpy
0x00009eea memset
0x00009f3a FUN_00009f3a
0x00009f6c FUN_00009f6c
0x0000a066 memset
0x0000a0a2 FUN_0000a0a2
0x0000a108 strncmp
0x0000a17e rdtime
0x0000a184 udelay
0x0000a1ae udelay_x800
0x0000a1d8 FUN_0000a1d8
0x0000a1e6 FUN_0000a1e6
0x0000a1f4 FUN_0000a1f4
0x0000a244 FUN_0000a244
0x0000a278 FUN_0000a278
0x0000a2c2 FUN_0000a2c2
0x0000a352 FUN_0000a352
0x0000a3e2 FUN_0000a3e2
0x0000a44c FUN_0000a44c
0x0000a4ea FUN_0000a4ea
0x0000a548 FUN_0000a548
0x0000a56e FUN_0000a56e
0x0000a5ca FUN_0000a5ca
0x0000a652 FUN_0000a652
0x0000a6ee FUN_0000a6ee
0x0000a73c FUN_0000a73c
0x0000a78e FUN_0000a78e
0x0000a7f6 do_fel_write
0x0000a93a do_fel_read
0x0000a9fa FUN_0000a9fa
0x0000aa4e FUN_0000aa4e
0x0000aab6 FUN_0000aab6
0x0000ab08 FUN_0000ab08
0x0000ad66 FUN_0000ad66
0x0000addc FUN_0000addc
0x0000ae64 usb_irq_handler
0x0000ae80 FUN_0000ae80
0x0000aedc FUN_0000aedc
0x0000afa2 FUN_0000afa2
0x0000afd6 interrupt_handler
0x0000b026 FUN_0000b026
0x0000b058 FUN_0000b058
0x0000b07c disable_interrupts
0x0000b09a enable_interrupts
0x0000b0b8 clear_interrupts
0x0000b0cc FUN_0000b0cc
0x0000b0f0 FUN_0000b0f0
0x0000b10e FUN_0000b10e
0x0000b1ac FUN_0000b1ac
0x0000b212 FUN_0000b212
0x0000b278 FUN_0000b278
0x0000b2c6 FUN_0000b2c6
0x0000b316 FUN_0000b316
0x0000b346 FUN_0000b346
0x0000b394 FUN_0000b394
0x0000b3e4 FUN_0000b3e4
0x0000b414 FUN_0000b414
0x0000b524 FUN_0000b524
0x0000b580 FUN_0000b580
0x0000b5d6 FUN_0000b5d6
0x0000b62c FUN_0000b62c
0x0000b682 FUN_0000b682
0x0000b6be FUN_0000b6be
0x0000b70c FUN_0000b70c
0x0000b746 FUN_0000b746
0x0000b7ba FUN_0000b7ba
0x0000b83a FUN_0000b83a
0x0000b876 FUN_0000b876
0x0000b8c4 FUN_0000b8c4
0x0000b908 FUN_0000b908
0x0000ba36 FUN_0000ba36
0x0000ba8a FUN_0000ba8a
0x0000bb68 FUN_0000bb68
0x0000bb76 FUN_0000bb76
0x0000bbb0 FUN_0000bbb0
0x0000bbea FUN_0000bbea
0x0000bc24 FUN_0000bc24
0x0000bc6c FUN_0000bc6c
0x0000bcb4 FUN_0000bcb4
0x0000bcfc FUN_0000bcfc
0x0000bd28 FUN_0000bd28
0x0000bd68 FUN_0000bd68
0x0000be18 FUN_0000be18
0x0000bff4 FUN_0000bff4
0x0000c140 FUN_0000c140
0x0000c3a2 FUN_0000c3a2
0x0000c60c FUN_0000c60c
0x0000c640 FUN_0000c640
0x0000c66a FUN_0000c66a
0x0000c786 FUN_0000c786
0x0000c7ba FUN_0000c7ba
0x0000c884 FUN_0000c884
0x0000cbba FUN_0000cbba
0x0000ccd4 FUN_0000ccd4
0x0000cea6 FUN_0000cea6
0x0000d08e fel_irq_handler
0x0000d3c0 FUN_0000d3c0
0x0000d3e2 FUN_0000d3e2
0x0000d488 fel_main
0x0000d69e FUN_0000d69e
0x0000d712 FUN_0000d712
0x0000d796 FUN_0000d796
0x0000d83c FUN_0000d83c
0x0000da38 FUN_0000da38
0x0000dbc6 FUN_0000dbc6
0x0000dc6c FUN_0000dc6c
0x0000dd08 FUN_0000dd08
0x0000dd5e FUN_0000dd5e
0x0000dec0 FUN_0000dec0
0x0000df16 FUN_0000df16
0x0000e112 usb_bgr_disable
0x0000e152 usb_bgr_enable
0x0000e1ca usb_phy_disable
0x0000e208 usb_clk_phy_enable
0x0000e282 FUN_0000e282
0x0000e2f8 usb_init
0x0000e31a syscon_read_fel_button
0x0000e396 gpio_get_boot_device

#304 Re: 全志 SOC » 众人拾柴-F1C200S通过SPI使用ESP8089或ESP8266做无线网卡 » 2021-08-20 12:13:07

迪卡 说:
twzy 说:

得把flash拆了吧,这条不能没有

ESP8266这种用法,是不是固件由驱动下载进去,然后8266仅仅作为一个网卡,本身没有实现任何协议栈,具体的协议栈还是由linux提供的,这种方式,如果想裸奔使用,欠缺哪些东西。看这带宽眼谗,比起串口好太多了。

#305 Re: 全志 SOC » 全志有fel模式,瑞芯微有maskrom模式,为了给裸机开发舔砖加瓦,fel模式有xfel工具,那么maskrom模式就需要xrock工具了 » 2021-08-20 11:41:14

利用xrock烧写瑞芯微RK3228裸机镜像

编译源码,生成的目标文件在output目录下

make clean
make CROSS_COMPILE=/path/to/arm-none-linux-gnueabihf- PLATFORM=arm32-rk3288

进入maskrom模式,利用xrock烧写镜像

sudo xrock maskrom rk3288_ddr_400MHz_v1.09.bin rk3288_usbplug_v2.58.bin;
sleep 3;
sudo xrock flash write 64 xbootpak.bin;
sudo xrock reset;

RK3288启动log信息

DDR Version 1.09 20201119
In
SRX
Channel a: DDR3 400MHz
Bus Width=32 Col=10 Bank=8 Row=15 CS=1 Die Bus-Width=16 Size=1024MB
Channel b: DDR3 400MHz
Bus Width=32 Col=10 Bank=8 Row=15 CS=1 Die Bus-Width=16 Size=1024MB
OUT
       _                   _                     
 _  _ | |___ _____ _____ _| |_                   
\ \/ /|  _  |  _  |  _  |_   _|  (C) 2007-2021   
 )  ( | |_| | |_| | |_| | | |____JIANJUN.JIANG__ 
/_/\_\|_____|_____|_____| |_____________________|
V3.0.0 (Aug 20 2021 - 11:34:50) - [x3288][X3288 Based On RK3288 SOC]
[    0.000000] Probe device 'blk-romdisk.0' with blk-romdisk
[    0.000010] Probe device 'usbphy480m' with clk-fixed
[    0.000020] Probe device 'xin24m' with clk-fixed
[    0.000030] Probe device 'xin32k' with clk-fixed
[    0.000040] Probe device 'apll' with clk-rk3288-pll
[    0.000050] Probe device 'dpll' with clk-rk3288-pll
[    0.000060] Probe device 'cpll' with clk-rk3288-pll
[    0.000070] Probe device 'gpll' with clk-rk3288-pll
[    0.000080] Probe device 'npll' with clk-rk3288-pll
[    0.000090] Probe device 'gate-gpll' with clk-rk3288-gate
[    0.000100] Probe device 'gate-cpll' with clk-rk3288-gate
[    0.000110] Probe device 'mux-pd-bus-src' with clk-rk3288-mux
[    0.000120] Probe device 'div-pd-bus-src' with clk-rk3288-divider
[    0.000130] Probe device 'div-pd-bus' with clk-rk3288-divider
[    0.000140] Probe device 'gate-aclk-bus' with clk-rk3288-gate
[    0.000150] Probe device 'aclk-bus-pre' with clk-link
[    0.000160] Probe device 'gate-cpu-pclk' with clk-rk3288-gate
[    0.000170] Probe device 'div-cpu-pclk' with clk-rk3288-divider
[    0.000180] Probe device 'pclk-bus-pre' with clk-link
[    0.000190] Probe device 'gate-cpu-hclk' with clk-rk3288-gate
[    0.000200] Probe device 'div-cpu-hclk' with clk-rk3288-divider
[    0.000210] Probe device 'hclk-bus-pre' with clk-link
[    0.000220] Probe device 'div-pclk-pd-alive' with clk-rk3288-divider
[    0.000230] Probe device 'pclk-pd-alive' with clk-link
[    0.000240] Probe device 'gate-pclk-pd-pmu' with clk-rk3288-gate
[    0.000250] Probe device 'div-pclk-pd-pmu' with clk-rk3288-divider
[    0.000260] Probe device 'pclk-pd-pmu' with clk-link
[    0.000270] Probe device 'mux-clk-peri' with clk-rk3288-mux
[    0.000280] Probe device 'gate-clk-peri' with clk-rk3288-gate
[    0.000290] Probe device 'div-clk-peri' with clk-rk3288-divider
[    0.000300] Probe device 'ratio-pclk-peri' with clk-rk3288-ratio
[    0.000310] Probe device 'gate-pclk-peri-pre' with clk-rk3288-gate
[    0.000320] Probe device 'pclk-peri-pre' with clk-link
[    0.000330] Probe device 'ratio-hclk-peri' with clk-rk3288-ratio
[    0.000340] Probe device 'gate-hclk-peri-pre' with clk-rk3288-gate
[    0.000350] Probe device 'hclk-peri-pre' with clk-link
[    0.000360] Probe device 'gate-aclk-peri-pre' with clk-rk3288-gate
[    0.000370] Probe device 'aclk-peri-pre' with clk-link
[    0.000380] Probe device 'mux-aclk-vio0' with clk-rk3288-mux
[    0.000390] Probe device 'gate-aclk-vio0' with clk-rk3288-gate
[    0.000400] Probe device 'div-aclk-vio0' with clk-rk3288-divider
[    0.000410] Probe device 'aclk-vio0-pre' with clk-link
[    0.000420] Probe device 'div-hclk-vio' with clk-rk3288-divider
[    0.000430] Probe device 'hclk-vio-pre' with clk-link
[    0.000440] Probe device 'mux-aclk-vio1' with clk-rk3288-mux
[    0.000450] Probe device 'gate-aclk-vio1' with clk-rk3288-gate
[    0.000460] Probe device 'div-aclk-vio1' with clk-rk3288-divider
[    0.000470] Probe device 'aclk-vio1-pre' with clk-link
[    0.000480] Probe device 'mux-aclk-rga' with clk-rk3288-mux
[    0.000490] Probe device 'gate-aclk-rga' with clk-rk3288-gate
[    0.000500] Probe device 'div-aclk-rga' with clk-rk3288-divider
[    0.000510] Probe device 'aclk-rga-pre' with clk-link
[    0.000520] Probe device 'mux-clk-rga' with clk-rk3288-mux
[    0.000530] Probe device 'gate-clk-rga' with clk-rk3288-gate
[    0.000540] Probe device 'div-clk-rga' with clk-rk3288-divider
[    0.000550] Probe device 'clk-rga' with clk-link
[    0.000560] Probe device 'gate-pclk-rkpwm' with clk-rk3288-gate
[    0.000570] Probe device 'link-pclk-rkpwm' with clk-link
[    0.000580] Probe device 'gate-timer0' with clk-rk3288-gate
[    0.000590] Probe device 'gate-timer1' with clk-rk3288-gate
[    0.000600] Probe device 'gate-timer2' with clk-rk3288-gate
[    0.000610] Probe device 'gate-timer3' with clk-rk3288-gate
[    0.000620] Probe device 'gate-timer4' with clk-rk3288-gate
[    0.000630] Probe device 'gate-timer5' with clk-rk3288-gate
[    0.000640] Probe device 'link-timer0' with clk-link
[    0.000650] Probe device 'link-timer1' with clk-link
[    0.000660] Probe device 'link-timer2' with clk-link
[    0.000670] Probe device 'link-timer3' with clk-link
[    0.000680] Probe device 'link-timer4' with clk-link
[    0.000690] Probe device 'link-timer5' with clk-link
[    0.000700] Probe device 'gate-saradc' with clk-rk3288-gate
[    0.000710] Probe device 'div-saradc' with clk-rk3288-divider
[    0.000720] Probe device 'gate-pclk-saradc' with clk-rk3288-gate
[    0.000730] Probe device 'link-pclk-saradc' with clk-link
[    0.000740] Probe device 'mux-uart0-src' with clk-rk3288-mux
[    0.000750] Probe device 'gate-uart0-src' with clk-rk3288-gate
[    0.000760] Probe device 'div-uart0-src' with clk-rk3288-divider
[    0.000770] Probe device 'gate-uart0-frac' with clk-rk3288-gate
[    0.000780] Probe device 'factor-uart0-frac' with clk-rk3288-factor
[    0.000790] Probe device 'mux-uart0' with clk-rk3288-mux
[    0.000800] Probe device 'link-uart0' with clk-link
[    0.000810] Probe device 'mux-uart1234-src' with clk-rk3288-mux
[    0.000820] Probe device 'gate-uart1-src' with clk-rk3288-gate
[    0.000830] Probe device 'div-uart1-src' with clk-rk3288-divider
[    0.000840] Probe device 'gate-uart1-frac' with clk-rk3288-gate
[    0.000850] Probe device 'factor-uart1-frac' with clk-rk3288-factor
[    0.000860] Probe device 'mux-uart1' with clk-rk3288-mux
[    0.000870] Probe device 'link-uart1' with clk-link
[    0.000880] Probe device 'gate-uart2-src' with clk-rk3288-gate
[    0.000890] Probe device 'div-uart2-src' with clk-rk3288-divider
[    0.000900] Probe device 'gate-uart2-frac' with clk-rk3288-gate
[    0.000910] Probe device 'factor-uart2-frac' with clk-rk3288-factor
[    0.000920] Probe device 'mux-uart2' with clk-rk3288-mux
[    0.000930] Probe device 'link-uart2' with clk-link
[    0.000940] Probe device 'gate-uart3-src' with clk-rk3288-gate
[    0.000950] Probe device 'div-uart3-src' with clk-rk3288-divider
[    0.000960] Probe device 'gate-uart3-frac' with clk-rk3288-gate
[    0.000970] Probe device 'factor-uart3-frac' with clk-rk3288-factor
[    0.000980] Probe device 'mux-uart3' with clk-rk3288-mux
[    0.000990] Probe device 'link-uart3' with clk-link
[    0.001000] Probe device 'gate-uart4-src' with clk-rk3288-gate
[    0.001010] Probe device 'div-uart4-src' with clk-rk3288-divider
[    0.001020] Probe device 'gate-uart4-frac' with clk-rk3288-gate
[    0.001030] Probe device 'factor-uart4-frac' with clk-rk3288-factor
[    0.001040] Probe device 'mux-uart4' with clk-rk3288-mux
[    0.001050] Probe device 'link-uart4' with clk-link
[    0.001060] Probe device 'gate-pclk-i2c0' with clk-rk3288-gate
[    0.001070] Probe device 'gate-pclk-i2c1' with clk-rk3288-gate
[    0.001080] Probe device 'gate-pclk-i2c2' with clk-rk3288-gate
[    0.001090] Probe device 'gate-pclk-i2c3' with clk-rk3288-gate
[    0.001100] Probe device 'gate-pclk-i2c4' with clk-rk3288-gate
[    0.001110] Probe device 'gate-pclk-i2c5' with clk-rk3288-gate
[    0.001120] Probe device 'link-pclk-i2c0' with clk-link
[    0.001130] Probe device 'link-pclk-i2c1' with clk-link
[    0.001140] Probe device 'link-pclk-i2c2' with clk-link
[    0.001150] Probe device 'link-pclk-i2c3' with clk-link
[    0.001160] Probe device 'link-pclk-i2c4' with clk-link
[    0.001170] Probe device 'link-pclk-i2c5' with clk-link
[    0.001180] Probe device 'mux-spi0' with clk-rk3288-mux
[    0.001190] Probe device 'gate-spi0' with clk-rk3288-gate
[    0.001200] Probe device 'div-spi0' with clk-rk3288-divider
[    0.001210] Probe device 'link-spi0' with clk-link
[    0.001220] Probe device 'mux-spi1' with clk-rk3288-mux
[    0.001230] Probe device 'gate-spi1' with clk-rk3288-gate
[    0.001240] Probe device 'div-spi1' with clk-rk3288-divider
[    0.001250] Probe device 'link-spi1' with clk-link
[    0.001260] Probe device 'mux-spi2' with clk-rk3288-mux
[    0.001270] Probe device 'gate-spi2' with clk-rk3288-gate
[    0.001280] Probe device 'div-spi2' with clk-rk3288-divider
[    0.001290] Probe device 'link-spi2' with clk-link
[    0.001300] Probe device 'mux-dclk-vop0' with clk-rk3288-mux
[    0.001310] Probe device 'gate-dclk-vop0' with clk-rk3288-gate
[    0.001320] Probe device 'div-dclk-vop0' with clk-rk3288-divider
[    0.001330] Probe device 'dclk-vop0' with clk-link
[    0.001340] Probe device 'mux-dclk-vop1' with clk-rk3288-mux
[    0.001350] Probe device 'gate-dclk-vop1' with clk-rk3288-gate
[    0.001360] Probe device 'div-dclk-vop1' with clk-rk3288-divider
[    0.001370] Probe device 'dclk-vop1' with clk-link
[    0.001380] Probe device 'gate-aclk-vop0' with clk-rk3288-gate
[    0.001390] Probe device 'link-aclk-vop0' with clk-link
[    0.001400] Probe device 'gate-hclk-vop0' with clk-rk3288-gate
[    0.001410] Probe device 'link-hclk-vop0' with clk-link
[    0.001420] Probe device 'gate-aclk-vop1' with clk-rk3288-gate
[    0.001430] Probe device 'link-aclk-vop1' with clk-link
[    0.001440] Probe device 'gate-hclk-vop1' with clk-rk3288-gate
[    0.001450] Probe device 'link-hclk-vop1' with clk-link
[    0.001460] Probe device 'reset-rk3288.0' with reset-rk3288
[    0.001470] Probe device 'reset-rk3288.1' with reset-rk3288
[    0.001480] Probe device 'reset-rk3288.2' with reset-rk3288
[    0.001490] Probe device 'reset-rk3288.3' with reset-rk3288
[    0.001500] Probe device 'reset-rk3288.4' with reset-rk3288
[    0.001510] Probe device 'reset-rk3288.5' with reset-rk3288
[    0.001520] Probe device 'reset-rk3288.6' with reset-rk3288
[    0.001530] Probe device 'reset-rk3288.7' with reset-rk3288
[    0.001540] Probe device 'reset-rk3288.8' with reset-rk3288
[    0.001550] Probe device 'reset-rk3288.9' with reset-rk3288
[    0.001560] Probe device 'reset-rk3288.10' with reset-rk3288
[    0.001570] Probe device 'reset-rk3288.11' with reset-rk3288
[    0.001580] Probe device 'irq-gic400.0' with irq-gic400
[    0.001590] Probe device 'irq-rk3288-gpio.0' with irq-rk3288-gpio
[    0.001600] Probe device 'irq-rk3288-gpio.1' with irq-rk3288-gpio
[    0.001610] Probe device 'irq-rk3288-gpio.2' with irq-rk3288-gpio
[    0.001620] Probe device 'irq-rk3288-gpio.3' with irq-rk3288-gpio
[    0.001630] Probe device 'irq-rk3288-gpio.4' with irq-rk3288-gpio
[    0.001640] Probe device 'irq-rk3288-gpio.5' with irq-rk3288-gpio
[    0.001650] Probe device 'irq-rk3288-gpio.6' with irq-rk3288-gpio
[    0.001660] Probe device 'irq-rk3288-gpio.7' with irq-rk3288-gpio
[    0.001670] Probe device 'irq-rk3288-gpio.8' with irq-rk3288-gpio
[    0.001680] Probe device 'gpio-rk3288.0' with gpio-rk3288
[    0.001690] Probe device 'gpio-rk3288.1' with gpio-rk3288
[    0.001700] Probe device 'gpio-rk3288.2' with gpio-rk3288
[    0.001710] Probe device 'gpio-rk3288.3' with gpio-rk3288
[    0.001720] Probe device 'gpio-rk3288.4' with gpio-rk3288
[    0.001730] Probe device 'gpio-rk3288.5' with gpio-rk3288
[    0.001740] Probe device 'gpio-rk3288.6' with gpio-rk3288
[    0.001750] Probe device 'gpio-rk3288.7' with gpio-rk3288
[    0.001760] Probe device 'gpio-rk3288.8' with gpio-rk3288
[    0.001770] Probe device 'pwm-rk3288.0' with pwm-rk3288
[    0.001780] Probe device 'pwm-rk3288.1' with pwm-rk3288
[    0.001790] Probe device 'pwm-rk3288.2' with pwm-rk3288
[    0.001800] Probe device 'pwm-rk3288.3' with pwm-rk3288
[    0.001810] Probe device 'adc-rk3288.0' with adc-rk3288
[    0.001820] Probe device 'ce-rockchip-timer.0' with ce-rockchip-timer
[    0.000285] Probe device 'cs-rockchip-timer.0' with cs-rockchip-timer
[    0.006686] Probe device 'uart-8250.0' with uart-82[    0.016752] Probe device 'uart-8250.2' with uart-8250
[    0.017370] Probe device 'uart-8250.3' with uart-8250
[    0.021773] Probe device 'uart-8250.4' with uart-8250
[    0.026764] Probe device 'i2c-rk3288.0' with i2c-rk3288
[    0.031968] Probe device 'i2c-rk3288.1' with i2c-rk3288
[    0.037189] Probe device 'i2c-rk3288.2' with i2c-rk3288
[    0.042393] Probe device 'i2c-rk3288.3' with i2c-rk3288
[    0.047623] Probe device 'i2c-rk3288.4' with i2c-rk3288
[    0.052847] Probe device 'i2c-rk3288.5' with i2c-rk3288
[    0.057863] Probe device 'spi-rk3288.0' with spi-rk3288
[    0.063067] Probe device 'spi-rk3288.1' with spi-rk3288
[    0.068295] Probe device 'spi-rk3288.2' with spi-rk3288
[    0.073537] Probe device 'dc1' with regulator-act8846
[    0.078536] Probe device 'dc2' with regulator-act8846
[    0.083559] Probe device 'dc3' with regulator-act8846
[    0.088583] Probe device 'dc4' with regulator-act8846
[    0.093621] Probe device 'ldo1' with regulator-act8846
[    0.098736] Probe device 'ldo2' with regulator-act8846
[    0.103845] Probe device 'ldo3' with regulator-act8846
[    0.108964] Probe device 'ldo4' with regulator-act8846
[    0.114074] Probe device 'ldo5' with regulator-act8846
[    0.119192] Probe device 'ldo6' with regulator-act8846
[    0.124301] Probe device 'ldo7' with regulator-act8846
[    0.129419] Probe device 'ldo8' with regulator-act8846
[    0.134771] Probe device 'syr827-cpu' with regulator-syr82x
[    0.140321] Probe device 'syr828-gpu' with regulator-syr82x
[    0.145553] Probe device 'lcd-bl-power' with regulator-gpio
[    0.151067] Probe device 'key-adc.0' with key-adc
[    0.155980] Probe device 'rc-gpio.0' with rc-gpio
[    0.260200] Fail to probe device with ts-gslx680
[    0.260278] Probe device 'led-gpio.0' with led-gpio
[    0.264056] Probe device 'ledtrigger-heartbeat.0' with ledtrigger-heartbeat
[    0.271001] Probe device 'led-pwm-bl.0' with led-pwm-bl
[    0.276191] Probe device 'buzzer-gpio.0' with buzzer-gpio
[    0.281572] Probe device 'wdg-rk3288.0' with wdg-rk3288
[    0.288390] Probe device 'fb-rk3288.0' with fb-rk3288
[    0.291786] Probe device 'console-uart.0' with console-uart
[    0.299180] mount /private with 'ram' filesystem
Press any key to stop auto boot:  0.000
xboot: /# 

#308 Re: 全志 SOC » 全志有fel模式,瑞芯微有maskrom模式,为了给裸机开发舔砖加瓦,fel模式有xfel工具,那么maskrom模式就需要xrock工具了 » 2021-08-19 22:12:34

补充点RK3128 DDR程序rk3128_ddr_300MHz_v2.12.bin 相关逆向信息,
DDR.bin链接地址为0x20008000,文件偏移4个字节,其头会包含一个RK31标识,这个DDR程序执行完后,还会回到brom代码。但rk3128_usbplug_v2.63执行后,就不会回到brom空间了。

#309 Re: 全志 SOC » 全志有fel模式,瑞芯微有maskrom模式,为了给裸机开发舔砖加瓦,fel模式有xfel工具,那么maskrom模式就需要xrock工具了 » 2021-08-19 18:54:53

RK3128启动log信息

DDR Version 2.12 20190926
In
ID:0xFFF
1A1A1B1B   3
DDR3
1B1B1B1B   F
Bus Width=32 Col=10 Bank=8 Row=15 CS=1 Die Bus-Width=16 Size=1024MB
mach:2
OUT
       _                   _                     
 _  _ | |___ _____ _____ _| |_                   
\ \/ /|  _  |  _  |  _  |_   _|  (C) 2007-2021   
 )  ( | |_| | |_| | |_| | | |____JIANJUN.JIANG__ 
/_/\_\|_____|_____|_____| |_____________________|
V3.0.0 (Aug 19 2021 - 18:37:50) - [x3128][X3128 Based On RK3128 SOC]
[    0.000000] Probe device 'blk-romdisk.0' with blk-romdisk
[    0.000010] Probe device 'usbphy480m' with clk-fixed
[    0.000020] Probe device 'xin24m' with clk-fixed
[    0.000030] Probe device 'xin32k' with clk-fixed
[    0.000040] Probe device 'apll' with clk-rk3128-pll
[    0.000050] Probe device 'dpll' with clk-rk3128-pll
[    0.000060] Probe device 'cpll' with clk-rk3128-pll
[    0.000070] Probe device 'gpll' with clk-rk3128-pll
[    0.000080] Probe device 'gpll-d2' with clk-fixed-factor
[    0.000090] Probe device 'gpll-d3' with clk-fixed-factor
[    0.000100] Probe device 'mux-cpu-aclk' with clk-rk3128-mux
[    0.000110] Probe device 'cpu-aclk' with clk-rk3128-divider
[    0.000120] Probe device 'cpu-hclk' with clk-rk3128-divider
[    0.000130] Probe device 'cpu-pclk' with clk-rk3128-divider
[    0.000140] Probe device 'mux-periph-aclk' with clk-rk3128-mux
[    0.000150] Probe device 'periph-aclk' with clk-rk3128-divider
[    0.000160] Probe device 'periph-hclk' with clk-rk3128-ratio
[    0.000170] Probe device 'periph-pclk' with clk-rk3128-ratio
[    0.000180] Probe device 'mux-dclk-lcd' with clk-rk3128-mux
[    0.000190] Probe device 'gate-dclk-lcd' with clk-rk3128-gate
[    0.000200] Probe device 'div-dclk-lcd' with clk-rk3128-divider
[    0.000210] Probe device 'link-dclk-lcd' with clk-link
[    0.000220] Probe device 'mux-sclk-lcd' with clk-rk3128-mux
[    0.000230] Probe device 'gate-sclk-lcd' with clk-rk3128-gate
[    0.000240] Probe device 'div-sclk-lcd' with clk-rk3128-divider
[    0.000250] Probe device 'link-sclk-lcd' with clk-link
[    0.000260] Probe device 'gate-timer0' with clk-rk3128-gate
[    0.000270] Probe device 'gate-timer1' with clk-rk3128-gate
[    0.000280] Probe device 'gate-timer2' with clk-rk3128-gate
[    0.000290] Probe device 'gate-timer3' with clk-rk3128-gate
[    0.000300] Probe device 'gate-timer4' with clk-rk3128-gate
[    0.000310] Probe device 'gate-timer5' with clk-rk3128-gate
[    0.000320] Probe device 'link-timer0' with clk-link
[    0.000330] Probe device 'link-timer1' with clk-link
[    0.000340] Probe device 'link-timer2' with clk-link
[    0.000350] Probe device 'link-timer3' with clk-link
[    0.000360] Probe device 'link-timer4' with clk-link
[    0.000370] Probe device 'link-timer5' with clk-link
[    0.000380] Probe device 'gate-i2c0' with clk-rk3128-gate
[    0.000390] Probe device 'gate-i2c1' with clk-rk3128-gate
[    0.000400] Probe device 'gate-i2c2' with clk-rk3128-gate
[    0.000410] Probe device 'gate-i2c3' with clk-rk3128-gate
[    0.000420] Probe device 'link-i2c0' with clk-link
[    0.000430] Probe device 'link-i2c1' with clk-link
[    0.000440] Probe device 'link-i2c2' with clk-link
[    0.000450] Probe device 'link-i2c3' with clk-link
[    0.000460] Probe device 'gate-pwm' with clk-rk3128-gate
[    0.000470] Probe device 'link-pwm0' with clk-link
[    0.000480] Probe device 'link-pwm1' with clk-link
[    0.000490] Probe device 'link-pwm2' with clk-link
[    0.000500] Probe device 'link-pwm3' with clk-link
[    0.000510] Probe device 'gate-wdt' with clk-rk3128-gate
[    0.000520] Probe device 'link-wdt' with clk-link
[    0.000530] Probe device 'gate-saradc' with clk-rk3128-gate
[    0.000540] Probe device 'div-saradc' with clk-rk3128-divider
[    0.000550] Probe device 'link-saradc' with clk-link
[    0.000560] Probe device 'mux-spi-src' with clk-rk3128-mux
[    0.000570] Probe device 'gate-spi-src' with clk-rk3128-gate
[    0.000580] Probe device 'div-spi-src' with clk-rk3128-divider
[    0.000590] Probe device 'gate-spi' with clk-rk3128-gate
[    0.000600] Probe device 'link-spi' with clk-link
[    0.000610] Probe device 'mux-emmc-src' with clk-rk3128-mux
[    0.000620] Probe device 'gate-emmc-src' with clk-rk3128-gate
[    0.000630] Probe device 'div-emmc-src' with clk-rk3128-divider
[    0.000640] Probe device 'gate-emmc' with clk-rk3128-gate
[    0.000650] Probe device 'link-emmc' with clk-link
[    0.000660] Probe device 'mux-sdmmc-src' with clk-rk3128-mux
[    0.000670] Probe device 'gate-sdmmc-src' with clk-rk3128-gate
[    0.000680] Probe device 'div-sdmmc-src' with clk-rk3128-divider
[    0.000690] Probe device 'gate-sdmmc' with clk-rk3128-gate
[    0.000700] Probe device 'link-sdmmc' with clk-link
[    0.000710] Probe device 'mux-sdio-src' with clk-rk3128-mux
[    0.000720] Probe device 'gate-sdio-src' with clk-rk3128-gate
[    0.000730] Probe device 'div-sdio-src' with clk-rk3128-divider
[    0.000740] Probe device 'gate-sdio' with clk-rk3128-gate
[    0.000750] Probe device 'link-sdio' with clk-link
[    0.000760] Probe device 'mux-uart0-src' with clk-rk3128-mux
[    0.000770] Probe device 'gate-uart0-src' with clk-rk3128-gate
[    0.000780] Probe device 'div-uart0-src' with clk-rk3128-divider
[    0.000790] Probe device 'gate-uart0-frac' with clk-rk3128-gate
[    0.000800] Probe device 'factor-uart0-frac' with clk-rk3128-factor
[    0.000810] Probe device 'mux-uart0' with clk-rk3128-mux
[    0.000820] Probe device 'link-uart0' with clk-link
[    0.000830] Probe device 'mux-uart12-src' with clk-rk3128-mux
[    0.000840] Probe device 'gate-uart1-src' with clk-rk3128-gate
[    0.000850] Probe device 'gate-uart2-src' with clk-rk3128-gate
[    0.000860] Probe device 'div-uart1-src' with clk-rk3128-divider
[    0.000870] Probe device 'div-uart2-src' with clk-rk3128-divider
[    0.000880] Probe device 'gate-uart1-frac' with clk-rk3128-gate
[    0.000890] Probe device 'gate-uart2-frac' with clk-rk3128-gate
[    0.000900] Probe device 'factor-uart1-frac' with clk-rk3128-factor
[    0.000910] Probe device 'factor-uart2-frac' with clk-rk3128-factor
[    0.000920] Probe device 'mux-uart1' with clk-rk3128-mux
[    0.000930] Probe device 'mux-uart2' with clk-rk3128-mux
[    0.000940] Probe device 'link-uart1' with clk-link
[    0.000950] Probe device 'link-uart2' with clk-link
[    0.000960] Probe device 'reset-rk3128.0' with reset-rk3128
[    0.000970] Probe device 'reset-rk3128.1' with reset-rk3128
[    0.000980] Probe device 'reset-rk3128.2' with reset-rk3128
[    0.000990] Probe device 'reset-rk3128.3' with reset-rk3128
[    0.001000] Probe device 'reset-rk3128.4' with reset-rk3128
[    0.001010] Probe device 'reset-rk3128.5' with reset-rk3128
[    0.001020] Probe device 'reset-rk3128.6' with reset-rk3128
[    0.001030] Probe device 'reset-rk3128.7' with reset-rk3128
[    0.001040] Probe device 'reset-rk3128.8' with reset-rk3128
[    0.001050] Probe device 'irq-gic400.0' with irq-gic400
[    0.001060] Probe device 'irq-rk3128-gpio.0' with irq-rk3128-gpio
[    0.001070] Probe device 'irq-rk3128-gpio.1' with irq-rk3128-gpio
[    0.001080] Probe device 'irq-rk3128-gpio.2' with irq-rk3128-gpio
[    0.001090] Probe device 'irq-rk3128-gpio.3' with irq-rk3128-gpio
[    0.001100] Probe device 'gpio-rk3128.0' with gpio-rk3128
[    0.001110] Probe device 'gpio-rk3128.1' with gpio-rk3128
[    0.001120] Probe device 'gpio-rk3128.2' with gpio-rk3128
[    0.001130] Probe device 'gpio-rk3128.3' with gpio-rk3128
[    0.001140] Probe device 'pwm-rk3128.0' with pwm-rk3128
[    0.001150] Probe device 'pwm-rk3128.1' with pwm-rk3128
[    0.001160] Probe device 'pwm-rk3128.2' with pwm-rk3128
[    0.001170] Probe device 'pwm-rk3128.3' with pwm-rk3128
[    0.001180] Probe device 'adc-rk3128.0' with adc-rk3128
[    0.001190] Probe device 'ce-rockchip-timer.0' with ce-rockchip-timer
[    0.000025] Probe device 'cs-rockchip-timer.0' with cs-rockchip-timer
[    0.006435] Probe device 'uart-8250.0' with uart-8250
[    0.011456] Probe devi+$HHߐ.016483] Probe device 'uart-8250.2' with uart-8250
[    0.018702] Probe device 'i2c-rk3128.0' with i2c-rk3128
[    0.023899] Probe device 'i2c-rk3128.1' with i2c-rk3128
[    0.029102] Probe device 'i2c-rk3128.2' with i2c-rk3128
[    0.034302] Probe device 'i2c-rk3128.3' with i2c-rk3128
[    0.039499] Probe device 'spi-gpio.0' with spi-gpio
[    0.044465] Probe device 'dcdc1' with regulator-rk816
[    0.049485] Probe device 'dcdc2' with regulator-rk816
[    0.054511] Probe device 'dcdc3' with regulator-rk816
[    0.059538] Probe device 'dcdc4' with regulator-rk816
[    0.064564] Probe device 'ldo1' with regulator-rk816
[    0.069505] Probe device 'ldo2' with regulator-rk816
[    0.074445] Probe device 'ldo3' with regulator-rk816
[    0.079542] Probe device 'ldo4' with regulator-rk816
[    0.084324] Probe device 'ldo5' with regulator-rk816
[    0.089419] Probe device 'ldo6' with regulator-rk816
[    0.094096] Probe device 'lcd-power-5v' with regulator-gpio
[    0.301310] Probe device 'sdhci-spi.0' with sdhci-spi
[    0.305032] Probe device 'rtc-rk816.0' with rtc-rk816
[    0.308548] Probe device 'wdg-rk3128.0' with wdg-rk3128
[    0.313766] Fail to probe device with gmeter-mma8452
[    0.319261] Probe device 'key-rk816.0' with key-rk816
[    0.323716] Probe device 'key-adc.0' with key-adc
[    0.328416] Probe device 'rc-gpio.0' with rc-gpio
[    0.333073] Probe device 'led-gpio.0' with led-gpio
[    0.337921] Probe device 'led-gpio.1' with led-gpio
[    0.342775] Probe device 'led-gpio.2' with led-gpio
[    0.347628] Probe device 'led-gpio.3' with led-gpio
[    0.352486] Probe device 'ledtrigger-heartbeat.0' with ledtrigger-heartbeat
[    0.359424] Probe device 'led-pwm-bl.0' with led-pwm-bl
[    0.364621] Probe device 'buzzer-gpio.0' with buzzer-gpio
[    0.369992] Probe device 'buzzer-pwm.0' with buzzer-pwm
[    0.375194] Probe device 'vibrator-pwm.0' with vibrator-pwm
[    0.380812] Probe device 'fb-rk3128.0' with fb-rk3128
[    0.385760] Probe device 'console-uart.0' with console-uart
[    0.392008] mount /private with 'ram' filesystem
Press any key to stop auto boot:  0.690

#310 Re: 全志 SOC » 全志有fel模式,瑞芯微有maskrom模式,为了给裸机开发舔砖加瓦,fel模式有xfel工具,那么maskrom模式就需要xrock工具了 » 2021-08-19 18:53:41

对于EMMC,瑞芯微的brom,上电后会去从第64个扇区开始搜索idb头,如果合法就会进行加载,所以为了能够裸奔,就需要对镜像进行处理,idb格式比起全志的要麻烦些,全志仅仅一个校验和,而rockchip需要4个idb头,每个idb头512字节,而且还需要用rc4加密下,具体密钥见mkidb源码。

#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>

#define BLKSIZE		(512)

struct idblock0_t {
	uint32_t signature;
	uint8_t	 reserved0[4];
	uint32_t disable_rc4;
	uint16_t bootcode1_offset;
	uint16_t bootcode2_offset;
	uint8_t  reserved1[490];
	uint16_t flash_data_size;
	uint16_t flash_boot_size;
	uint8_t  reserved2[2];
};

struct idblock1_t {
	uint16_t sys_reserved_block;
	uint16_t disk0_size;
	uint16_t disk1_size;
	uint16_t disk2_size;
	uint16_t disk3_size;
	uint32_t chip_tag;
	uint32_t machine_id;
	uint16_t loader_year;
	uint16_t loader_date;
	uint16_t loader_ver;
	uint8_t  reserved0[72];
	uint16_t flash_data_offset;
	uint16_t flash_data_len;
	uint8_t  reserved1[384];
	uint32_t flash_chip_size;
	uint8_t  reserved2;
	uint8_t  access_time;
	uint16_t phy_block_size;
	uint8_t  phy_page_size;
	uint8_t  ecc_bits;

	uint8_t  reserved3[8];
	uint16_t id_block0;
	uint16_t id_block1;
	uint16_t id_block2;
	uint16_t id_block3;
	uint16_t id_block4;
};

struct idblock2_t {
	uint16_t chip_info_size;
	uint8_t chip_info[510];
};

struct idblock3_t {
	uint16_t sn_size;
	uint8_t  sn[30];
	uint8_t  mac_tag[3];
	uint8_t  mac_size;
	uint8_t  mac_addr[6];
	uint8_t  reserved0[468];
};

static void rc4(unsigned char * buf, int len)
{
	unsigned char S[256], K[256], temp;
	unsigned char key[16] = { 124, 78, 3, 4, 85, 5, 9, 7, 45, 44, 123, 56, 23, 13, 23, 17 };
	int i, j, t, x;

	j = 0;
	for(i = 0; i < 256; i++)
	{
		S[i] = (unsigned char) i;
		j &= 0x0f;
		K[i] = key[j];
		j++;
	}

	j = 0;
	for(i = 0; i < 256; i++)
	{
		j = (j + S[i] + K[i]) % 256;
		temp = S[i];
		S[i] = S[j];
		S[j] = temp;
	}

	i = j = 0;
	for(x = 0; x < len; x++)
	{
		i = (i + 1) % 256;
		j = (j + S[i]) % 256;
		temp = S[i];
		S[i] = S[j];
		S[j] = temp;
		t = (S[i] + (S[j] % 256)) % 256;
		buf[x] = buf[x] ^ S[t];
	}
}

int main(int argc, char *argv[])
{
	struct idblock0_t * idb0;
	struct idblock1_t * idb1;
	struct idblock2_t * idb2;
	struct idblock3_t * idb3;
	FILE * fp;
	char * buf;
	int buflen = 256 * 1024 * 1024;
	int dlen, blen;
	int dblk, bblk;
	int n, l;

	if(argc != 4)
	{
		printf("Usage: mkidb <ddr> <boot> <bootpak>\n");
		return -1;
	}

	buf = malloc(buflen);
	if(!buf)
	{
		printf("Malloc buffer error\n");
		return -1;
	}
	memset(buf, 0, buflen);

	/* ddr */
	fp = fopen(argv[1], "r+b");
	if(fp == NULL)
	{
		printf("Open ddr file error\n");
		free(buf);
		return -1;
	}
	fseek(fp, 0L, SEEK_END);
	dlen = ftell(fp);
	fseek(fp, 0L, SEEK_SET);
	n = fread(&buf[4 * BLKSIZE], 1, dlen, fp);
	if(n != dlen)
	{
		printf("Read file boot error\n");
		free(buf);
		fclose(fp);
		return -1;
	}
	fclose(fp);
	dblk = (dlen + BLKSIZE - 1) / BLKSIZE;
	dblk = (dblk + 3) & ~3;

	/* boot */
	fp = fopen(argv[2], "r+b");
	if(fp == NULL)
	{
		printf("Open boot file error\n");
		free(buf);
		return -1;
	}
	fseek(fp, 0L, SEEK_END);
	blen = ftell(fp);
	fseek(fp, 0L, SEEK_SET);
	n = fread(&buf[(4 + dblk) * BLKSIZE], 1, blen, fp);
	if(n != blen)
	{
		printf("Read boot file error\n");
		free(buf);
		fclose(fp);
		return -1;
	}
	fclose(fp);
	bblk = (blen + BLKSIZE - 1) / BLKSIZE;
	bblk = (bblk + 3) & ~3;

	/* idb0 */
	idb0 = (struct idblock0_t *)&buf[0 * BLKSIZE];
	idb0->signature = 0x0ff0aa55;
	idb0->disable_rc4 = 1;
	idb0->bootcode1_offset = 4;
	idb0->bootcode2_offset = 4;
	idb0->flash_data_size = dblk;
	idb0->flash_boot_size = dblk + bblk;
	rc4((unsigned char *)idb0, sizeof(struct idblock0_t));

	/* idb1 */
	idb1 = (struct idblock1_t *)&buf[1 * BLKSIZE];
	rc4((unsigned char *)idb1, sizeof(struct idblock1_t));

	/* idb2 */
	idb2 = (struct idblock2_t *)&buf[2 * BLKSIZE];
	rc4((unsigned char *)idb2, sizeof(struct idblock2_t));

	/* idb3 */
	idb3 = (struct idblock3_t *)&buf[3 * BLKSIZE];
	rc4((unsigned char *)idb3, sizeof(struct idblock3_t));

	/* idbloader */
	fp = fopen(argv[3], "w+b");
	if(fp == NULL)
	{
		printf("Open bootpak file error\n");
		free(buf);
		return -1;
	}
	l = (4 + dblk + bblk) * BLKSIZE;
	n = fwrite(buf, 1, l, fp);
	if(n != l)
	{
		printf("Write bootpak file error\n");
		free(buf);
		fclose(fp);
		return -1;
	}
	fclose(fp);
	free(buf);

	printf("Binary pack file -> %s\n", argv[3]);
	return 0;
}

https://gitee.com/xboot/xboot/blob/master/developments/rockchip/mkidb/mkidb.c

#311 Re: 全志 SOC » 全志有fel模式,瑞芯微有maskrom模式,为了给裸机开发舔砖加瓦,fel模式有xfel工具,那么maskrom模式就需要xrock工具了 » 2021-08-19 18:48:18

利用xrock烧写瑞芯微RK3128裸机镜像

编译源码,生成的目标文件在output目录下

make clean
make CROSS_COMPILE=/path/to/arm-none-linux-gnueabihf- PLATFORM=arm32-rk3128

进入maskrom模式,利用xrock烧写镜像

sudo xrock maskrom rk3128_ddr_300MHz_v2.12.bin rk3128_usbplug_v2.63.bin;
sleep 3;
sudo xrock flash write 64 xbootpak.bin;
sudo xrock reset;

#313 Re: 全志 SOC » 全志有fel模式,瑞芯微有maskrom模式,为了给裸机开发舔砖加瓦,fel模式有xfel工具,那么maskrom模式就需要xrock工具了 » 2021-08-05 10:43:22

速度快,我觉得主要有三点吧

1,瑞芯微USB通讯效率较高,一个请求,一个响应,没有多余的操作
2,usbplug运行在DDR中,而且该开的MMU,cache什么的,都是开着的
3,EMMC本身就比较快,比起spi nor快多了。

#314 Re: 全志 SOC » 全志有fel模式,瑞芯微有maskrom模式,为了给裸机开发舔砖加瓦,fel模式有xfel工具,那么maskrom模式就需要xrock工具了 » 2021-08-05 09:43:54

扩展了一些指令,输出信息如下:

$ ./xrock version
RK3128(312A): 0x33313241 0xdfffdfff 0xbf7377ff 0xabed2fcd

$ ./xrock capability
Capability: 27 00 00 00 00 00 00 00
    Direct LBA: enabled
    Vendor Storage: enabled
    First 4M Access: enabled
    Read LBA: disabled
    Read Com Log: enabled
    Read IDB Config: disabled
    Read Secure Mode: disabled
    New IDB: disabled

$ ./xrock flash
Flash Info:
    Manufacturer: Samsung (0)
    Flash Size: 7456MB
    Block Size: 512KB
    Page Size: 2KB
    ECC Bits: 0
    Access Time: 40
    Flash CS: <0>
    Flash ID: 45 4d 4d 43 20

#315 Re: 全志 SOC » 全志有fel模式,瑞芯微有maskrom模式,为了给裸机开发舔砖加瓦,fel模式有xfel工具,那么maskrom模式就需要xrock工具了 » 2021-08-05 09:40:45

RK3128平台上Flash读写带宽测试

Flash读速度

$ ./xrock flash read 0 1000000 /dev/null
100% [================================================] 512.000 MB, 32.777 MB/s 

Flash写速度

$ ./xrock flash write 0 ./256MB 
100% [================================================] 268.435 MB, 13.791 MB/s    

#316 Re: 全志 SOC » 全志有fel模式,瑞芯微有maskrom模式,为了给裸机开发舔砖加瓦,fel模式有xfel工具,那么maskrom模式就需要xrock工具了 » 2021-08-05 09:37:52

扩展一些命令,支持flash读写擦除操作。

xrock(v1.0.1) - https://github.com/xboot/xrock
usage:
    xrock maskrom <ddr> <usbplug>            - Initial chip using ddr and usbplug in maskrom mode
    xrock version                            - Show chip version
    xrock capability                         - Show capability information
    xrock reset [maskrom]                    - Reset device to normal or maskrom mode
    xrock hexdump <address> <length>         - Dumps memory region in hex
    xrock dump <address> <length>            - Binary memory dump to stdout
    xrock read <address> <length> <file>     - Read memory to file
    xrock write <address> <file>             - Write file to memory
    xrock exec <address>                     - Call function address
    xrock flash                              - Detect flash and show information
    xrock flash erase <sector> <count>       - Erase flash sector
    xrock flash read <sector> <count> <file> - Read flash sector to file
    xrock flash write <sector> <file>        - Write file to flash sector

#317 Re: 全志 SOC » 全志有fel模式,瑞芯微有maskrom模式,为了给裸机开发舔砖加瓦,fel模式有xfel工具,那么maskrom模式就需要xrock工具了 » 2021-08-04 19:55:47

这里有两个比较关键的注意点,芯片运行在maskrom模式时,其实只能干两件事,加载并运行ddr bin 以及usbloader bin,其他啥也干不了,所以第一步都是需要执行maskrom指令,注意loader模式,跟maskrom模式有较大差异,在这个模式时,是不能执行maskrom指令的。

还有一个,就是SDRAM内存读写地址,是从0开始的,不是传递实际物理地址空间,也就是说,关于地址空间的访问,瑞芯微限制了,只能访问SDRAM空间,其他地址是无法访问的,所以,读写寄存器之类的骚操作,就无能为力了。

#318 Re: 全志 SOC » 全志有fel模式,瑞芯微有maskrom模式,为了给裸机开发舔砖加瓦,fel模式有xfel工具,那么maskrom模式就需要xrock工具了 » 2021-08-04 19:43:44

一些截图,用xrock读写DRAM,在linux平台基本能达到25MB/S左右,比全志读写速度高不是一点点,windows平台弱了些,但也能达到5MB/S

1_20210804-1941.png
2_20210804-1941.png

这个windows版本的程序,欢迎体验。
xrock-windows-v1.0.0.7z

#319 Re: 全志 SOC » 全志有fel模式,瑞芯微有maskrom模式,为了给裸机开发舔砖加瓦,fel模式有xfel工具,那么maskrom模式就需要xrock工具了 » 2021-08-04 19:39:57

xrock工具不仅linux可以运行,windows平台也是可以的,但不能采用瑞芯微官方提供的驱动,需要用winusb驱动,这个跟全志操作类似,需要用zadig来安装。

1,首先,移除默认驱动,直接点击驱动卸载就可以了
remove-rockchip-driver.png
2,安装winusb驱动,点击reinstall,注意选择0x2207这个UID
zadig.png

#320 全志 SOC » 全志有fel模式,瑞芯微有maskrom模式,为了给裸机开发舔砖加瓦,fel模式有xfel工具,那么maskrom模式就需要xrock工具了 » 2021-08-04 19:35:38

xboot
回复: 49

仔细分析了瑞芯微的maskrom模式,跟全志的fel模式,基本类似,但又有不同,maskrom模式功能有限,除了加载ddr,另外一个重要的功能就是运行usbloader了,这个程序,扩展了usb口通讯功能,什么烧写FLASH,EFUSE, 序列号,读写DDR内存等都是载这里实现的。

经过几天的调研,觉得还是有必要开发一个裸奔工具,名叫xrock
https://github.com/xboot/xrock

当前支持的命令:

xrock(v1.0.0) - https://github.com/xboot/xrock
usage:
    xrock maskrom <ddr> <usbplug>        - Initial chip using ddr and usbplug in maskrom mode
    xrock version                        - Show chip version
    xrock reset [maskrom]                - Reset device to normal or maskrom mode
    xrock hexdump <address> <length>     - Dumps memory region in hex
    xrock dump <address> <length>        - Binary memory dump to stdout
    xrock read <address> <length> <file> - Read memory to file
    xrock write <address> <file>         - Write file to memory
    xrock exec <address>                 - Call function address

支持的芯片:

static struct chip_t chips[] = {
	{ 0x180a, "RK1808" },
	{ 0x281a, "RK2818" },
	{ 0x290a, "RK2918" },
	{ 0x292a, "RK2928" },
	{ 0x292c, "RK3026" },
	{ 0x300a, "RK3066" },
	{ 0x300b, "RK3168" },
	{ 0x301a, "RK3036" },
	{ 0x310a, "RK3066" },
	{ 0x310b, "RK3188" },
	{ 0x310c, "RK3128" },
	{ 0x320a, "RK3288" },
	{ 0x320b, "RK3228" },
	{ 0x320c, "RK3328" },
	{ 0x330a, "RK3368" },
	{ 0x330c, "RK3399" },
	{ 0x330d, "PX30" },
	{ 0x350a, "RK3568" },
};

RK1808

sudo xrock maskrom rk1808_ddr_933MHz_v1.05.bin rk1808_usbplug_v1.05.bin
sudo xrock version

RK3128

sudo xrock maskrom rk3128_ddr_300MHz_v2.12.bin rk3128_usbplug_v2.63.bin
sudo xrock version

RK3288

sudo xrock maskrom rk3288_ddr_400MHz_v1.09.bin rk3288_usbplug_v2.58.bin
sudo xrock version

RK3399

sudo xrock maskrom rk3399_ddr_800MHz_v1.25.bin rk3399_usbplug_v1.26.bin
sudo xrock version

RK3399PRO

sudo xrock maskrom rk3399pro_ddr_666MHz_v1.25.bin rk3399pro_usbplug_v1.26.bin
sudo xrock version

PX30

sudo xrock maskrom px30_ddr_333MHz_v1.16.bin px30_usbplug_v1.31.bin
sudo xrock version

#321 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 逻辑分析仪 采集到的 旋转编码器 波形 » 2021-07-22 19:08:29

很久之前写过这个驱动,每个周期支持1步,2步,4步,其中1步最可靠,4步最灵敏。如果要消抖的话,就需要在这个函数里面处理了

static int rotary_gpio_get_state(struct rotary_gpio_pdata_t * pdat)
{
	int a = !!gpio_get_value(pdat->a);
	int b = !!gpio_get_value(pdat->b);

	a ^= pdat->inva;
	b ^= pdat->invb;

	return ((a << 1) | b);
}

https://gitee.com/xboot/xboot/blob/master/src/driver/input/rotary-gpio.c

#322 Re: 全志 SOC » 探讨一下全志音频分频相关问题 » 2021-07-20 12:16:28

从这结果看,44.1k类的误差万分之3.4,48k类的,误差万分之1.8,还是尽可能远离44.1k吧,全面拥抱48k,44.1k的存在就是就是失足妇女的一次意外而已

#323 Re: 全志 SOC » 探讨一下全志音频分频相关问题 » 2021-07-20 12:00:55

================= 22.5792MHZ =====================
0.0003441884566327(n = 79, m = 21)
0.0004001581101190(n = 64, m = 17)
0.0008503401360544(n = 94, m = 25)
0.0009212018140590(n = 113, m = 30)
0.0012168666294643(n = 109, m = 29)
0.0016025589923469(n = 49, m = 13)
0.0016025589923469(n = 98, m = 26)

......

9.8949829931972797(n = 41, m = 1)
9.8949829931972797(n = 82, m = 2)
9.9835600907029480(n = 124, m = 3)
================= 24.576MHZ =====================
0.0001860148111979(n = 86, m = 21)
0.0001890106201172(n = 127, m = 31)
0.0009765625000000(n = 123, m = 30)
0.0009765625000000(n = 41, m = 10)
0.0009765625000000(n = 82, m = 20)

.......

9.8642578125000000(n = 89, m = 2)
9.9863281250000000(n = 45, m = 1)
9.9863281250000000(n = 90, m = 2)

好吧,排在第一个就是误差最小的。

#324 Re: 全志 SOC » 探讨一下全志音频分频相关问题 » 2021-07-20 11:58:44

#include <stdio.h>
#include <stdint.h>
#include <math.h>
#include <slist.h>

int main(int argc, char * argv[])
{
	struct slist_t * sl, * e;
	int64_t t1, t2;
	double delta;
	int n, m;

	printf("================= 22.5792MHZ =====================\r\n");
	sl = slist_alloc();
	t1 = 22579200 * 8;
	for(n = 1; n <= 128; n++)
	{
		for(m = 1; m <= 32; m++)
		{
			t2 = 24000000LL * n * 2LL / m;
			delta = (fabs)((double)(t2 - t1)) / (double)t1;
			slist_add(sl, NULL, "%.16f(n = %d, m = %d)", delta, n, m);
		}
	}
	slist_sort(sl);
	slist_for_each_entry(e, sl)
	{
		printf("%s\r\n", e->key);
	}
	slist_free(sl);

	printf("================= 24.576MHZ =====================\r\n");
	sl = slist_alloc();
	t1 = 24576000 * 8;
	for(n = 1; n <= 128; n++)
	{
		for(m = 1; m <= 32; m++)
		{
			t2 = 24000000LL * n * 2LL / m;
			delta = (fabs)((double)(t2 - t1)) / (double)t1;
			slist_add(sl, NULL, "%.16f(n = %d, m = %d)", delta, n, m);
		}
	}
	slist_sort(sl);
	slist_for_each_entry(e, sl)
	{
		printf("%s\r\n", e->key);
	}
	slist_free(sl);

	return 0;
}

#325 Re: 全志 SOC » 探讨一下全志音频分频相关问题 » 2021-07-20 11:33:44

重采样只能算歪门邪道,况且,重采样,效果会更糟,准备写个程序找到误差最小的配置看看。

#326 Re: 全志 SOC » 探讨一下全志音频分频相关问题 » 2021-07-20 11:16:19

PLL音频分频公式,其中N的取值范围1 - 128,M的取值范围1 - 32

PLL_AUDIO(8X) Output = 24MHZ * N * 2 / M

也就是说,要让下面两个公式成立,捡起小学学的找最大公约数技术,找了一圈,根本就没有满足要求的正整数解,全志你这是想干嘛呢,音频难道仅能听个响?

22579200 * 8 = 24000000 * N * 2 / M
24576000 * 8 = 24000000 * N * 2 / M

#327 全志 SOC » 探讨一下全志音频分频相关问题 » 2021-07-20 10:52:09

xboot
回复: 7

音频因采样率众多,要兼容所有标准采样率,就必须在分频阶段,考虑清楚,虽然采样率众多,但一般是分两类,一类是44.1KHZ的,还有一类是48KHZ,

44.1K类的

176400
88200
44100
29400
22050
14700
11025
7350

48K类的

192000
96000
48000
32000
24000
16000
12000
8000

一般44.1K类的,大家会选择22579200HZ,48K类的选择24576000HZ,但全志的PLL根本无法精确精确分出此频率,只能近似,有研究过此问题的同学吗?

补充,33075是个异类,换成29400

#328 Re: 全志 SOC » 继续给F1C100S填坑,PE11管脚导出clkout,给CIF摄像头的提供时钟源 » 2021-07-20 10:38:08

有源晶振如果不要钱的话,还是可以解决这个问题的。

#329 Re: 全志 SOC » 给F1C100S编写DMA驱动,并测试NDMA及DDMA的带宽 » 2021-07-19 16:36:46

你这跳转APP是什么意思,引导linux,还是什么其他的二进制程序,注意cache,中断,mmu,定时器的状态吧,如果引导linux,这些都是需要关闭的。有个machine_cleanup接口,这个就是干这种事的

#330 Re: 全志 SOC » F1C100S PE11 CLK_OUT输出时钟问题 » 2021-07-19 15:50:58

继续给F1C100S填坑,PE11管脚导出clkout,给CIF摄像头的提供时钟源
https://whycan.com/t_6906.html

#331 Re: 全志 SOC » 裸机驱动OV2640显示 » 2021-07-19 15:49:57

继续给F1C100S填坑,PE11管脚导出clkout,给CIF摄像头的提供时钟源
https://whycan.com/t_6906.html

#333 全志 SOC » 继续给F1C100S填坑,PE11管脚导出clkout,给CIF摄像头的提供时钟源 » 2021-07-19 15:41:22

xboot
回复: 11

CLKOUT功能,因全志手册完全没有描述,导致大家根本不知如何使用,这里给大家填完坑了,成果如下:

	"clk-mux@0x01c000f0": {
		"parent": [
			{ "name": "losc", "value": 0 },
			{ "name": "osc32k", "value": 1 },
			{ "name": "hosc", "value": 2 }
		],
		"name": "mux-clkout", "shift": 24, "width": 2,
		"default": { "parent": "hosc" }
	},
	"clk-ratio@0x01c000f0": { "parent": "mux-clkout", "name": "ratio-clkout", "shift": 20, "width": 2, "default": { "rate": 24000000 } },
	"clk-divider@0x01c000f0": { "parent": "ratio-clkout", "name": "div-clkout", "shift": 8, "width": 5, "default": { "rate": 24000000 } },
	"clk-gate@0x01c000f0": {"parent": "div-clkout", "name": "gate-clkout", "shift": 31, "invert": false, "default": { "enable": false } },
	"clk-link": { "parent": "gate-clkout", "name": "link-clkout" },

好吧,好像也没有什么需要细说的,代码已表达得很明确了,剩下的就是设置PE11 pinmux功能到clkout,就可以了,测试过输出24MHZ,12MHZ,6MHZ,当然还可以更低。

#334 Re: 全志 SOC » 给F1C100S编写DMA驱动,并测试NDMA及DDMA的带宽 » 2021-07-19 15:35:40

DDMA的通道4就是USB传输

#define F1C100S_DDMA_PORT_USB		(4)

#335 Re: 司徒开源 » 研究FC3000掌機的開源可行性 » 2021-07-19 11:09:14

全志的DDR,是每24M一档,核心频率你可以每12M步进一下,试试能到多高。带宽测试,linux下,你可以用tinymembench这个程序来测试,测试结果比较详细。

#336 Re: 司徒开源 » 研究FC3000掌機的開源可行性 » 2021-07-19 09:42:40

简单做了下测试,不加电压的情况下,默认2.5V
156MHZ核心频率

xboot: /# wboxtest benchmark
[benchmark]-[memcmp]
 Bandwidth: 29.441MB/s
[benchmark]-[memcpy]
 Bandwidth: 57.540MB/s
[benchmark]-[memmove]
 Bandwidth: 57.540MB/s
[benchmark]-[memset]
 Bandwidth: 283.500MB/s

xboot: /# wboxtest dma benchmark
[dma]-[benchmark]
 Bandwidth: 4.853MB/s
204MHZ核心频率
xboot: /# wboxtest benchmark
[benchmark]-[memcmp]
 Bandwidth: 32.083MB/s
[benchmark]-[memcpy]
 Bandwidth: 76.347MB/s
[benchmark]-[memmove]
 Bandwidth: 76.347MB/s
[benchmark]-[memset]
 Bandwidth: 444.555MB/s
 
 xboot: /# wboxtest dma benchmark
[dma]-[benchmark]
 Bandwidth: 6.290MB/s

当DDR的核心频率从156MHZ,提升到204MHZ时,DDR的带宽提升了32.68%

#337 Re: 司徒开源 » 研究FC3000掌機的開源可行性 » 2021-07-19 09:16:15

@xboot
1_20210719-0911.png
F1C100S里面内置的是一颗DDR2,现在核心频率仅有156MHZ,还有很大提升空间,可以尝试加压下,看看DDR频率能提升到多少,频率提升跟带宽基本是线性关系,和CPU主频提升一样,效果都是很明显的。

2_20210719-0922.png

VCC-DRAM现在默认应该是2.5V,DRAM参考电压是它的1/2,只要提升VCC-DRAM电压就可以超频了。

这里有篇文章描述DDR频率相关的概念,可以看看。
https://blog.csdn.net/qq_29809781/article/details/89421988

#338 Re: 司徒开源 » 研究FC3000掌機的開源可行性 » 2021-07-18 23:42:32

@司徒,提升cpu主频后,如果某些模拟器性能无法再提升了,这个时候得考虑提升ddr的主频了,我之前测试过f1c100s的ddr带宽特别低,不到100MB/S,官方默认运行的ddr频率很低,应该是312MHZ,如果能提升下ddr的频率,带宽问题应该可以改善。结合主频的提升,很多模拟器估计可以流畅运行了。ddr也可以尝试下加压,极限压榨f1c100s的能力

#339 全志 SOC » 给F1C100S编写DMA驱动,并测试NDMA及DDMA的带宽 » 2021-07-18 20:51:11

xboot
回复: 5

F1C100S芯片支持4个NDMA以及4个DDMA。

NDMA支持的端口有

#define F1C100S_NDMA_PORT_IR		(0)
#define F1C100S_NDMA_PORT_OWA		(1)
#define F1C100S_NDMA_PORT_SPI0		(4)
#define F1C100S_NDMA_PORT_SPI1		(5)
#define F1C100S_NDMA_PORT_UART0		(8)
#define F1C100S_NDMA_PORT_UART1		(9)
#define F1C100S_NDMA_PORT_UART2		(10)
#define F1C100S_NDMA_PORT_AUDIO		(12)
#define F1C100S_NDMA_PORT_TP		(13)
#define F1C100S_NDMA_PORT_DAUDIO	(14)
#define F1C100S_NDMA_PORT_SRAM		(16)
#define F1C100S_NDMA_PORT_SDRAM		(17)
#define F1C100S_NDMA_PORT_USB		(20)
#define F1C100S_NDMA_PORT_USB_EP1	(21)
#define F1C100S_NDMA_PORT_USB_EP2	(22)
#define F1C100S_NDMA_PORT_USB_EP3	(23)

DDMA支持的端口有

#define F1C100S_DDMA_PORT_SRAM		(0)
#define F1C100S_DDMA_PORT_SDRAM		(1)
#define F1C100S_DDMA_PORT_LCD		(2)
#define F1C100S_DDMA_PORT_USB		(4)
#define F1C100S_DDMA_PORT_AHB		(9)

这个8个通道编码如下:

#define F1C100S_NDMA_CHANNEL0		(0)
#define F1C100S_NDMA_CHANNEL1		(1)
#define F1C100S_NDMA_CHANNEL2		(2)
#define F1C100S_NDMA_CHANNEL3		(3)
#define F1C100S_DDMA_CHANNEL0		(4)
#define F1C100S_DDMA_CHANNEL1		(5)
#define F1C100S_DDMA_CHANNEL2		(6)
#define F1C100S_DDMA_CHANNEL3		(7)

这两种DMA都拥有MEM TO MEM能力,现在直接用白盒测试工具测试下带宽
测试工具默认使用0通道,也就是NDMA的通道,键入命令,wboxtest dma

xboot: /# wboxtest dma      
[dma]-[benchmark]
 Bandwidth: 6.043MB/s
[dma]-[dmacpy-16bit]
 [wboxtest/dma/dmacpy-16bit.c:91] { pdat->complete }                [OKAY]
 [wboxtest/dma/dmacpy-16bit.c:92] { M[pdat->src == pdat->dst] }     [OKAY]
[dma]-[dmacpy-32bit]
 [wboxtest/dma/dmacpy-32bit.c:91] { pdat->complete }                [OKAY]
 [wboxtest/dma/dmacpy-32bit.c:92] { M[pdat->src == pdat->dst] }     [OKAY]
[dma]-[dmacpy-64bit]
 [wboxtest/dma/dmacpy-64bit.c:91] { pdat->complete }                [OKAY]
 [wboxtest/dma/dmacpy-64bit.c:92] { M[pdat->src == pdat->dst] }     [OKAY]
[dma]-[dmacpy-8bit]
 [wboxtest/dma/dmacpy-8bit.c:91] { pdat->complete }                 [OKAY]
 [wboxtest/dma/dmacpy-8bit.c:92] { M[pdat->src == pdat->dst] }      [OKAY]

修改测试工具的DMA通道到4通道,也就是DDMA的0通道,结果如下:

xboot: /# wboxtest dma
[dma]-[benchmark]
 Bandwidth: 6.938MB/s
[dma]-[dmacpy-16bit]
 [wboxtest/dma/dmacpy-16bit.c:91] { pdat->complete }                [OKAY]
 [wboxtest/dma/dmacpy-16bit.c:92] { M[pdat->src == pdat->dst] }     [OKAY]
[dma]-[dmacpy-32bit]
 [wboxtest/dma/dmacpy-32bit.c:91] { pdat->complete }                [OKAY]
 [wboxtest/dma/dmacpy-32bit.c:92] { M[pdat->src == pdat->dst] }     [OKAY]
[dma]-[dmacpy-64bit]
 [wboxtest/dma/dmacpy-64bit.c:91] { pdat->complete }                [OKAY]
 [wboxtest/dma/dmacpy-64bit.c:92] { M[pdat->src == pdat->dst] }     [OKAY]
[dma]-[dmacpy-8bit]
 [wboxtest/dma/dmacpy-8bit.c:91] { pdat->complete }                 [OKAY]
 [wboxtest/dma/dmacpy-8bit.c:92] { M[pdat->src == pdat->dst] }      [OKAY]

DDMA的带宽要比NDMA稍快一些,但差别不是特别大。

DMA驱动程序路径
https://gitee.com/xboot/xboot/blob/master/src/arch/arm32/mach-trimui/driver/dma-f1c200s.c

编写DMA驱动时,发现dma忙等待信号不是特别可靠,会出现dma还没传输完,就认为空闲了,算一个坑把。这里驱动添加额外的限定条件了,判断了中断的状态,只要中断开着,就认为是忙信号。

static int dma_f1c200s_busying(struct dmachip_t * chip, int offset)
{
	struct dma_f1c200s_pdata_t * pdat = (struct dma_f1c200s_pdata_t *)chip->priv;

	if(offset < chip->ndma)
	{
		if(offset < 4)
		{
			if((read32(pdat->virt + NDMA_CH_CFG(offset)) & (0x3 << 30)) || (read32(pdat->virt + DMA_INT_CTL) & (0x3 << (offset << 1))))
				return 1;
		}
		else
		{
			if((read32(pdat->virt + DDMA_CH_CFG(offset)) & (0x3 << 30)) || (read32(pdat->virt + DMA_INT_CTL) & (0x30000 << ((offset - 4) << 1))))
				return 1;
		}
	}
	return 0;
}

#340 Re: 全志 SOC » 站在微凉大侠的肩膀上,编写F1C100S平台的CVBS IN驱动, 也就是驱动完全找不到北的TVD模块。 » 2021-07-18 18:22:30

MTLINUX 说:

按全志参考电路的板子,接的模拟摄像头,信号和地都接上的。效果如下:https://whycan.com/files/members/2190/微信图片_20210718161821.jpg

效果看起来还不错,估计还是歪朵拉没有按参考电路设计的问题,信号源出问题的概率太低,只有可能是这个原因了。

#341 Re: 全志 SOC » 站在微凉大侠的肩膀上,编写F1C100S平台的CVBS IN驱动, 也就是驱动完全找不到北的TVD模块。 » 2021-07-18 09:59:58

微凉VeiLiang 说:
微凉VeiLiang 说:

赞,显示效果上个月又调试了一下,发现有个寄存器需要调下,锯齿效果会好很多,晚点发出来

TVD_REG_BASE+0x001c 这个寄存器的bit0 要等于0.原来初始化写的0x0087002f改成0x0087002a 显示效果好很多

已参考你的BoloRTT里面的配置,这个bit已设为0了,现在我这边环境应该有点问题,现在没能找到带有全志参考电路的板子,没办法进一步确认显示效果。

1_20210718-0957.png

不知哪位同学有这种板子,可以测试下,看看效果,怎么样,荔枝派,歪朵拉,都是没有的这种电路的。

#342 Re: 全志 SOC » 站在微凉大侠的肩膀上,编写F1C100S平台的CVBS IN驱动, 也就是驱动完全找不到北的TVD模块。 » 2021-07-17 16:30:04

补充一个命令,如果你想用CVBS摄像头来扫描二维码,则只需执行如下命令,就可以扫描二维码了

wboxtest camera qrcode

#343 全志 SOC » 站在微凉大侠的肩膀上,编写F1C100S平台的CVBS IN驱动, 也就是驱动完全找不到北的TVD模块。 » 2021-07-17 15:46:49

xboot
回复: 28

首先,致谢微凉大侠的工作,让驱动TVD模块,得以成为可能。

分享F1C100S的TVD源码,TVIN0接CVBS摄像头采集数据显示到LCD屏
https://whycan.com/t_5612.html

经过两天的研究,搜遍整个互联网,综合所有能找到的资料,编写了一个TVD驱动,虽然不完美,还有很多坑,但还是在这里总结下,避免后人重复踩坑。

1,首先是修改pll video时钟,因为TVD模块需要使用27MHZ,这里一般需要将pll设为297MHZ, 但因为需要兼容某些屏幕,这个时钟偏低,重新计算了一个时钟378MHZ,这个也可以方便的分频出27MHZ出来。
2,关于TVD寄存器,这个全志是完全没有释放出来,我这里找到了D1手册,还有F133手册里有TVD的相关说明,虽然完全对不上,但可以用来理解TVD模块,然后有针对性的去找参考。
3,实验平台采用歪朵拉r3,这个硬件上应该存在异常,我这边测试时,去掉了R30这个75欧匹配电组,不然完全找不到信号,一直蓝屏,还有一个需要注意的,CVBS的地也不能接,如果接了,就白屏,验证过,不是驱动的亮度设置问题,即使设成亮度最低,也一样白屏。怀疑要么是我信号源问题,要么是歪朵拉硬件问题。
4,检测外部信号的制式,在初始化后,需要做个延时,大概100ms不然无法正常检测。
5,现在驱动里,做了制式的判断,PAL制720X576,NTSC制720X480, YUV为常用的NV12格式。通过video_frame_to_argb函数可以很方便的转成RGB
6,现在显示效果不太好,怀疑是我这边环境问题,感兴趣的可以测试下。

测试方法:
1,使用歪朵拉的R3,去掉R30这个电阻,接入CVBS信号,不共地。
2,编译源码,见https://gitee.com/xboot/xboot/blob/master/src/arch/arm32/mach-f1c200s/README-zh-CN.md
3,  打开白盒测试选项,在Makefile中的CFG_WBOXTEST     ?= n 改成y就行
4,启动程序,进入命令行后,键入 wboxtest camera preview命令即可在屏幕上看到图像,屏幕为5寸800x480 rgb接口通用屏幕。

驱动文件路径
https://gitee.com/xboot/xboot/blob/master/src/arch/arm32/mach-f1c200s/driver/cam-f1c200s-tvd.c

演示视频

欢迎大家继续研究TVD模块,全志的TVD模块技术上比较先进,自动增益控制,3D梳状滤波器,对比度,饱和度,亮度,都可以调节,3D滤波器需要4M的内存,貌似有点大。

#344 Re: 全志 SOC » 随便水一贴,电阻触摸屏校正 » 2021-07-17 14:18:48

如果这个电阻屏的阻值是非线性的话,建议你换掉这个垃圾供应商,材料一致性都做不好,靠算法来解决是歪门邪道,如果真要去搞非线性校正,参数就不是6个了,你要做的工作是用一组参数,能将一个曲面给展平。这数学得过关,可以当成博士的毕业课题了,估计能搞死人。

#345 Re: 全志 SOC » 分享F1C100S的TVD源码,TVIN0接CVBS摄像头采集数据显示到LCD屏 » 2021-07-17 14:10:56

哇酷小二 说:

https://whycan.com/files/members/3907/QQ图片20210604220200.jpg

垃圾堆翻出一块解码板, 自带软件显示TV CVBS 正常



https://whycan.com/files/members/3907/QQ图片20210604220421.jpg
用楼主的代码显示这样了 😂😂😂😂😂😂😂


歪朵拉的板子设计TVD电路有异常,你将R30去掉,然后CVBS信号不要供地,应该就能看到图像了。如果共地,则完全是一个白屏。

#346 Re: 全志 SOC » 随便水一贴,电阻触摸屏校正 » 2021-07-17 08:52:28

校正算法需要跟坐标映射运算保持对应关系,两者之间要互为逆运算的关系,不要随便跟其他平台的方案随便搭配,至少这7个参数的顺序跟tslib里面的是不对应的。

#347 Re: 全志 SOC » XUI移植基本完成 https://gitee.com/891085309/xui , enjoy it! (转) » 2021-07-16 13:56:03

暂时没有,lua期望能上更高级点的gui,声明式之类的,xui还是c写更简单点。

#348 Re: 全志 SOC » XUI移植基本完成 https://gitee.com/891085309/xui , enjoy it! (转) » 2021-07-16 11:49:52

如何使用xui,参考cmd-overview.c这个程序,用c写的。
lua没有绑定xui,两者完全独立的

#349 Re: 全志 SOC » 随便水一贴,电阻触摸屏校正 » 2021-07-16 10:49:39

tscal <framebuffer> <input>

后面两个参数,一个fb设备名,一个touch screen 设备名

#353 全志 SOC » 随便水一贴,电阻触摸屏校正 » 2021-07-15 19:54:57

xboot
回复: 11

电阻触摸屏校正,一般采用5点校正法,核心就是解方程,得系数。具体实现tslib里面就有,但裸机的话,那就的靠自己了,今天抽了点时间,重现实现了之前因框架变化而屏蔽掉的代码,算补全这个功能。

求解方程实现函数

struct tscal_t {
	int x[5], xfb[5];
	int y[5], yfb[5];
	int a[7];
	int index;
};

static int perform_calibration(struct tscal_t * cal)
{
	float n, x, y, x2, y2, xy, z, zx, zy;
	float det, a, b, c, e, f, i;
	float scaling = 65536.0;
	int j;

	n = x = y = x2 = y2 = xy = 0;
	for(j = 0; j < 5; j++)
	{
		n += 1.0;
		x += (float)cal->x[j];
		y += (float)cal->y[j];
		x2 += (float)(cal->x[j]*cal->x[j]);
		y2 += (float)(cal->y[j]*cal->y[j]);
		xy += (float)(cal->x[j]*cal->y[j]);
	}

	det = n * (x2 * y2 - xy * xy) + x * (xy * y - x * y2) + y * (x * xy - y * x2);
	if(det < 0.1 && det > -0.1)
		return 0;

	a = (x2 * y2 - xy * xy) / det;
	b = (xy * y - x * y2) / det;
	c = (x * xy - y * x2) / det;
	e = (n * y2 - y * y) / det;
	f = (x * y - n * xy) / det;
	i = (n * x2 - x * x) / det;

	z = zx = zy = 0;
	for(j = 0; j < 5; j++)
	{
		z += (float)cal->xfb[j];
		zx += (float)(cal->xfb[j] * cal->x[j]);
		zy += (float)(cal->xfb[j] * cal->y[j]);
	}
	cal->a[0] = (int)((b * z + e * zx + f * zy) * (scaling));
	cal->a[1] = (int)((c * z + f * zx + i * zy) * (scaling));
	cal->a[2] = (int)((a * z + b * zx + c * zy) * (scaling));

	z = zx = zy = 0;
	for(j = 0; j < 5; j++)
	{
		z += (float)cal->yfb[j];
		zx += (float)(cal->yfb[j] * cal->x[j]);
		zy += (float)(cal->yfb[j] * cal->y[j]);
	}
	cal->a[3] = (int)((b * z + e * zx + f * zy) * (scaling));
	cal->a[4] = (int)((c * z + f * zx + i * zy) * (scaling));
	cal->a[5] = (int)((a * z + b * zx + c * zy) * (scaling));
	cal->a[6] = (int)scaling;

	return 1;
}

校正参数有7个数,最后一个是scaling,一般是65536

	"ts-ns2009@0": {
		"i2c-bus": "i2c-v3s.0",
		"slave-address": 72,
		"median-filter-length": 5,
		"mean-filter-length": 5,
		"calibration": [14052, 21, -2411064, -67, 8461, -1219628, 65536],
		"poll-interval-ms": 10
	},

这里有个特殊的校正参数,设定这个校正参数后,坐标不做任何变化,采样多少,就输出多少,用于获取原始采样值

[1, 0, 0, 0, 1, 0, 1]

有了校正参数后,所有坐标通过,如下公式,就可以进行校正坐标了

	*x = (filter->cal[2] + filter->cal[0] * tx + filter->cal[1] * ty) / filter->cal[6];
	*y = (filter->cal[5] + filter->cal[3] * tx + filter->cal[4] * ty) / filter->cal[6];

校正程序代码
https://gitee.com/xboot/xboot/blob/master/src/kernel/command/cmd-tscal.c

好了,水完了!

#355 Re: 全志 SOC » C语言调汇编的程序跳转问题 » 2021-07-15 16:03:50

额,C语言跳转执行,没必要搞汇编,c也是很强大的,来函数强制转换就行,能用C还是用C吧, 不得已才用汇编,或者机器码。

/*
 * This function copies SD/MMC card data to memory.
 * always use EPLL source clock. this function works at 20Mhz.
 *
 * @param ch 	 : HSMMC controller channel number
 * @param sector : source card(SD/MMC) address (it must block address).
 * @param count  : number of blocks to copy.
 * @param mem    : memory to copy to.
 * @param init 	 : reinitialize or not.
 * @return bool(u8_t) - success or failure.
 */
#define irom_sdmmc_to_mem(ch, sector, count, mem, init) \
	(((u8_t(*)(s32_t, u32_t, u16_t, u32_t *, s32_t))(*((u32_t *)(0xd0037f98))))(ch, sector, count, mem, init))

#357 Re: 全志 SOC » 乡下老鼠与城里老鼠交了个朋友,我来试试PWM直驱喇叭 » 2021-07-15 11:50:16

就是ease相关的缓动函数,任何变量在变化时,都可以用上缓动函数,增强体验。3D音效也是一个很庞大的课题。比如敌人围着你转了一圈叫嚣着,那么你的应该要听到,这家伙的声音围着你也转了一圈,人的双耳是有能力进行声源定位的,所以做游戏时,这种场景也得模拟出来,一切都为了沉静式体验。

#358 Re: 全志 SOC » 乡下老鼠与城里老鼠交了个朋友,我来试试PWM直驱喇叭 » 2021-07-15 11:12:50

不同采样率,不同通道数,不同量化深度,这些音源一起混音,直接去写这种算法,估计头都会炸。
现在xboot的方法是,将音源统一采样到48KHZ,双通道,16bit量化,有符号小端格式,这些音源然后去混音就简单了。
而且可以对每一个音源进行各种操作,比如设定循环次数,调整左右声道的音量,gain,pan,pitch,之类的都可以,当然pitch变调这个就没实现了。

如果要更高级的,比如控制脚步声,慢慢消失,等,这种就需要上3D 音效框架了,做游戏的用得多,其他场景很少用。

#360 Re: 全志 SOC » 用 MSVC2017 编译 XFEL 项目 » 2021-07-14 16:36:34

要想全擦除,就创建一个全FF的文件,写进去不就行了

#362 Re: 全志 SOC » 乡下老鼠与城里老鼠交了个朋友,我来试试PWM直驱喇叭 » 2021-07-14 12:18:34

是的,f1c100s的音频裸机驱动没找到参考,不知谁研究过这个问题,如果有参考的话,可以去写个真正的音频驱动

#363 Re: 全志 SOC » 乡下老鼠与城里老鼠交了个朋友,我来试试PWM直驱喇叭 » 2021-07-14 09:12:53

此实验,没有采用任何低通滤波器,也没有用电容隔直,pwm输出的方波直接驱动,驱动实现上,考虑到CPU的负荷,任何码流都重采样8KHZ, 16BITS, 单通道。CPU每125微秒中断一次,PWM载波频率62.5KHZ。

这是个通用驱动,所有平台都可以复用,只要填个JSON设备树即可。整个驱动仅300行左右,考虑通用性,仅使用了定时器和PWM,未采用dma。

驱动代码

/*
 * driver/audio-pwm.c
 *
 * Copyright(c) 2007-2021 Jianjun Jiang <8192542@qq.com>
 * Official site: http://xboot.org
 * Mobile phone: +86-18665388956
 * QQ: 8192542
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 *
 */

#include <xboot.h>
#include <pwm/pwm.h>
#include <audio/audio.h>

struct audio_pwm_pdata_t {
	struct timer_t timer;
	struct fifo_t * fifo;
	struct pwm_t * pwm;
	int polarity;

	enum audio_rate_t rate;
	enum audio_format_t fmt;
	int ch;
	audio_callback_t cb;
	void * data;
	int running;
};

static void audio_pwm_resample(int16_t * out, int osr, int osample, int16_t * in, int isr, int isample)
{
	if(out && in)
	{
		float fixed = (1.0 / (1LL << 32));
		uint64_t frac = (1LL << 32);
		uint64_t step = ((uint64_t)((float)isr / (float)osr * frac + 0.5));
		uint64_t offset = 0;
		for(int i = 0; i < osample; i += 1)
		{
			*out++ = (int16_t)(in[0] + (in[1] - in[0]) * ((float)(offset >> 32) + ((offset & (frac - 1)) * fixed)));
			offset += step;
			in += (offset >> 32);
			offset &= (frac - 1);
		}
	}
}

static int audio_pwm_timer_function(struct timer_t * timer, void * data)
{
	struct audio_t * audio = (struct audio_t *)(data);
	struct audio_pwm_pdata_t * pdat = (struct audio_pwm_pdata_t *)audio->priv;
	uint32_t inbuf[256];
	int16_t outbuf[512];
	int16_t v;
	int isample, osample;
	int i;

	if(pdat->running)
	{
		if(__fifo_len(pdat->fifo) <= 0)
		{
			switch(pdat->fmt)
			{
			case AUDIO_FORMAT_S8:
				if(pdat->ch == 1)
				{
					isample = pdat->cb(pdat->data, inbuf, sizeof(inbuf));
					if(isample > 0)
					{
						osample = isample * 8000.0 / pdat->rate;
						osample -= osample % 2;
						int8_t * p = &((int8_t *)inbuf)[(isample - 1)];
						int16_t * q = &((int16_t *)inbuf)[osample - 1];
						for(i = 0; i < isample; i++)
							*q-- = (int16_t)((int)(*p--) * 128);
						audio_pwm_resample(outbuf, 8000, osample, (int16_t *)inbuf, pdat->rate, isample);
						__fifo_put(pdat->fifo, (unsigned char *)outbuf, osample << 1);
					}
				}
				else if(pdat->ch == 2)
				{
					isample = pdat->cb(pdat->data, inbuf, sizeof(inbuf)) >> 1;
					if(isample > 0)
					{
						osample = isample * 8000.0 / pdat->rate;
						osample -= osample % 2;
						int8_t * p = &((int8_t *)inbuf)[(isample - 1) << 1];
						int16_t * q = &((int16_t *)inbuf)[osample - 1];
						for(i = 0; i < isample; i++, p-=2)
							*q-- = (int16_t)(((int)p[0] + (int)p[1]) * 128);
						audio_pwm_resample(outbuf, 8000, osample, (int16_t *)inbuf, pdat->rate, isample);
						__fifo_put(pdat->fifo, (unsigned char *)outbuf, osample << 1);
					}
				}
				break;
			case AUDIO_FORMAT_S16:
				if(pdat->ch == 1)
				{
					isample = pdat->cb(pdat->data, inbuf, sizeof(inbuf)) >> 1;
					if(isample > 0)
					{
						osample = isample * 8000.0 / pdat->rate;
						osample -= osample % 2;
						audio_pwm_resample(outbuf, 8000, osample, (int16_t *)inbuf, pdat->rate, isample);
						__fifo_put(pdat->fifo, (unsigned char *)outbuf, osample << 1);
					}
				}
				else if(pdat->ch == 2)
				{
					isample = pdat->cb(pdat->data, inbuf, sizeof(inbuf)) >> 2;
					if(isample > 0)
					{
						osample = isample * 8000.0 / pdat->rate;
						osample -= osample % 2;
						int16_t * p = (int16_t *)inbuf;
						int16_t * q = (int16_t *)inbuf;
						for(i = 0; i < isample; i++, p+=2)
							*q++ = (int16_t)(((int)p[0] + (int)p[1]) >> 1);
						audio_pwm_resample(outbuf, 8000, osample, (int16_t *)inbuf, pdat->rate, isample);
						__fifo_put(pdat->fifo, (unsigned char *)outbuf, osample << 1);
					}
				}
				break;
			case AUDIO_FORMAT_S24:
				if(pdat->ch == 1)
				{
					isample = pdat->cb(pdat->data, inbuf, sizeof(inbuf)) / 3;
					if(isample > 0)
					{
						osample = isample * 8000.0 / pdat->rate;
						osample -= osample % 2;
						int8_t * p = (int8_t *)inbuf;
						int16_t * q = (int16_t *)inbuf;
						for(i = 0; i < isample; i++, p+=3)
							*q++ = (int16_t)((int32_t)((p[2] << 24) | (p[1] << 16) | (p[0] << 8)) >> 16);
						audio_pwm_resample(outbuf, 8000, osample, (int16_t *)inbuf, pdat->rate, isample);
						__fifo_put(pdat->fifo, (unsigned char *)outbuf, osample << 1);
					}
				}
				else if(pdat->ch == 2)
				{
					isample = pdat->cb(pdat->data, inbuf, sizeof(inbuf)) / 6;
					if(isample > 0)
					{
						osample = isample * 8000.0 / pdat->rate;
						osample -= osample % 2;
						int8_t * p = (int8_t *)inbuf;
						int16_t * q = (int16_t *)inbuf;
						for(i = 0; i < isample; i++, p+=6)
						{
							int32_t l = (int32_t)((p[2] << 24) | (p[1] << 16) | (p[0] << 8));
							int32_t r = (int32_t)((p[5] << 24) | (p[4] << 16) | (p[3] << 8));
							*q++ = (int16_t)((l + r) >> 17);
						}
						audio_pwm_resample(outbuf, 8000, osample, (int16_t *)inbuf, pdat->rate, isample);
						__fifo_put(pdat->fifo, (unsigned char *)outbuf, osample << 1);
					}
				}
				break;
			case AUDIO_FORMAT_S32:
				if(pdat->ch == 1)
				{
					isample = pdat->cb(pdat->data, inbuf, sizeof(inbuf)) >> 2;
					if(isample > 0)
					{
						osample = isample * 8000.0 / pdat->rate;
						osample -= osample % 2;
						int32_t * p = (int32_t *)inbuf;
						int16_t * q = (int16_t *)inbuf;
						for(i = 0; i < isample; i++)
							*q++ = (int16_t)(*p++ >> 16);
						audio_pwm_resample(outbuf, 8000, osample, (int16_t *)inbuf, pdat->rate, isample);
						__fifo_put(pdat->fifo, (unsigned char *)outbuf, osample << 1);
					}
				}
				else if(pdat->ch == 2)
				{
					isample = pdat->cb(pdat->data, inbuf, sizeof(inbuf)) >> 3;
					if(isample > 0)
					{
						osample = isample * 8000.0 / pdat->rate;
						osample -= osample % 2;
						int32_t * p = (int32_t *)inbuf;
						int16_t * q = (int16_t *)inbuf;
						for(i = 0; i < isample; i++, p+=2)
							*q++ = (int16_t)((p[0] + p[1]) >> 17);
						audio_pwm_resample(outbuf, 8000, osample, (int16_t *)inbuf, pdat->rate, isample);
						__fifo_put(pdat->fifo, (unsigned char *)outbuf, osample << 1);
					}
				}
				break;
			default:
				break;
			}
		}
		if(__fifo_get(pdat->fifo, (unsigned char *)&v, 2) == 2)
		{
			pwm_config(pdat->pwm, ((((int)v + 32768) * 16000) >> 16), 16000, pdat->polarity);
			pwm_enable(pdat->pwm);
			timer_forward_now(&pdat->timer, us_to_ktime(125));
			return 1;
		}
	}
	__fifo_reset(pdat->fifo);
	pwm_disable(pdat->pwm);
	pdat->running = 0;
	return 0;
}

static void audio_pwm_playback_start(struct audio_t * audio, enum audio_rate_t rate, enum audio_format_t fmt, int ch, audio_callback_t cb, void * data)
{
	struct audio_pwm_pdata_t * pdat = (struct audio_pwm_pdata_t *)audio->priv;

	if(!pdat->running)
	{
		pdat->rate = rate;
		pdat->fmt = fmt;
		pdat->ch = ch;
		pdat->cb = cb;
		pdat->data = data;
		timer_start_now(&pdat->timer, ms_to_ktime(1));
		pdat->running = 1;
	}
}

static void audio_pwm_playback_stop(struct audio_t * audio)
{
	struct audio_pwm_pdata_t * pdat = (struct audio_pwm_pdata_t *)audio->priv;
	pdat->cb = NULL;
	pdat->data = NULL;
}

static int audio_pwm_ioctl(struct audio_t * audio, const char * cmd, void * arg)
{
	return -1;
}

static struct device_t * audio_pwm_probe(struct driver_t * drv, struct dtnode_t * n)
{
	struct audio_pwm_pdata_t * pdat;
	struct pwm_t * pwm;
	struct audio_t * audio;
	struct device_t * dev;

	if(!(pwm = search_pwm(dt_read_string(n, "pwm-name", NULL))))
		return NULL;

	pdat = malloc(sizeof(struct audio_pwm_pdata_t));
	if(!pdat)
		return NULL;

	audio = malloc(sizeof(struct audio_t));
	if(!audio)
	{
		free(pdat);
		return NULL;
	}

	timer_init(&pdat->timer, audio_pwm_timer_function, audio);
	pdat->fifo = fifo_alloc(1024);
	pdat->pwm = pwm;
	pdat->polarity = dt_read_bool(n, "pwm-polarity", 0);
	pdat->running = 0;

	audio->name = alloc_device_name(dt_read_name(n), -1);
	audio->playback_start = audio_pwm_playback_start;
	audio->playback_stop = audio_pwm_playback_stop;
	audio->capture_start = NULL;
	audio->capture_stop = NULL;
	audio->ioctl = audio_pwm_ioctl;
	audio->priv = pdat;

	if(!(dev = register_audio(audio, drv)))
	{
		timer_cancel(&pdat->timer);
		fifo_free(pdat->fifo);
		free_device_name(audio->name);
		free(audio->priv);
		free(audio);
		return NULL;
	}
	return dev;
}

static void audio_pwm_remove(struct device_t * dev)
{
	struct audio_t * audio = (struct audio_t *)dev->priv;
	struct audio_pwm_pdata_t * pdat = (struct audio_pwm_pdata_t *)audio->priv;

	if(audio)
	{
		unregister_audio(audio);
		timer_cancel(&pdat->timer);
		fifo_free(pdat->fifo);
		free_device_name(audio->name);
		free(audio->priv);
		free(audio);
	}
}

static void audio_pwm_suspend(struct device_t * dev)
{
}

static void audio_pwm_resume(struct device_t * dev)
{
}

static struct driver_t audio_pwm = {
	.name		= "audio-pwm",
	.probe		= audio_pwm_probe,
	.remove		= audio_pwm_remove,
	.suspend	= audio_pwm_suspend,
	.resume		= audio_pwm_resume,
};

static __init void audio_pwm_driver_init(void)
{
	register_driver(&audio_pwm);
}

static __exit void audio_pwm_driver_exit(void)
{
	unregister_driver(&audio_pwm);
}

driver_initcall(audio_pwm_driver_init);
driver_exitcall(audio_pwm_driver_exit);

https://gitee.com/xboot/xboot/blob/master/src/driver/audio/audio-pwm.c

#364 全志 SOC » 乡下老鼠与城里老鼠交了个朋友,我来试试PWM直驱喇叭 » 2021-07-14 09:06:48

xboot
回复: 12

先来听听:
1,接普通功放播放音乐

2,接普通功放播放语音

3,接普通功放音乐与语音一起混音播放

4,不接功放,pwm直驱喇叭,没有低通,没有电容隔直

#368 Re: 全志 SOC » XUI移植基本完成 https://gitee.com/891085309/xui , enjoy it! (转) » 2021-07-07 09:04:19

有个头依赖问题,下面是临时的修复方式

diff --git a/xui/xui.c b/xui/xui.c
index 6718af0..0e4ebcb 100644
--- a/xui/xui.c
+++ b/xui/xui.c
@@ -31,7 +31,8 @@
 #include <xui/xui.h>
 #include <shash.h>
 #include <graphic/surface.h>
-#include <bsd/string.h>
+//#include <bsd/string.h>^M
+extern size_t strlcpy(char * dest, const char * src, size_t n);^M
 
 static const char style_default[] = X({
        "primary": {
@@ -1646,4 +1647,4 @@ void xui_add_font(struct xui_context_t * ctx,  const char * family, const char *
 {
        if(ctx)
                font_add(ctx->f, family, path);
-}
\ No newline at end of file
+}^M

#369 Re: 全志 SOC » 为方便大家研究全志RISCV D1芯片,花了点时间编写了一个精简版的裸机程序,方便大家学习参考。 » 2021-07-02 16:43:19

这是中断编号,手册里有的

#define D1_IRQ_GPIOB_NS			(85)
#define D1_IRQ_GPIOC_NS			(87)
#define D1_IRQ_GPIOD_NS			(89)
#define D1_IRQ_GPIOE_NS			(91)
#define D1_IRQ_GPIOF_NS			(93)
#define D1_IRQ_GPIOG_NS			(95)

#370 Re: 司徒开源 » 研究FC3000掌機的開源可行性 » 2021-07-02 15:41:31

trimui原厂真应该来挖坑网看下这篇文章

在全志芯片F1C100S/V3S/V831上实现裸机加密方案,防盗版进行时(不采用专用加密芯片)。
https://whycan.com/t_6507.html

虽然没采用加密芯片,但加密强度甩trimui加密方案几条街。没有完整性保护的固件,都是可以爆破的。

#371 Re: 全志 SOC » 求一份全志f1c100s的8080接口的lcd驱动 » 2021-07-02 14:58:05

参考xboot里面吧,miyoo平台的bsp包里有8080相关驱动,不过,初始化还是通过gpio模拟方式来实现的,显示数据传输是用的硬件控制器,关于如何直接利用硬件控制器来实现初始化,而不使用gpio模拟,这个我还没看到哪里有参考,你可以自行研究下,如果有结论,也不妨在这里分享一下。

#372 Re: 司徒开源 » 研究FC3000掌機的開源可行性 » 2021-07-02 14:51:57

这加密究竟加了个啥,游戏rom加密?限制只能玩trimui释放出的rom?还是限制无加密芯片,无法玩任何游戏。
如果是第二种,那么内核里的鉴权也需要去掉,这样,就可以去掉加密芯片,然后抄板了。

#374 Re: 司徒开源 » 研究FC3000掌機的開源可行性 » 2021-07-02 10:54:05

I2C2总线上挂了一个加密芯片,下面是能找到的相关信息,不过这个研究起来意义也不大

[    2.282601] ++++++++++++++++ alpu_init +++++++++++++
[    2.288299] proc create successtrimui_sunxi_gpio_init: ver Sep 19 2020
[    2.299220] serial: 0000000B5C
[    2.312637] Bypass Test OK!
[    2.315843] test enc
[    2.323461] ret=0
[    2.325597] test dec
[    2.333355] ret=0
[    2.335500] DEC: ARE LINK TEST 12
[    2.339584] -------- keytabcheck_init -------
xboot: /sys/device/i2c/i2c-f1c200s.2# cat detect
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:                         -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- 1c -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --  

#375 Re: 司徒开源 » 研究FC3000掌機的開源可行性 » 2021-07-02 09:53:10

提供两种方法,在不破坏trimui原版spi nand 镜像,或者短路spi nand管脚进入fel模式的方案。

第一种,制作一个TF卡,里面烧写一个fel-sdboot.sunxi镜像即可

dd if=fel-sdboot.sunxi of=/dev/sdX bs=1024 seek=8

第二种,引出trimui的串口1,然后在串口终端里一直按着按键“2”,然后trimui开机,这时就会立即进入fel模式

貌似还有第三种,L+R一起按着开机,然后就进入fel了。

#376 Re: 司徒开源 » 研究FC3000掌機的開源可行性 » 2021-07-02 09:47:09

深度怀疑PE5根本就不是控制红色LED的,而是控制某路电源,没分析硬件,不知道啥情况。

#377 Re: 司徒开源 » 研究FC3000掌機的開源可行性 » 2021-07-02 09:10:48

https://github.com/xboot/xboot/commit/14d2c3a114fef60c649ca2b3a5d77978b54d506a
就是这段代码不能加,这个仅仅是实现红色led灯心跳功能。

	"led-gpio@0": {
		"gpio": 133,
		"gpio-config": 1,
		"active-low": false,
		"default-brightness": 0
	},

	"ledtrigger-heartbeat@0": {
		"led-name": "led-gpio.0",
		"period-ms": 1260
	},

#define F1C200S_GPIOE5            (133)

#378 Re: 司徒开源 » 研究FC3000掌機的開源可行性 » 2021-07-02 08:49:22


显示不闪烁了,但屏幕整体右下方偏移。

新版本,还有一个异常,就是红色LED灯的拉高,拉低,会影响屏幕,高低变化时,屏幕会变化,估计是背光,或者LCD电源被影响了。

#380 Re: 司徒开源 » 研究FC3000掌機的開源可行性 » 2021-07-01 22:06:38

	"fb-f1c200s@0": {
		"clock-name-defe": "link-defe",
		"clock-name-debe": "link-debe",
		"clock-name-tcon": "link-tcon",
		"reset-defe": 46,
		"reset-debe": 44,
		"reset-tcon": 36,
		"width": 320,
		"height": 240,
		"physical-width": 41,
		"physical-height": 31,
		"clock-frequency": 19000000,
		"hfront-porch": 749,
		"hback-porch": 38,
		"hsync-len": 18,
		"vfront-porch": 36,
		"vback-porch": 6,
		"vsync-len": 4,
		"hsync-active": false,
		"vsync-active": false,
		"den-active": true,
		"clk-active": true,
		"backlight": "led-pwm-bl.0"
	},

时序参数是这样,"hfront-porch": 749, 估计没人敢设这么大,哈哈

#381 Re: 司徒开源 » 研究FC3000掌機的開源可行性 » 2021-07-01 22:04:36

屏幕颜色显示正确了,但还是有一点点抖动,估计是需要提升video 相关的pll 到297M

#382 Re: 司徒开源 » 研究FC3000掌機的開源可行性 » 2021-07-01 21:37:21

1_20210701-2136.png

比较这个地方,跟你的是不一致的

#383 Re: 司徒开源 » 研究FC3000掌機的開源可行性 » 2021-07-01 20:31:51

@司徒
trimui硬件存在多个版本,我现在手上的版本,跟你不太一致,IO,有更换,请注意!比如LCD的 reset管脚,SD卡的cd脚,等等

#384 Re: 司徒开源 » 研究FC3000掌機的開源可行性 » 2021-07-01 18:29:01

我补充个trimui官方镜像相关gpio分配信息

GPIOs 0-191, platform/pio, pio:
 gpio-0   (GPIO Key Up         ) in  hi
 gpio-96  (GPIO Key L          ) in  hi
 gpio-97  (GPIO Key R          ) in  hi
 gpio-98  (GPIO Key X          ) in  hi
 gpio-108 (GPIO Key B          ) in  hi
 gpio-109 (GPIO Key START      ) in  hi
 gpio-110 (GPIO Key SELECT     ) in  hi
 gpio-111 (alpu_scl            ) out hi
 gpio-112 (alpu_sda            ) out hi
 gpio-113 (GPIO Key A          ) in  hi
 gpio-115 (GPIO Key Y          ) in  hi
 gpio-129 (lcd_reset           ) out hi
 gpio-130 (GPIO Key Down       ) in  hi
 gpio-131 (sdc0 cd             ) in  hi
 gpio-132 (GPIO Key Left       ) in  hi
 gpio-134 (?                   ) in  hi
 gpio-135 (otg_det             ) in  lo
 gpio-136 (GPIO Key Right      ) in  hi
 gpio-137 (otg_id              ) in  hi
 gpio-139 (GPIO Key MENU       ) in  hi
platform/1c21000.pwm, 2 PWM devices
 pwm-0   ((null)              ):
 pwm-1   (lcd                 ): requested enabled
Requested pin control handlers their pinmux maps:
device: pio current state: none
device: twi0 current state: default
  state: default
    type: MUX_GROUP controller pio group: PD12 (24) function: twi0 (19)
    type: CONFIGS_GROUP controller pio group PD12 (24) 00000000 00000000 00000000
    type: MUX_GROUP controller pio group: PD0 (12) function: twi0 (19)
    type: CONFIGS_GROUP controller pio group PD0 (12) 00000000 00000000 00000000
  state: sleep
    type: MUX_GROUP controller pio group: PD12 (24) function: io_disabled (6)
    type: CONFIGS_GROUP controller pio group PD12 (24) 00140009 00000005
    type: MUX_GROUP controller pio group: PD0 (12) function: io_disabled (6)
    type: CONFIGS_GROUP controller pio group PD0 (12) 00140009 00000005
device: uart1 current state: default
  state: default
    type: MUX_GROUP controller pio group: PA2 (2) function: uart1 (4)
    type: CONFIGS_GROUP controller pio group PA2 (2) 00000003 00000000 00000000
    type: MUX_GROUP controller pio group: PA3 (3) function: uart1 (4)
    type: CONFIGS_GROUP controller pio group PA3 (3) 00000003 00000000 00000000
  state: sleep
    type: MUX_GROUP controller pio group: PA3 (3) function: io_disabled (6)
    type: CONFIGS_GROUP controller pio group PA3 (3) 00140009 00000003
    type: MUX_GROUP controller pio group: PA2 (2) function: io_disabled (6)
    type: CONFIGS_GROUP controller pio group PA2 (2) 00140009 00000003
device: spinand current state: default
  state: default
    type: MUX_GROUP controller pio group: PC1 (9) function: spi0 (14)
    type: CONFIGS_GROUP controller pio group PC1 (9) 00000003 00000000 00000000
    type: MUX_GROUP controller pio group: PC0 (8) function: spi0 (14)
    type: CONFIGS_GROUP controller pio group PC0 (8) 00000000 00000000 00000000
    type: MUX_GROUP controller pio group: PC3 (11) function: spi0 (14)
    type: CONFIGS_GROUP controller pio group PC3 (11) 00000000 00000000 00000000
    type: MUX_GROUP controller pio group: PC2 (10) function: spi0 (14)
    type: CONFIGS_GROUP controller pio group PC2 (10) 00000000 00000000 00000000
  state: sleep
    type: MUX_GROUP controller pio group: PC0 (8) function: io_disabled (6)
    type: CONFIGS_GROUP controller pio group PC0 (8) 00140009 00000005
    type: MUX_GROUP controller pio group: PC1 (9) function: io_disabled (6)
    type: CONFIGS_GROUP controller pio group PC1 (9) 00140009 00000005
    type: MUX_GROUP controller pio group: PC2 (10) function: io_disabled (6)
    type: CONFIGS_GROUP controller pio group PC2 (10) 00140009 00000005
    type: MUX_GROUP controller pio group: PC3 (11) function: io_disabled (6)
    type: CONFIGS_GROUP controller pio group PC3 (11) 00140009 00000005
device: sdc0 current state: sleep
  state: default
    type: MUX_GROUP controller pio group: PF0 (47) function: sdc0 (29)
    type: CONFIGS_GROUP controller pio group PF0 (47) 00280009 00000003 00000000
    type: MUX_GROUP controller pio group: PF1 (48) function: sdc0 (29)
    type: CONFIGS_GROUP controller pio group PF1 (48) 00280009 00000003 00000000
    type: MUX_GROUP controller pio group: PF2 (49) function: sdc0 (29)
    type: CONFIGS_GROUP controller pio group PF2 (49) 00280009 00000003 00000000
    type: MUX_GROUP controller pio group: PF3 (50) function: sdc0 (29)
    type: CONFIGS_GROUP controller pio group PF3 (50) 00280009 00000003 00000000
    type: MUX_GROUP controller pio group: PF4 (51) function: sdc0 (29)
    type: CONFIGS_GROUP controller pio group PF4 (51) 00280009 00000003 00000000
    type: MUX_GROUP controller pio group: PF5 (52) function: sdc0 (29)
    type: CONFIGS_GROUP controller pio group PF5 (52) 00280009 00000003 00000000
  state: sleep
    type: MUX_GROUP controller pio group: PF0 (47) function: io_disabled (6)
    type: CONFIGS_GROUP controller pio group PF0 (47) 00140009 00000003
    type: MUX_GROUP controller pio group: PF1 (48) function: io_disabled (6)
    type: CONFIGS_GROUP controller pio group PF1 (48) 00140009 00000003
    type: MUX_GROUP controller pio group: PF2 (49) function: io_disabled (6)
    type: CONFIGS_GROUP controller pio group PF2 (49) 00140009 00000003
    type: MUX_GROUP controller pio group: PF3 (50) function: io_disabled (6)
    type: CONFIGS_GROUP controller pio group PF3 (50) 00140009 00000003
    type: MUX_GROUP controller pio group: PF4 (51) function: io_disabled (6)
    type: CONFIGS_GROUP controller pio group PF4 (51) 00140009 00000003
    type: MUX_GROUP controller pio group: PF5 (52) function: io_disabled (6)
    type: CONFIGS_GROUP controller pio group PF5 (52) 00140009 00000003
device: lcd0 current state: active
  state: active
    type: MUX_GROUP controller pio group: PD3 (15) function: lcd0 (18)
    type: CONFIGS_GROUP controller pio group PD3 (15) 00000005 00000000 00000000
    type: MUX_GROUP controller pio group: PD4 (16) function: lcd0 (18)
    type: CONFIGS_GROUP controller pio group PD4 (16) 00000005 00000000 00000000
    type: MUX_GROUP controller pio group: PD5 (17) function: lcd0 (18)
    type: CONFIGS_GROUP controller pio group PD5 (17) 00000005 00000000 00000000
    type: MUX_GROUP controller pio group: PD6 (18) function: lcd0 (18)
    type: CONFIGS_GROUP controller pio group PD6 (18) 00000005 00000000 00000000
    type: MUX_GROUP controller pio group: PD7 (19) function: lcd0 (18)
    type: CONFIGS_GROUP controller pio group PD7 (19) 00000005 00000000 00000000
    type: MUX_GROUP controller pio group: PD8 (20) function: lcd0 (18)
    type: CONFIGS_GROUP controller pio group PD8 (20) 00000005 00000000 00000000
    type: MUX_GROUP controller pio group: PD18 (30) function: lcd0 (18)
    type: CONFIGS_GROUP controller pio group PD18 (30) 00000005 00000000 00000000
    type: MUX_GROUP controller pio group: PD20 (32) function: lcd0 (18)
    type: CONFIGS_GROUP controller pio group PD20 (32) 00000005 00000000 00000000
    type: MUX_GROUP controller pio group: PD21 (33) function: lcd0 (18)
    type: CONFIGS_GROUP controller pio group PD21 (33) 00000005 00000000 00000000
Pinctrl maps:
device twi0
state default
type MUX_GROUP (2)
controlling device pio
group PD12
function twi0

device twi0
state default
type CONFIGS_GROUP (4)
controlling device pio
group PD12
config 00000000
config 00000000
config 00000000

device twi0
state default
type MUX_GROUP (2)
controlling device pio
group PD0
function twi0

device twi0
state default
type CONFIGS_GROUP (4)
controlling device pio
group PD0
config 00000000
config 00000000
config 00000000

device twi0
state sleep
type MUX_GROUP (2)
controlling device pio
group PD12
function io_disabled

device twi0
state sleep
type CONFIGS_GROUP (4)
controlling device pio
group PD12
config 00140009
config 00000005

device twi0
state sleep
type MUX_GROUP (2)
controlling device pio
group PD0
function io_disabled

device twi0
state sleep
type CONFIGS_GROUP (4)
controlling device pio
group PD0
config 00140009
config 00000005

device uart1
state default
type MUX_GROUP (2)
controlling device pio
group PA2
function uart1

device uart1
state default
type CONFIGS_GROUP (4)
controlling device pio
group PA2
config 00000003
config 00000000
config 00000000

device uart1
state default
type MUX_GROUP (2)
controlling device pio
group PA3
function uart1

device uart1
state default
type CONFIGS_GROUP (4)
controlling device pio
group PA3
config 00000003
config 00000000
config 00000000

device uart1
state sleep
type MUX_GROUP (2)
controlling device pio
group PA3
function io_disabled

device uart1
state sleep
type CONFIGS_GROUP (4)
controlling device pio
group PA3
config 00140009
config 00000003

device uart1
state sleep
type MUX_GROUP (2)
controlling device pio
group PA2
function io_disabled

device uart1
state sleep
type CONFIGS_GROUP (4)
controlling device pio
group PA2
config 00140009
config 00000003

device spinand
state default
type MUX_GROUP (2)
controlling device pio
group PC1
function spi0

device spinand
state default
type CONFIGS_GROUP (4)
controlling device pio
group PC1
config 00000003
config 00000000
config 00000000

device spinand
state default
type MUX_GROUP (2)
controlling device pio
group PC0
function spi0

device spinand
state default
type CONFIGS_GROUP (4)
controlling device pio
group PC0
config 00000000
config 00000000
config 00000000

device spinand
state default
type MUX_GROUP (2)
controlling device pio
group PC3
function spi0

device spinand
state default
type CONFIGS_GROUP (4)
controlling device pio
group PC3
config 00000000
config 00000000
config 00000000

device spinand
state default
type MUX_GROUP (2)
controlling device pio
group PC2
function spi0

device spinand
state default
type CONFIGS_GROUP (4)
controlling device pio
group PC2
config 00000000
config 00000000
config 00000000

device spinand
state sleep
type MUX_GROUP (2)
controlling device pio
group PC0
function io_disabled

device spinand
state sleep
type CONFIGS_GROUP (4)
controlling device pio
group PC0
config 00140009
config 00000005

device spinand
state sleep
type MUX_GROUP (2)
controlling device pio
group PC1
function io_disabled

device spinand
state sleep
type CONFIGS_GROUP (4)
controlling device pio
group PC1
config 00140009
config 00000005

device spinand
state sleep
type MUX_GROUP (2)
controlling device pio
group PC2
function io_disabled

device spinand
state sleep
type CONFIGS_GROUP (4)
controlling device pio
group PC2
config 00140009
config 00000005

device spinand
state sleep
type MUX_GROUP (2)
controlling device pio
group PC3
function io_disabled

device spinand
state sleep
type CONFIGS_GROUP (4)
controlling device pio
group PC3
config 00140009
config 00000005

device sdc0
state default
type MUX_GROUP (2)
controlling device pio
group PF0
function sdc0

device sdc0
state default
type CONFIGS_GROUP (4)
controlling device pio
group PF0
config 00280009
config 00000003
config 00000000

device sdc0
state default
type MUX_GROUP (2)
controlling device pio
group PF1
function sdc0

device sdc0
state default
type CONFIGS_GROUP (4)
controlling device pio
group PF1
config 00280009
config 00000003
config 00000000

device sdc0
state default
type MUX_GROUP (2)
controlling device pio
group PF2
function sdc0

device sdc0
state default
type CONFIGS_GROUP (4)
controlling device pio
group PF2
config 00280009
config 00000003
config 00000000

device sdc0
state default
type MUX_GROUP (2)
controlling device pio
group PF3
function sdc0

device sdc0
state default
type CONFIGS_GROUP (4)
controlling device pio
group PF3
config 00280009
config 00000003
config 00000000

device sdc0
state default
type MUX_GROUP (2)
controlling device pio
group PF4
function sdc0

device sdc0
state default
type CONFIGS_GROUP (4)
controlling device pio
group PF4
config 00280009
config 00000003
config 00000000

device sdc0
state default
type MUX_GROUP (2)
controlling device pio
group PF5
function sdc0

device sdc0
state default
type CONFIGS_GROUP (4)
controlling device pio
group PF5
config 00280009
config 00000003
config 00000000

device sdc0
state sleep
type MUX_GROUP (2)
controlling device pio
group PF0
function io_disabled

device sdc0
state sleep
type CONFIGS_GROUP (4)
controlling device pio
group PF0
config 00140009
config 00000003

device sdc0
state sleep
type MUX_GROUP (2)
controlling device pio
group PF1
function io_disabled

device sdc0
state sleep
type CONFIGS_GROUP (4)
controlling device pio
group PF1
config 00140009
config 00000003

device sdc0
state sleep
type MUX_GROUP (2)
controlling device pio
group PF2
function io_disabled

device sdc0
state sleep
type CONFIGS_GROUP (4)
controlling device pio
group PF2
config 00140009
config 00000003

device sdc0
state sleep
type MUX_GROUP (2)
controlling device pio
group PF3
function io_disabled

device sdc0
state sleep
type CONFIGS_GROUP (4)
controlling device pio
group PF3
config 00140009
config 00000003

device sdc0
state sleep
type MUX_GROUP (2)
controlling device pio
group PF4
function io_disabled

device sdc0
state sleep
type CONFIGS_GROUP (4)
controlling device pio
group PF4
config 00140009
config 00000003

device sdc0
state sleep
type MUX_GROUP (2)
controlling device pio
group PF5
function io_disabled

device sdc0
state sleep
type CONFIGS_GROUP (4)
controlling device pio
group PF5
config 00140009
config 00000003

device lcd0
state active
type MUX_GROUP (2)
controlling device pio
group PD3
function lcd0

device lcd0
state active
type CONFIGS_GROUP (4)
controlling device pio
group PD3
config 00000005
config 00000000
config 00000000

device lcd0
state active
type MUX_GROUP (2)
controlling device pio
group PD4
function lcd0

device lcd0
state active
type CONFIGS_GROUP (4)
controlling device pio
group PD4
config 00000005
config 00000000
config 00000000

device lcd0
state active
type MUX_GROUP (2)
controlling device pio
group PD5
function lcd0

device lcd0
state active
type CONFIGS_GROUP (4)
controlling device pio
group PD5
config 00000005
config 00000000
config 00000000

device lcd0
state active
type MUX_GROUP (2)
controlling device pio
group PD6
function lcd0

device lcd0
state active
type CONFIGS_GROUP (4)
controlling device pio
group PD6
config 00000005
config 00000000
config 00000000

device lcd0
state active
type MUX_GROUP (2)
controlling device pio
group PD7
function lcd0

device lcd0
state active
type CONFIGS_GROUP (4)
controlling device pio
group PD7
config 00000005
config 00000000
config 00000000

device lcd0
state active
type MUX_GROUP (2)
controlling device pio
group PD8
function lcd0

device lcd0
state active
type CONFIGS_GROUP (4)
controlling device pio
group PD8
config 00000005
config 00000000
config 00000000

device lcd0
state active
type MUX_GROUP (2)
controlling device pio
group PD18
function lcd0

device lcd0
state active
type CONFIGS_GROUP (4)
controlling device pio
group PD18
config 00000005
config 00000000
config 00000000

device lcd0
state active
type MUX_GROUP (2)
controlling device pio
group PD20
function lcd0

device lcd0
state active
type CONFIGS_GROUP (4)
controlling device pio
group PD20
config 00000005
config 00000000
config 00000000

device lcd0
state active
type MUX_GROUP (2)
controlling device pio
group PD21
function lcd0

device lcd0
state active
type CONFIGS_GROUP (4)
controlling device pio
group PD21
config 00000005
config 00000000
config 00000000
GPIO ranges handled:
0: pio GPIOS [0 - 0] PINS [0 - 0]
1: pio GPIOS [1 - 1] PINS [1 - 1]
2: pio GPIOS [2 - 2] PINS [2 - 2]
3: pio GPIOS [3 - 3] PINS [3 - 3]
32: pio GPIOS [32 - 32] PINS [32 - 32]
33: pio GPIOS [33 - 33] PINS [33 - 33]
34: pio GPIOS [34 - 34] PINS [34 - 34]
35: pio GPIOS [35 - 35] PINS [35 - 35]
64: pio GPIOS [64 - 64] PINS [64 - 64]
65: pio GPIOS [65 - 65] PINS [65 - 65]
66: pio GPIOS [66 - 66] PINS [66 - 66]
67: pio GPIOS [67 - 67] PINS [67 - 67]
96: pio GPIOS [96 - 96] PINS [96 - 96]
97: pio GPIOS [97 - 97] PINS [97 - 97]
98: pio GPIOS [98 - 98] PINS [98 - 98]
99: pio GPIOS [99 - 99] PINS [99 - 99]
100: pio GPIOS [100 - 100] PINS [100 - 100]
101: pio GPIOS [101 - 101] PINS [101 - 101]
102: pio GPIOS [102 - 102] PINS [102 - 102]
103: pio GPIOS [103 - 103] PINS [103 - 103]
104: pio GPIOS [104 - 104] PINS [104 - 104]
105: pio GPIOS [105 - 105] PINS [105 - 105]
106: pio GPIOS [106 - 106] PINS [106 - 106]
107: pio GPIOS [107 - 107] PINS [107 - 107]
108: pio GPIOS [108 - 108] PINS [108 - 108]
109: pio GPIOS [109 - 109] PINS [109 - 109]
110: pio GPIOS [110 - 110] PINS [110 - 110]
111: pio GPIOS [111 - 111] PINS [111 - 111]
112: pio GPIOS [112 - 112] PINS [112 - 112]
113: pio GPIOS [113 - 113] PINS [113 - 113]
114: pio GPIOS [114 - 114] PINS [114 - 114]
115: pio GPIOS [115 - 115] PINS [115 - 115]
116: pio GPIOS [116 - 116] PINS [116 - 116]
117: pio GPIOS [117 - 117] PINS [117 - 117]
128: pio GPIOS [128 - 128] PINS [128 - 128]
129: pio GPIOS [129 - 129] PINS [129 - 129]
130: pio GPIOS [130 - 130] PINS [130 - 130]
131: pio GPIOS [131 - 131] PINS [131 - 131]
132: pio GPIOS [132 - 132] PINS [132 - 132]
133: pio GPIOS [133 - 133] PINS [133 - 133]
134: pio GPIOS [134 - 134] PINS [134 - 134]
135: pio GPIOS [135 - 135] PINS [135 - 135]
136: pio GPIOS [136 - 136] PINS [136 - 136]
137: pio GPIOS [137 - 137] PINS [137 - 137]
138: pio GPIOS [138 - 138] PINS [138 - 138]
139: pio GPIOS [139 - 139] PINS [139 - 139]
140: pio GPIOS [140 - 140] PINS [140 - 140]
160: pio GPIOS [160 - 160] PINS [160 - 160]
161: pio GPIOS [161 - 161] PINS [161 - 161]
162: pio GPIOS [162 - 162] PINS [162 - 162]
163: pio GPIOS [163 - 163] PINS [163 - 163]
164: pio GPIOS [164 - 164] PINS [164 - 164]
165: pio GPIOS [165 - 165] PINS [165 - 165]
No config found for dev/state/pin, expected:
Searched dev:
Searched state:
Searched pin:
Use: modify config_pin <devname> <state> <pinname> <value>
Pin config settings per pin group
Format: group (name): configs
0 (PA0):
1 (PA1):
2 (PA2):
3 (PA3):
4 (PB0):
5 (PB1):
6 (PB2):
7 (PB3):
8 (PC0):
9 (PC1):
10 (PC2):
11 (PC3):
12 (PD0):
13 (PD1):
14 (PD2):
15 (PD3):
16 (PD4):
17 (PD5):
18 (PD6):
19 (PD7):
20 (PD8):
21 (PD9):
22 (PD10):
23 (PD11):
24 (PD12):
25 (PD13):
26 (PD14):
27 (PD15):
28 (PD16):
29 (PD17):
30 (PD18):
31 (PD19):
32 (PD20):
33 (PD21):
34 (PE0):
35 (PE1):
36 (PE2):
37 (PE3):
38 (PE4):
39 (PE5):
40 (PE6):
41 (PE7):
42 (PE8):
43 (PE9):
44 (PE10):
45 (PE11):
46 (PE12):
47 (PF0):
48 (PF1):
49 (PF2):
50 (PF3):
51 (PF4):
52 (PF5):
Pin config settings per pin
Format: pin (name): configs
pin 0 (PA0):
pin 1 (PA1):
pin 2 (PA2):
pin 3 (PA3):
pin 32 (PB0):
pin 33 (PB1):
pin 34 (PB2):
pin 35 (PB3):
pin 64 (PC0):
pin 65 (PC1):
pin 66 (PC2):
pin 67 (PC3):
pin 96 (PD0):
pin 97 (PD1):
pin 98 (PD2):
pin 99 (PD3):
pin 100 (PD4):
pin 101 (PD5):
pin 102 (PD6):
pin 103 (PD7):
pin 104 (PD8):
pin 105 (PD9):
pin 106 (PD10):
pin 107 (PD11):
pin 108 (PD12):
pin 109 (PD13):
pin 110 (PD14):
pin 111 (PD15):
pin 112 (PD16):
pin 113 (PD17):
pin 114 (PD18):
pin 115 (PD19):
pin 116 (PD20):
pin 117 (PD21):
pin 128 (PE0):
pin 129 (PE1):
pin 130 (PE2):
pin 131 (PE3):
pin 132 (PE4):
pin 133 (PE5):
pin 134 (PE6):
pin 135 (PE7):
pin 136 (PE8):
pin 137 (PE9):
pin 138 (PE10):
pin 139 (PE11):
pin 140 (PE12):
pin 160 (PF0):
pin 161 (PF1):
pin 162 (PF2):
pin 163 (PF3):
pin 164 (PF4):
pin 165 (PF5):
registered pin groups:
group: PA0
pin 0 (PA0)

group: PA1
pin 1 (PA1)

group: PA2
pin 2 (PA2)

group: PA3
pin 3 (PA3)

group: PB0
pin 32 (PB0)

group: PB1
pin 33 (PB1)

group: PB2
pin 34 (PB2)

group: PB3
pin 35 (PB3)

group: PC0
pin 64 (PC0)

group: PC1
pin 65 (PC1)

group: PC2
pin 66 (PC2)

group: PC3
pin 67 (PC3)

group: PD0
pin 96 (PD0)

group: PD1
pin 97 (PD1)

group: PD2
pin 98 (PD2)

group: PD3
pin 99 (PD3)

group: PD4
pin 100 (PD4)

group: PD5
pin 101 (PD5)

group: PD6
pin 102 (PD6)

group: PD7
pin 103 (PD7)

group: PD8
pin 104 (PD8)

group: PD9
pin 105 (PD9)

group: PD10
pin 106 (PD10)

group: PD11
pin 107 (PD11)

group: PD12
pin 108 (PD12)

group: PD13
pin 109 (PD13)

group: PD14
pin 110 (PD14)

group: PD15
pin 111 (PD15)

group: PD16
pin 112 (PD16)

group: PD17
pin 113 (PD17)

group: PD18
pin 114 (PD18)

group: PD19
pin 115 (PD19)

group: PD20
pin 116 (PD20)

group: PD21
pin 117 (PD21)

group: PE0
pin 128 (PE0)

group: PE1
pin 129 (PE1)

group: PE2
pin 130 (PE2)

group: PE3
pin 131 (PE3)

group: PE4
pin 132 (PE4)

group: PE5
pin 133 (PE5)

group: PE6
pin 134 (PE6)

group: PE7
pin 135 (PE7)

group: PE8
pin 136 (PE8)

group: PE9
pin 137 (PE9)

group: PE10
pin 138 (PE10)

group: PE11
pin 139 (PE11)

group: PE12
pin 140 (PE12)

group: PF0
pin 160 (PF0)

group: PF1
pin 161 (PF1)

group: PF2
pin 162 (PF2)

group: PF3
pin 163 (PF3)

group: PF4
pin 164 (PF4)

group: PF5
pin 165 (PF5)

function: gpio_in, groups = [ PA0 PA1 PA2 PA3 PB0 PB1 PB2 PB3 PC1 PC2 PC3 PD0 PD1 PD2 PD3 PD4 PD5 PD6 PD7 PD8 PD9 PD10 PD11 PD12 PD13 PD14 PD15 PD16 PD17 PD18 PD19 PD20 PD21 PE0 PE1 PE2 PE3 PE4 PE5 PE6 ]
function: gpio_out, groups = [ PA0 PA1 PA2 PA3 PB0 PB1 PB2 PB3 PC0 PC1 PC2 PC3 PD0 PD1 PD2 PD3 PD4 PD5 PD6 PD7 PD8 PD9 PD10 PD11 PD12 PD13 PD14 PD15 PD16 PD17 PD18 PD19 PD20 PD21 PE0 PE1 PE2 PE3 PE4 PE5]
function: tp0, groups = [ PA0 PA1 PA2 PA3 ]
function: da0, groups = [ PA0 PA1 PA2 PA3 PB0 PB1 PB2 PB3 PD7 PD8 PD9 PD10 PD11 PE3 PE4 PE5 PE6 PE12 ]
function: uart1, groups = [ PA0 PA1 PA2 PA3 PB0 PB1 PB2 PB3 PD1 PD2 PD3 PD4 ]
function: spi1, groups = [ PA0 PA1 PA2 PA3 PB0 PB1 PB2 PB3 PE7 PE8 PE9 PE10 ]
function: io_disabled, groups = [ PA0 PA1 PA2 PA3 PB0 PB1 PB2 PB3 PC0 PC1 PC2 PC3 PD0 PD1 PD2 PD3 PD4 PD5 PD6 PD7 PD8 PD9 PD10 PD11 PD12 PD13 PD14 PD15 PD16 PD17 PD18 PD19 PD20 PD21 PE0 PE1 PE2 PE3 PE4 ]
function: pwm0, groups = [ PA2 PB2 PE12 ]
function: ir0, groups = [ PA3 PB3 PE11 PF0 ]
function: dqs0, groups = [ PB0 ]
function: twi1, groups = [ PB0 PB1 PD5 PD6 ]
function: dqs1, groups = [ PB1 ]
function: ckb, groups = [ PB2 ]
function: ddr_ref_d, groups = [ PB3 ]
function: spi0, groups = [ PC0 PC1 PC2 PC3 PD18 PD19 PD20 PD21 ]
function: sdc1, groups = [ PC0 PC1 PC2 ]
function: vdevice, groups = [ PC0 PC1 ]
function: uart0, groups = [ PC3 PE0 PE1 PF2 PF4 ]
function: lcd0, groups = [ PD0 PD1 PD2 PD3 PD4 PD5 PD6 PD7 PD8 PD9 PD10 PD11 PD12 PD13 PD14 PD15 PD16 PD17 PD18 PD19 PD20 PD21 PE0 PE1 PE2 PE3 PE4 PE5 ]
function: twi0, groups = [ PD0 PD12 PE11 PE12 ]
function: rsb0, groups = [ PD0 PD12 PE3 PE4 ]
function: irq, groups = [ PD0 PD1 PD2 PD3 PD4 PD5 PD6 PD7 PD8 PD9 PD10 PD11 PD12 PD13 PD14 PD15 PD16 PD17 PD18 PD19 PD20 PD21 PE0 PE1 PE2 PE3 PE4 PE5 PE6 PE7 PE8 PE9 PE10 PE11 PE12 PF0 PF1 PF2 PF3 PF4 P]
function: uart2, groups = [ PD13 PD15 PD16 PE7 PE8 PE9 PE10 ]
function: lvds1, groups = [ PD14 ]
function: twi2, groups = [ PD15 PD16 PE0 PE1 ]
function: spdif0, groups = [ PD17 PE6 ]
function: csi0, groups = [ PE0 PE1 PE2 PE3 PE4 PE5 PE6 PE7 PE8 PE9 PE10 ]
function: clk0, groups = [ PE2 PE11 ]
function: pwm1, groups = [ PE6 ]
function: sdc0, groups = [ PF0 PF1 PF2 PF3 PF4 PF5 ]
function: dbg0, groups = [ PF0 PF3 PF5 ]
function: dgb0, groups = [ PF1 ]
function: pmw1, groups = [ PF5 ]
Pinmux settings per pin
Format: pin (name): mux_owner gpio_owner hog?
pin 0 (PA0): (MUX UNCLAIMED) pio:0
pin 1 (PA1): (MUX UNCLAIMED) (GPIO UNCLAIMED)
pin 2 (PA2): uart1 (GPIO UNCLAIMED) function uart1 group PA2
pin 3 (PA3): uart1 (GPIO UNCLAIMED) function uart1 group PA3
pin 32 (PB0): (MUX UNCLAIMED) (GPIO UNCLAIMED)
pin 33 (PB1): (MUX UNCLAIMED) (GPIO UNCLAIMED)
pin 34 (PB2): (MUX UNCLAIMED) (GPIO UNCLAIMED)
pin 35 (PB3): (MUX UNCLAIMED) (GPIO UNCLAIMED)
pin 64 (PC0): spinand (GPIO UNCLAIMED) function spi0 group PC0
pin 65 (PC1): spinand (GPIO UNCLAIMED) function spi0 group PC1
pin 66 (PC2): spinand (GPIO UNCLAIMED) function spi0 group PC2
pin 67 (PC3): spinand (GPIO UNCLAIMED) function spi0 group PC3
pin 96 (PD0): twi0 pio:96 function twi0 group PD0
pin 97 (PD1): (MUX UNCLAIMED) pio:97
pin 98 (PD2): (MUX UNCLAIMED) pio:98
pin 99 (PD3): lcd0 (GPIO UNCLAIMED) function lcd0 group PD3
pin 100 (PD4): lcd0 (GPIO UNCLAIMED) function lcd0 group PD4
pin 101 (PD5): lcd0 (GPIO UNCLAIMED) function lcd0 group PD5
pin 102 (PD6): lcd0 (GPIO UNCLAIMED) function lcd0 group PD6
pin 103 (PD7): lcd0 (GPIO UNCLAIMED) function lcd0 group PD7
pin 104 (PD8): lcd0 (GPIO UNCLAIMED) function lcd0 group PD8
pin 105 (PD9): (MUX UNCLAIMED) (GPIO UNCLAIMED)
pin 106 (PD10): (MUX UNCLAIMED) (GPIO UNCLAIMED)
pin 107 (PD11): (MUX UNCLAIMED) (GPIO UNCLAIMED)
pin 108 (PD12): twi0 pio:108 function twi0 group PD12
pin 109 (PD13): (MUX UNCLAIMED) pio:109
pin 110 (PD14): (MUX UNCLAIMED) pio:110
pin 111 (PD15): (MUX UNCLAIMED) pio:111
pin 112 (PD16): (MUX UNCLAIMED) pio:112
pin 113 (PD17): (MUX UNCLAIMED) pio:113
pin 114 (PD18): lcd0 (GPIO UNCLAIMED) function lcd0 group PD18
pin 115 (PD19): (MUX UNCLAIMED) pio:115
pin 116 (PD20): lcd0 (GPIO UNCLAIMED) function lcd0 group PD20
pin 117 (PD21): lcd0 (GPIO UNCLAIMED) function lcd0 group PD21
pin 128 (PE0): (MUX UNCLAIMED) (GPIO UNCLAIMED)
pin 129 (PE1): (MUX UNCLAIMED) pio:129
pin 130 (PE2): (MUX UNCLAIMED) pio:130
pin 131 (PE3): (MUX UNCLAIMED) pio:131
pin 132 (PE4): (MUX UNCLAIMED) pio:132
pin 133 (PE5): (MUX UNCLAIMED) (GPIO UNCLAIMED)
pin 134 (PE6): (MUX UNCLAIMED) pio:134
pin 135 (PE7): (MUX UNCLAIMED) pio:135
pin 136 (PE8): (MUX UNCLAIMED) pio:136
pin 137 (PE9): (MUX UNCLAIMED) pio:137
pin 138 (PE10): (MUX UNCLAIMED) (GPIO UNCLAIMED)
pin 139 (PE11): (MUX UNCLAIMED) pio:139
pin 140 (PE12): (MUX UNCLAIMED) (GPIO UNCLAIMED)
pin 160 (PF0): sdc0 (GPIO UNCLAIMED) function io_disabled group PF0
pin 161 (PF1): sdc0 (GPIO UNCLAIMED) function io_disabled group PF1
pin 162 (PF2): sdc0 (GPIO UNCLAIMED) function io_disabled group PF2
pin 163 (PF3): sdc0 (GPIO UNCLAIMED) function io_disabled group PF3
pin 164 (PF4): sdc0 (GPIO UNCLAIMED) function io_disabled group PF4
pin 165 (PF5): sdc0 (GPIO UNCLAIMED) function io_disabled group PF5
registered pins: 53
pin 0 (PA0) 
pin 1 (PA1) 
pin 2 (PA2) 
pin 3 (PA3) 
pin 32 (PB0) 
pin 33 (PB1) 
pin 34 (PB2) 
pin 35 (PB3) 
pin 64 (PC0) 
pin 65 (PC1) 
pin 66 (PC2) 
pin 67 (PC3) 
pin 96 (PD0) 
pin 97 (PD1) 
pin 98 (PD2) 
pin 99 (PD3) 
pin 100 (PD4) 
pin 101 (PD5) 
pin 102 (PD6) 
pin 103 (PD7) 
pin 104 (PD8) 
pin 105 (PD9) 
pin 106 (PD10) 
pin 107 (PD11) 
pin 108 (PD12) 
pin 109 (PD13) 
pin 110 (PD14) 
pin 111 (PD15) 
pin 112 (PD16) 
pin 113 (PD17) 
pin 114 (PD18) 
pin 115 (PD19) 
pin 116 (PD20) 
pin 117 (PD21) 
pin 128 (PE0) 
pin 129 (PE1) 
pin 130 (PE2) 
pin 131 (PE3) 
pin 132 (PE4) 
pin 133 (PE5) 
pin 134 (PE6) 
pin 135 (PE7) 
pin 136 (PE8) 
pin 137 (PE9) 
pin 138 (PE10) 
pin 139 (PE11) 
pin 140 (PE12) 
pin 160 (PF0) 
pin 161 (PF1) 
pin 162 (PF2) 
pin 163 (PF3) 
pin 164 (PF4) 
pin 165 (PF5) 

#385 Re: 司徒开源 » 研究FC3000掌機的開源可行性 » 2021-07-01 09:05:50

@司徒

对于tcon问题,有一种特别有效的方法,来找到问题点,就是在原版trimui系统里,先dump tcon的寄存器,然后与自己系统里的配置做比较,找到差异点后,对照寄存器手册,再分析,基本就可以解决这种问题。或者dump出来后,先一股脑写进去试试,看效果是否有变化,如有变化,那么肯定就在这些配置里了。

1_20210701-0903.png

#386 Re: 全志 SOC » 为方便大家研究全志RISCV D1芯片,花了点时间编写了一个精简版的裸机程序,方便大家学习参考。 » 2021-06-30 15:25:18

先尝试用定时器做中断源吧,至少这个xboot是验证通过的,而且gpio中断,属于子中断,需要先开启父中断的

#387 Re: 司徒开源 » 研究FC3000掌機的開源可行性 » 2021-06-30 15:13:02

这屏是有gamma配置吗?如果没有gamma配置差别,这显示效果差异也太明显了点,很有可能还是tcon配置之类的问题,用原版系统显示这张仙剑奇侠传也是这个效果吗?如果不一样基本就是tcon配置问题,如果一样,这ips屏效果不敢恭维。

#389 Re: 全志 SOC » XUI终于实现心心念的毛玻璃特效了 » 2021-06-30 10:57:22

多层毛玻璃,一层是progress bar控件被贴了个毛玻璃,另一个glass窗体贴了个毛玻璃。

#390 Re: 全志 SOC » [V3S]发一份V3S的裸机程序 » 2021-06-30 10:03:17

lingyunyicun 说:

个人觉得程序跑飞 应该是字节对齐问题 你看下你结构体设置没

不是对齐问题,这种sys-开头的文件,是需要用特别的编程手段的,因为这些程序的链接地址都是在DDR中,而实际运行地址是在SRAM中,需要实现成地址无关的程序,而系统刚启动,什么环境都不具备,C执行环境,更是不完整的,所以只能用特别编程手段。

一般有一下注意点:
1,不要使用已初始化数据段
2,不要使用未初始化数据段
3,不要使用switch case语句,可以用if elseif 代替
4,不要使用全局变量,仅使用局部变量
5,局部变量的初始化,用代码实现,会编译成立即数赋值
6,只能使用栈空间,其他什么都不可以使用
7,不要调用任何外部库,比如工具链里的C库等。

只要按这种要求,编程,编译出来的代码,都是地址无关的,SPL代码是很特殊的,谨记运行地址不是链接地址,就明白为何需要这样处理了。
当然,这种限制,也导致编程要求较高,如果不想挑战自己,就链接两次,做两个程序吧,BL1->BL2,这种,你看某些芯片的引导链,那么长,就是因为这种原因。

独立的一个程序,支持引导,自举,换到DDR空间,要求是很高的。这种编程技巧,算挑战性编程。

#391 全志 SOC » XUI终于实现心心念的毛玻璃特效了 » 2021-06-30 09:00:21

xboot
回复: 4

毛玻璃特效很好看,除了手机APP,嵌入式场景还没见到上这种特效的。模糊,阴影,发光,是现代UI必备的三大特效,如何实现这些特效,之前思考了很久,现在终于实现第一个特效了,见演示视频。


#392 Re: 司徒开源 » 研究FC3000掌機的開源可行性 » 2021-06-29 16:37:15

有了初始化数据后,模拟gpio就可以初始化了,但6位并行RGB模式,是我第一次见,这个估计要研究如何配置F1C100S的TCON了,跟传统的16位RGB肯定有差别。

#393 Re: 司徒开源 » 研究FC3000掌機的開源可行性 » 2021-06-29 16:06:48

三线模式,之前见识过这种初始化接口,SDA的第一位是D/C标识,后面8位是数据,所以,你逻辑分析仪用spi解析,就会出错了,后移一位就正确了。SCL上升沿,判断SDA的状态,就可以了,9个上升沿。9个bit,没特别快的方式,只能自己慢慢数吧

#395 Re: 司徒开源 » 研究FC3000掌機的開源可行性 » 2021-06-29 14:52:37

6-bit Parallel RGB Interface ? 神奇的模式,貌似不是I8080接口

#396 Re: 司徒开源 » 研究FC3000掌機的開源可行性 » 2021-06-29 13:59:08

司徒,方便贴一下TRIUIMI的lcd初始化代码吗?买了个triuimi,准备试试。

#400 Re: 全志 SOC » 利用xfel及mkz工具实现一机一镜像量产方案 » 2021-06-28 09:19:58

f1c100s无法支持加密引导,信任链是缺失的,如果spl是可信任的话,那么后面的固件按照设计就是安全的,天生芯片缺陷,也就无能为力了,对于修改id读函数这个也不容易,你仅能修改spl里面的,就是sram中的代码,但无法修改ddr中的读id函数,那个需要有完整性校验,当然spl破了,顺滕摸瓜,是可以解密固件的,解密固件后再分析,修改,重新加密,换签名文件是可以破解的,但这一圈下来,要掉层皮。

#401 Re: 全志 SOC » 利用xfel及mkz工具实现一机一镜像量产方案 » 2021-06-27 17:52:55

伍零壹 说:

请教下  XFEL能用于STM32 LPC1788这样的芯片么?

这个xfel肯定是不可以支持STM32 LPC这类芯片的,xfel仅能支持全志的芯片,但思路是相通的,如果芯片厂家提供了usb刷机方式,且拥有执行能力,就是支持exec命令,那么也是可以造一个这样的工具,这些究竟是能做到何种层次,由SOC厂家内置rom的功能决定的,当然还有一个大杀器就是这些芯片都支持jtag,那么基于jtag同样可以实现这些功能。

#402 Re: 全志 SOC » 利用xfel及mkz工具实现一机一镜像量产方案 » 2021-06-27 17:25:22

提供一个基于当前git源码树,用mingw编译出来的一个版本,里面集成zadig-2.5.exe驱动安装工具。
xfel-git-4f8ae763e9.7z

#403 Re: 全志 SOC » 利用xfel及mkz工具实现一机一镜像量产方案 » 2021-06-27 17:03:11

当前xfel git源码树,已补全全志各种常用soc,现在的支持列表如下:

static struct chip_t * chips[] = {
	&a10,
	&a13_a10s_r8,
	&a20,
	&a23,
	&a31,
	&a33_r16,
	&a40i_r40,
	&a64,
	&a80,
	&a83t,
	&d1,
	&f1c100s_f1c200s_f1c500s,
	&h3_h2,
	&h5,
	&h6,
	&h616,
	&r329,
	&t507,
	&v3s_s3,
	&v831,
};

#404 Re: 全志 SOC » 利用xfel及mkz工具实现一机一镜像量产方案 » 2021-06-27 16:58:26

提供一个在linux平台下编译xfel windows版本的步骤,用此步骤编译出来的xfel.exe体积较大,而且在使用时需要在xfel.exe文件旁边放置一个libusb-1.0.dll,还是建议大家用晕哥的方案,直接用VS2017直接来编译xfel.exe,这样编译出来的体积小,无需依赖libusb-1.0.dll文件。

1, Install some build tools

sudo apt install mingw-w64
sudo apt install autoconf
sudo apt install libtool-bin

2, Download and install libusb

git clone https://github.com/libusb/libusb.git
cd libusb
./autogen.sh
./configure --host=i686-w64-mingw32 --prefix=/usr/i686-w64-mingw32/
make
sudo make install

3, Download and build xfel source code

git clone https://github.com:xboot/xfel.git
cd xfel
CROSS=i686-w64-mingw32- make

执行这三步后,就可以生成xfel.exe,拷贝到window平台即可使用了(注意旁边放置一个libusb-1.0.dll文件)。

#405 Re: 全志 SOC » 为方便大家研究全志RISCV D1芯片,花了点时间编写了一个精简版的裸机程序,方便大家学习参考。 » 2021-06-27 10:51:03

March 说:

楼主,还有这个问题: https://whycan.com/t_6706.html ,有时候DDR信息能输出完整,有时候输出又不完整,很奇怪。

这个估计你哪里异常了,DDR不要初始化两次,还有要注意cache类问题,需要你自己仔细对比自己的操作。

#406 Re: 全志 SOC » 为方便大家研究全志RISCV D1芯片,花了点时间编写了一个精简版的裸机程序,方便大家学习参考。 » 2021-06-27 10:45:14

March 说:

请问楼主,关于中断向量表这部分的汇编代码,有点不太懂,主要是vectors:csrw mscratch, sp    addi sp, sp, -(37 * REGSZ)     SREG x1, 1 * REGSZ(x2)...这部分。

就是中断现场保护,没什么特别的。

#407 Re: 全志 SOC » 利用xfel及mkz工具实现一机一镜像量产方案 » 2021-06-25 21:46:54

此方案有一定的通用性,只要xfel能支持的芯片,都可以实现一机一镜像量产方案。

#408 Re: 全志 SOC » 利用xfel及mkz工具实现一机一镜像量产方案 » 2021-06-25 21:44:10

2.png
3_20210625-2145.png
板子上电进入fel模式,然后双击bat文件,等待烧录完成即可。

#409 Re: 全志 SOC » 利用xfel及mkz工具实现一机一镜像量产方案 » 2021-06-25 21:41:29

防盗版最关键的就是保护aes 加密key,这里aes加密key每台机器都不一样,通过某种算法,根据唯一ID,自动生成aes加密key。

#410 全志 SOC » 利用xfel及mkz工具实现一机一镜像量产方案 » 2021-06-25 21:38:53

xboot
回复: 25

之前讨论过,如何在全志芯片F1C100S/V3S/V831上实现裸机加密方案,防盗版进行时(不采用专用加密芯片)。
https://whycan.com/t_6507.html

里面利用了AES256,SHA256,ECDSA256,LZ4等算法来实现防盗版,也就是mkz工具所做的工作。

防盗版最优的方案,肯定是绑定应该ID,然后一台机器一个镜像。为了做到一台机器一个镜像,这里利用上前段时间开发的xfel工具。结合bat脚本可以很方便的实现批量生产工具。

那么该如何实现量产方案了。

先说一下思路,芯片进入fel模式后,xfel工具可以获取芯片的唯一ID,根据唯一ID,通过mkz工具可以制作一个专用镜像,然后再通过xfel工具,将镜像烧录至spi nor flash。

windows下批处理脚本

@echo off

@set UNIQUEID=""
@set ENCRYPT_KEY="679408dc82ae80d411d5d9720b65a43fc4f1534fa563fb28c6cd8928e46aaae9"
@set PUBLIC_KEY="03cfd18e4a4b40d6529448aa2df8bbb677128258b8fbfc5b9e492fbbba4e84832f"
@set PRIVATE_KEY="dc57b8a9e0e2b7f8b4c929bd8db2844e53f01f171bbcdf6e628908dbf2b2e6a9"
@set MESSAGE="https://github.com/xboot/xboot"

@for /f "delims=" %%i in ('xfel.exe sid') do (set UNIQUEID=%%i)
@echo %UNIQUEID% | findstr "ERROR" > nul && (
	@echo ERROR: Can't found any FEL device
) || (
	@echo Unique ID:
	@echo         %UNIQUEID%
	@mkz.exe -majoy 3 -minior 0 -patch 0 -r 24576 -k %ENCRYPT_KEY% -pb %PUBLIC_KEY% -pv %PRIVATE_KEY% -m %MESSAGE% -g %UNIQUEID% -i %UNIQUEID% xboot.bin xboot.bin.z
	@xfel.exe spinor write 0 xboot.bin.z
	@xfel.exe reset
)
@pause

#411 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-06-21 14:49:44

A7是正宫,别忽略她就行,玄铁性能未测试,A72这种水平肯定达不到的,A53估计有可能

#412 Re: 全志 SOC » 为方便大家研究全志RISCV D1芯片,花了点时间编写了一个精简版的裸机程序,方便大家学习参考。 » 2021-06-21 14:43:23

你在虚拟机里跑,有没有可能是虚拟机相关问题了,可以真机或者windows烧录实验下。

#413 Re: 全志 SOC » 为方便大家研究全志RISCV D1芯片,花了点时间编写了一个精简版的裸机程序,方便大家学习参考。 » 2021-06-21 14:40:48

你这边既然能正确获取flash容量,应该是支持sfdp协议的,但还是烧不进去,有点奇怪,但可以做个测试,重新上电后,仅写入64KB,然后再读出来,看是否一致。不应该出现这种现象的。

#414 Re: 全志 SOC » 为方便大家研究全志RISCV D1芯片,花了点时间编写了一个精简版的裸机程序,方便大家学习参考。 » 2021-06-21 14:39:02

目前支持所有sfdp协议 nor flash,不支持sfdp协议的,就需要自己填入flash信息,w25x40是不支持sfdp的

#415 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-06-19 20:00:29

为方便大家研究全志RISCV D1芯片,花了点时间编写了一个精简版的裸机程序,方便大家学习参考。
https://whycan.com/t_6683.html

#416 Re: 全志 SOC » 为方便大家研究全志RISCV D1芯片,花了点时间编写了一个精简版的裸机程序,方便大家学习参考。 » 2021-06-19 19:54:19

	la t0, _start
	la t1, _image_start
	LREG t1, (t1)
	beq t0, t1, _avoid

	/* Initial system jtag, uart and clock */
	call sys_jtag_init
	call sys_uart_init
	call sys_clock_init

	/* Copy ddr bin to 0x00030000 */
	la t1, _ddr_bin_start
	LREG t1, (t1)
	la t2, _ddr_bin_end
	LREG t2, (t2)
	sub a2, t2, t1
	la t1, _image_start
	LREG t1, (t1)
	la t2, _ddr_bin_start
	LREG t2, (t2)
	sub t0, t2, t1
	la a1, _start
	add a1, a1, t0
	li a0, 0x00030000
	call memcpy

	/* Initial ddr controller */
	call sys_dram_init
_avoid:
	nop
	/* Copyself to link address */
	la t0, _start
	la t1, _image_start
	LREG t1, (t1)
	beq t0, t1, 1f
	call sys_copyself
1:	nop

核心就这个地方,判断当前运行地址是否是链接地址,nor flash启动的话,肯定不是链接地址,那么就会多做很多事,初始化时钟,DDR,自拷贝等,如果是链接地址,那么就跳过这些动作,直接在DDR中运行。

#417 全志 SOC » 为方便大家研究全志RISCV D1芯片,花了点时间编写了一个精简版的裸机程序,方便大家学习参考。 » 2021-06-19 18:50:12

xboot
回复: 82

研究RISCV D1芯片已经一个月有余了,中间为了方便开发,也开发了一个烧写工具xfel,为方便大家研究学习,这里编写了一个简化的裸机程序,供大家参考,实现比较简单,但该有的都有了。(从xboot精简而来,想要研究高阶功能,就去参考xboot源码树)

在DDR中运行d1-baremetal.bin,这种方式比较适合快速开发调试。借助xfel工具就可以实现。

sudo xfel ddr ddr3;sudo xfel write 0x40000000 d1-baremetal.bin;sudo xfel exec 0x40000000;

烧写d1-baremetal.bin到spi nor flash,固化程序到spi nor flash, 然后上电,自动实现初始化ddr,并自拷贝到ddr中运行。

sudo xfel spinor write 0 d1-baremetal.bin

程序正确运行后,会打印如下信息;

D1 baremetal
count = 0
count = 1
count = 2
count = 3
count = 4
count = 5
count = 6
count = 7
count = 8
count = 9
count = 10
count = 11
count = 12
count = 13
count = 14
count = 15
count = 16






点击下载: d1-baremetal.7z

https://github.com/xboot/xfel
https://github.com/xboot/xboot

#418 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-06-17 16:22:54

使用medlow代码模型,链接脚本里的地址就可以直接引用了

为什么RISC-V GCC (Linux)默认使用medlow代码模型
RISC-V现在有两个代码模型:medlow和medany。

medlow: 对全局数据的寻址使用lui/ld的指令组合,程序被限制在[-2GB,2GB]内的连续2GB虚拟地址空间范围。
medany: 对全局数据的寻址使用auipc/ld指令码组合,程序被限制在任意连续的2GB虚拟地址空间范围。
在这两种代码模型中,lui和auipc都是为了设置全局数据的[31:8]位的20位高址。 在medlow模型中,由于lui/ld的指令组合使用0x00000000为基址做32比特地址寻址,当局部出现的多个全局数据寻址,他们可共享同一个lui设定的高址。 在medany模型中,lui被替换为auipc,使用pc为基址。由于所有的全局寻址为基于pc的相对寻址,medany代码模型可以支持对任意地址空间的寻址,突破medlow的地址空间限制。 同时,medany可以支持加载时地址重定向,即地址无关代码(position independent code, PIC)的生成。

在Linux环境中,所有的程序都是运行在虚拟内存中,独占一个虚拟内存空间。当不需要加载时地址重定向的需求时(非动态加载库), 使用medlow的lui/ld组合,GCC能够生成性能较优的代码,因而Linux上的RISC-V GCC默认使用medlow代码模型。 在编译动态加载库时,则需要手动使用medany代码模型。

为什么medany生成的代码性能比medlow差一些呢? 由于pc不是一个常量,对局部的多个全局数据寻址共享同一个auipc设定的高址可能会造成错误。 所以auipc/ld的指令组合并不能很好地被GCC优化,会产生大量的auipc指令。 此外,现有GCC编译器在-O -mcmodel=medany -mexplicit-relocs的参数组合下甚至会生成错误的代码。 在没有必要时,应当使用medlow模型,如果需要生成可重定向代码,现在暂时不要使用-O -mcmodel=medany -mexplicit-relocs的参数组合。

#419 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-06-17 15:29:22

上面的赋值语句,随便组合下,完全看编译器的心情,心情好了就li直接立即数解决,心情不好了就上auipc指令,完全不受控。这情况谁能用C写出位置无关的代码?

#420 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-06-17 15:22:46

头大,下面这样一条简单的赋值语句,也可能会被编译成auipc这种指令,也就说,这个代码如果不在链接地址运行赋值,那么赋值出来的结果一定是不正确的。这个问题太严重了,必须要找到一种控制方式,不然,在RISCV平台,根本无法写出适应性强的代码。

	struct ddr3_param_t * p = (struct ddr3_param_t *)0x00030018;
/*	p->dram_clk = 792;
	p->dram_type = 3;
	p->dram_zq = 0x7b7bfb;
	p->dram_odt_en = 0x01;
	p->dram_para1 = 0x000010d2;
	p->dram_para2 = 0x0000;
	p->dram_mr0 = 0x1c70;
	p->dram_mr1 = 0x042;
	p->dram_mr2 = 0x18;
	p->dram_mr3 = 0x0;
	p->dram_tpr0 = 0x004A2195;
	p->dram_tpr1 = 0x02423190;
	p->dram_tpr2 = 0x0008B061;
	p->dram_tpr3 = 0xB4787896;
	p->dram_tpr4 = 0x0;
	p->dram_tpr5 = 0x48484848;
	p->dram_tpr6 = 0x00000048;
	p->dram_tpr7 = 0x1620121e;
	p->dram_tpr8 = 0x0;
	p->dram_tpr9 = 0x0;
	p->dram_tpr10 = 0x0;
	p->dram_tpr11 = 0x00870000;
	p->dram_tpr12 = 0x00000024;
	p->dram_tpr13 = 0x34050100;*/

#421 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-06-17 14:59:11

也可以将_image_start变成全局标识,然后C里面去访问这个地址,再获取里面的值,就是觉得这样干,太不优雅了,总觉得很怪异。RISCV C编译器搞得这么绝吗?没留任何一种获取绝对链接地址的方式?

#422 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-06-17 14:46:51

汇编是可以的,start.S里就有获取绝对链接地址的方式,但是,是开辟了一个存储空间来存储链接地址的,想获取时,通过相对指令访问这片存储空间,然后获取里面的值,算间接获取,汇编的控制能力,肯定要比C强很多。

	/* Copyself to link address */
	la t0, _start
	la t1, _image_start
	LREG t1, (t1)
        ...

/*
 * The location of section
 */
	.align 3
_image_start:
	RVPTR __image_start
_image_end:
	RVPTR __image_end

#423 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-06-17 13:07:26

现在XBOOT已实现D1芯片的SPI FLASH自举引导,因为采用了内嵌机器码方案,所以就完全可以摒弃玄铁的专用工具链,任何一个RISCV工具链,都是可以编译并正常运行的,(可能玄铁编出来的性能更强吧,未测试)其中DDR初始化因为官方仅释放出一个玄铁工具链反编译出来.S文件,而且这个DDR初始化代码无法做到位置无关,所以,还是用上了之前解决V831 DDR初始化的思路,直接构造闭源二进制运行环境。引导头的校验和运算,还沿用全志传统的计算方法,所以,mksunxi工具可以无需做任何修改,直接利用就行。

还有一个异常,关于自拷贝的,这个地方被RISCV编译器给坑了,一开始还以为自己哪里代码写出异常了,查了半天,最后是因为RISCV编译器在链接,链接脚本中的导出符号时,会采用相对指令,而sys_copyself函数运行时,一般情况都不是运行在链接地址,任何地址都需要能正确运行,也就是需要实现成位置无关的程序,但我要自拷贝的目的地址则必须绝对的,不能是相对的,不然就拷贝错了。

这个用C如何获取链接脚本的绝对地址,我现在还没有很好手段,所以先暂时硬编码了,补丁如下:

diff --git a/src/arch/riscv64/mach-d1/sys-copyself.c b/src/arch/riscv64/mach-d1/sys-copyself.c
index 79ec9e9973381d3d01c0d0ee85b24c91e23aff8e..88fd32274f970afe939463b3ccbc6f8d3845eb09 100644
--- a/src/arch/riscv64/mach-d1/sys-copyself.c
+++ b/src/arch/riscv64/mach-d1/sys-copyself.c
@@ -53,7 +53,7 @@ void sys_copyself(void)
 
 	if(d == BOOT_DEVICE_SPINOR)
 	{
-		mem = (void *)__image_start;
+		mem = (void *)0x40000000;
 		size = __image_end - __image_start;
 
 		sys_spinor_init();

不知在RISCV平台用C来获取链接脚本的绝对位置,如果有发现其他方法,不妨回复下,用C来控制RISCV编译器感觉还是比较困难的。

#424 Re: 全志 SOC » 用 MSVC2017 编译 XFEL 项目 » 2021-06-17 12:47:23

linux下,近100KB/S,不知不同电脑间是否有区别。

#425 Re: 全志 SOC » 用 MSVC2017 编译 XFEL 项目 » 2021-06-17 12:46:17

LINUX下会快一点,win表现是差一些。

#426 Re: 全志 SOC » 终于搞清楚汇编代码的重定位判断语句是怎么实现的了 » 2021-06-15 19:18:32

	/* Copyself to link address */
	la t0, _start
	la t1, _image_start
	LREG t1, (t1)
	beq t0, t1, 1f
	la a0, _image_start
	LREG a0, (a0)
	la a2, _image_end
	LREG a2, (a2)
	sub a2, a2, a0
	la a1, _start
	call memcpy
1:	nop

贴一个riscv版本的

#427 Re: 司徒开源 » 研究FC3000掌機的開源可行性 » 2021-06-15 17:31:53

直接上逻辑分析仪吧,专用工具也就在这个时候用的,现在不用,啥时候用。

#428 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-06-15 09:27:29

现在xfel已支持F1C100S,V3S, V831, H3,D1这5个芯片的nor flash烧写,linux版就直接下载源码,自己编译就行,windows版工具,可以直接下载晕哥的,https://whycan.com/viewtopic.php?pid=64570#p64570

对于全志全系列芯片支持,这个还得靠大家一起努力,欢迎pull request,看到哪里缺了,手上又有现成开发板就顺手支持下,添加芯片的支持参考上面的帖子。为了提升烧录速度,接口有些变化,但大同小异,照着抄,就行了。

sunxi-fel工具至少是无法同时支持V3S以及F1C100S这两个芯片,这一点xfel做到了,而且还能支持RISCV平台,所以全系列芯片的支持,是完全可能的。

#429 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-06-14 00:08:45

xfel现已支持D1芯片SPI NOR FLASH的读写

100% [================================================]  1049 kB,  108.8 kB/s 
100% [================================================]  1049 kB,  383.4 kB/s 

上面是SPI NOR FLASH写入速度,下面是读速度。

#430 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-06-13 01:42:53

重新架构xfel工具的spi接口,采用命令队列方式,现在写入速度正常了,由原先的1.7KB/S提升到80KB/S,基本达到实用的程度了。

100% [================================================]  1049 kB,   81.0 kB/s 
100% [================================================]  1049 kB,  184.4 kB/s 

上面是的V831 spi nor flash的写入速度,下面是读速度。

#431 Re: 全志 SOC » xfel运行D1的boot0 » 2021-06-13 00:56:48

fes是给livesuilt用的,主要用于烧录,全志芯片有fel及fes两种usb通信模式,全志真正的烧录都是在fes模式下,fel仅仅是为了传输fes及运行,不过fel模式可以借助xfel实现fes的所有功能

#432 Re: 司徒开源 » 研究FC3000掌機的開源可行性 » 2021-06-12 09:54:22

	/* Initial system clock, ddr add uart */
	bl sys_clock_init
	bl sys_dram_init
	bl sys_uart_init

	/* Boot speed up, leave slower sram */
	adr r0, _start
	ldr r1, =_start
	cmp r0, r1
	beq _speedup
	ldr r0, =0x81f80000
	adr r1, _start
	ldr r2, =__spl_size
	bl memcpy
	ldr r0, =_speedup
	ldr r1, =_start
	sub r0, r0, r1
	ldr r1, =0x81f80000
	add r0, r0, r1
	mov pc, r0
_speedup:
	nop

	/* Copyself to link address */
	adr r0, _start
	ldr r1, =_start
	cmp r0, r1
	beq 1f
	bl sys_copyself
1:	nop

#433 Re: 司徒开源 » 研究FC3000掌機的開源可行性 » 2021-06-12 09:53:20

司徒,不要debug了,这里有原始码,不要怀疑,这个loader的源头都在这里。
https://github.com/xboot/xboot/blob/master/src/arch/arm32/mach-f1c100s/start.S

#434 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-06-07 18:08:10

XFEL工具,在理论上,全志全系列芯片都是可以支持的,因全志芯片太多,个人也不可能拥有所有芯片的开发板,这里也只能借助大家的力量,欢迎大家踊跃pull request,以支持更多的芯片。

这里说明一下,如何支持一款芯片,以A40I为例,首先,在chips目录下创建一个名为a40i的文件,里面主要是实现struct chip_t这个结构,这些回调函数可以直接return 0,这个代表某个具体的指令不支持而已,但读写sram等都是可以的,这个支持由fel协议来实现的,具体的芯片不需做任何适配。

#include <fel.h>

static int chip_reset(struct xfel_ctx_t * ctx)
{
	return 0;
}

static int chip_sid(struct xfel_ctx_t * ctx, uint32_t * sid)
{
	return 0;
}

static int chip_jtag(struct xfel_ctx_t * ctx)
{
	return 0;
}

static int chip_ddr(struct xfel_ctx_t * ctx, const char * type)
{
	return 0;
}

static int chip_spi_init(struct xfel_ctx_t * ctx)
{
	return 0;
}

static int chip_spi_exit(struct xfel_ctx_t * ctx)
{
	return 0;
}

static int chip_spi_select(struct xfel_ctx_t * ctx)
{
	return 0;
}

static int chip_spi_deselect(struct xfel_ctx_t * ctx)
{
	return 0;
}

static int chip_spi_xfer(struct xfel_ctx_t * ctx, void * txbuf, uint32_t txlen, void * rxbuf, uint32_t rxlen)
{
	return 0;
}

struct chip_t a40i = {
	.name = "A40I",
	.id = 0x00170100,
	.reset = chip_reset,
	.sid = chip_sid,
	.jtag = chip_jtag,
	.ddr = chip_ddr,
	.spi_init = chip_spi_init,
	.spi_exit = chip_spi_exit,
	.spi_select = chip_spi_select,
	.spi_deselect = chip_spi_deselect,
	.spi_xfer = chip_spi_xfer,
};

添加了a40i这个文件后,别忘记将这个加入到支持的芯片列表里,加入时按名字排序即可

extern struct chip_t a40i;
extern struct chip_t d1;
extern struct chip_t f1c100s;
extern struct chip_t h3;
extern struct chip_t r329;
extern struct chip_t t507;
extern struct chip_t v3s;
extern struct chip_t v831;

static struct chip_t * chips[] = {
	&a40i,
	&d1,
	&f1c100s,
	&h3,
	&r329,
	&t507,
	&v3s,
	&v831,
};

这样提交后,xfel就支持了一款全志的新芯片了,当然很多高阶功能都是赞未实现的,这个也无关仅要,慢慢完善就可以了。

这里有个最关键的ID信息,需要填准确,这个获取很容易,将你的板子上电并进入芯片的fel模式,然后执行如下指令

sudo xfel version

此时终端会反馈一串芯片信息,其中的soc字段就是芯片的id,十六进制方式表达。

AWUSBFEX soc=0x00170100(A40I) 0x00000001 ver=0x0001 0x44 0x08 scratchpad=0x00007e00

支持一个新芯片是不是很简单呢,如果你手上有xfel还未支持的芯片,不妨按这个流程操作下,并pull request,争取能将xfel变成全志芯片裸机开发的瑞士军刀。

#435 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-06-07 17:27:36

spi nor及 spi nand的支持正在开发,计划先支持spi nor flash的烧写,spi nand的后延,现在底层spi接口,已支持F1C100S,V3S, V831, H3这四个芯片,D1暂未实现,一切都会有的,需要时间。。。

#436 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-06-07 13:52:26

u可能是玄铁自己的扩展吧,具体是什么就不得而知了。在玄铁工具链里可以添加xthead标志生成玄铁扩展的指令集。

-MCFLAGS                := -march=rv64imafdc -mabi=lp64d -mcmodel=medany
+MCFLAGS                := -march=rv64gcvxthead -mabi=lp64d -mcmodel=medany

#438 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-05-30 20:41:03

到这里,xboot就可以直接运行在ram中,无需uboot支持了

执行如下指令:

sudo xfel ddr ddr3
sudo xfel write 0x40000000 output/xboot.bin
sudo xfel exec 0x40000000

#439 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-05-30 20:26:21

XFEL已支持D1芯片的DDR初始化

仅需执行如下指令即可初始化DDR,支持DDR3以及LPDDR3的初始化。

sudo xfel ddr ddr3
xfel ddr ddr3	- Initial ddr controller with ddr3
xfel ddr lpddr3	- Initial ddr controller with lpddr3

执行这条指令后,串口会输出如下信息:

get_pmu_exist() = 4294967295
ddr_efuse_type: 0x0
[AUTO DEBUG] two rank and full DQ!
ddr_efuse_type: 0x0
[AUTO DEBUG] rank 0 row = 15 
[AUTO DEBUG] rank 0 bank = 8 
[AUTO DEBUG] rank 0 page size = 2 KB 
[AUTO DEBUG] rank 1 row = 15 
[AUTO DEBUG] rank 1 bank = 8 
[AUTO DEBUG] rank 1 page size = 2 KB 
rank1 config same as rank0
DRAM BOOT DRIVE INFO: %s
DRAM CLK = 792 MHz
DRAM Type = 3 (2:DDR2,3:DDR3)
DRAMC ZQ value: 0x7b7bfb
DRAM ODT value: 0x42.
ddr_efuse_type: 0x0
DRAM SIZE =1024 M
DRAM simple test OK.

有了xfel,裸奔已经没有任何难度了。
下面就看大家各显神通了。

#440 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-05-30 12:13:56

已实现DDR初始化

DRAM only have internal ZQ!!
get_pmu_exist() = 4294967295
ddr_efuse_type: 0x0
[AUTO DEBUG] two rank and full DQ!
ddr_efuse_type: 0x0
[AUTO DEBUG] rank 0 row = 15 
[AUTO DEBUG] rank 0 bank = 8 
[AUTO DEBUG] rank 0 page size = 2 KB 
[AUTO DEBUG] rank 1 row = 15 
[AUTO DEBUG] rank 1 bank = 8 
[AUTO DEBUG] rank 1 page size = 2 KB 
rank1 config same as rank0
DRAM BOOT DRIVE INFO: %s
DRAM CLK = 792 MHz
DRAM Type = 3 (2:DDR2,3:DDR3)
DRAMC ZQ value: 0x7b7bfb
DRAM ODT value: 0x42.
ddr_efuse_type: 0x0
DRAM SIZE =1024 M
DRAM simple test OK.
ok 1024
OK
X
X
X
X

#441 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-05-30 10:38:54

玄铁扩展了指令集,一些有用的信息
http://crva.ict.ac.cn/crvs2020/index/slides/2-8.pdf

-MCFLAGS                := -march=rv64imafdc -mabi=lp64d -mcmodel=medany
+MCFLAGS                := -march=rv64gcvxthead -mabi=lp64d -mcmodel=medany

也不是非得用官方编译器,标准编译器也是可以正常工作的,只不过扩展指令就别指望能用上了。

#442 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-05-30 09:19:06

d1spl.zip
一个小型spl测试镜像,可以通过xfel工具上传到sram,然后执行,并在串口输出相关debug信息

xfel上传镜像到sram中并执行操作指令

sudo xfel write 0x20000 output/d1spl.bin;
sudo xfel exec 0x20000;

执行上述指令后,串口输出如下信息:

OK
X
X
X
X
X
X
X
X
X
X
X
X                                                                                 
X                                                                                 
X                                                                                 
X                                                                                 
X                  

这是彻底裸奔的第一步,下一步就可以初始化DDR了。

执行上述指令时,需要将D1置于fel模式,可以按着fel按键开机,就可以自动进入fel模式,或者直接清空flash里面内容。

#443 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-05-28 19:59:40

D1内存带宽测试

xboot: /# wboxtest benchmark
[benchmark]-[memcmp]
 Bandwidth: 117.588MB/s
[benchmark]-[memcpy]
 Bandwidth: 1.200GB/s
[benchmark]-[memmove]
 Bandwidth: 189.810MB/s
[benchmark]-[memset]
 Bandwidth: 2.457GB/s

#444 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-05-28 18:38:11

实现中断驱动,定时器驱动

#445 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-05-28 10:28:53

root@TinaLinux:/sys/kernel/debug/clk# cat clk_summary
                                 enable  prepare  protect                                duty
   clock                          count    count    count        rate   accuracy phase  cycle
---------------------------------------------------------------------------------------------
 ext-32k                              1        1        0       32768          0     0  50000
    ext32k-gate                       1        1        0       32768          0     0  50000
       osc32k                         1        1        0       32768          0     0  50000
          r-apb0-ir-rx                0        0        0       32768          0     0  50000
          rtc-32k-fanout              0        0        0       32768          0     0  50000
          rtc32k                      1        1        0       32768          0     0  50000
             rtc-1k                   1        1        0        1024          0     0  50000
 rc-16m                               0        0        0    16000000  300000000     0  50000
    iosc                              0        0        0    16000000  300000000     0  50000
       iosc-div32k                    0        0        0       32000  300000000     0  50000
 dcxo24M                              6        6        0    24000000          0     0  50000
    r-apb0                            0        0        0    24000000          0     0  50000
       r-apb0-cpucfg                  0        0        0    24000000          0     0  50000
       r-apb0-bus-ir-rx               0        0        0    24000000          0     0  50000
       r-ppu                          0        0        0    24000000          0     0  50000
       r-apb0-twd                     0        0        0    24000000          0     0  50000
       r-apb0-timer                   0        0        0    24000000          0     0  50000
    r-ahb                             2        2        0    24000000          0     0  50000
       r-ahb-rtc                      1        1        0    24000000          0     0  50000
       rtc-spi                        1        1        0    24000000          0     0  50000
    fanout-24m                        0        0        0    24000000          0     0  50000
    tpadc                             0        0        0    24000000          0     0  50000
    csi0-mclk                         0        0        0    24000000          0     0  50000
    ledc                              0        0        0    24000000          0     0  50000
    tvd                               0        0        0    24000000          0     0  50000
    hdmi-24m                          0        0        0    24000000          0     0  50000
    ir-tx                             0        0        0    24000000          0     0  50000
    spi1                              0        0        0    24000000          0     0  50000
    mmc2                              0        0        0    24000000          0     0  50000
    mmc0                              0        0        0      800000          0     0  50000
    avs                               0        0        0    24000000          0     0  50000
    apb1                              1        1        0    24000000          0     0  50000
       bus-i2s2                       0        0        0    24000000          0     0  50000
       bus-i2s1                       0        0        0    24000000          0     0  50000
       bus-i2s0                       0        0        0    24000000          0     0  50000
       bus-can1                       0        0        0    24000000          0     0  50000
       bus-can0                       0        0        0    24000000          0     0  50000
       bus-i2c3                       0        0        0    24000000          0     0  50000
       bus-i2c2                       0        0        0    24000000          0     0  50000
       bus-i2c1                       0        0        0    24000000          0     0  50000
       bus-i2c0                       0        0        0    24000000          0     0  50000
       bus-uart5                      0        0        0    24000000          0     0  50000
       bus-uart4                      0        0        0    24000000          0     0  50000
       bus-uart3                      0        0        0    24000000          0     0  50000
       bus-uart2                      0        0        0    24000000          0     0  50000
       bus-uart1                      0        0        0    24000000          0     0  50000
       bus-uart0                      1        1        0    24000000          0     0  50000
    cpux                              1        1        0    24000000          0     0  50000
       apb                            0        0        0     6000000          0     0  50000
       axi                            0        0        0    24000000          0     0  50000
    pll-audio1                        0        0        0  3072000000          0     0  50000
       pll-audio1-div5                0        0        0   614400000          0     0  50000
       pll-audio1-div2                0        0        0  1536000000          0     0  50000
    pll-audio0-4x                     0        0        0    49142857          0     0  50000
       i2s2-asrc                      0        0        0    49142857          0     0  50000
       pll-audio0                     0        0        0    12285714          0     0  50000
          audio-codec-adc             0        0        0    12285714          0     0  50000
          audio-codec-dac             0        0        0    12285714          0     0  50000
          dmic                        0        0        0    12285714          0     0  50000
          spdif-tx                    0        0        0    12285714          0     0  50000
          i2s2                        0        0        0    12285714          0     0  50000
          i2s1                        0        0        0    12285714          0     0  50000
          i2s0                        0        0        0    12285714          0     0  50000
       pll-audio0-2x                  0        0        0    24571428          0     0  50000
    pll-ve                            0        0        0   432000000          0     0  50000
       ve                             0        0        0   432000000          0     0  50000
    pll-video1                        0        0        0   297000000          0     0  50000
       pll-video1-4x                  0        0        0  1188000000          0     0  50000
          tcon-tv                     0        0        0  1188000000          0     0  50000
       pll-video1-2x                  0        0        0   594000000          0     0  50000
    pll-video0                        0        0        0   102000000          0     0  50000
       fanout-27m                     0        0        0   102000000          0     0  50000
       tve                            0        0        0   102000000          0     0  50000
       pll-video0-4x                  0        0        0   408000000          0     0  50000
          tcon-lcd0                   0        0        0   408000000          0     0  50000
       pll-video0-2x                  0        0        0   204000000          0     0  50000
          mipi-dsi                    0        0        0   204000000          0     0  50000
    pll-periph0-parent                1        1        0  2400000000          0     0  50000
       pll-periph0-800m               0        0        0   800000000          0     0  50000
       pll-periph0-2x                 3        3        0  1200000000          0     0  50000
          mmc1                        1        1        0   100000000          0     0  50000
          fanout-32k                  1        1        0       32768          0     0  50000
             fanout2-out-clk          0        0        0       32768          0     0  50000
             fanout1-out-clk          1        1        0       32768          0     0  50000
             fanout0-out-clk          0        0        0       32768          0     0  50000
          fanout-16m                  0        0        0    16000000          0     0  50000
          dsp                         0        0        0   600000000          0     0  50000
          csi-top                     0        0        0  1200000000          0     0  50000
          hdmi-cec-32k                0        0        0       32768          0     0  50000
             hdmi-cec                 0        0        0       32768          0     0  50000
          ce                          0        0        0   400000000          0     0  50000
          g2d                         0        0        0  1200000000          0     0  50000
          di                          0        0        0  1200000000          0     0  50000
          de0                         0        0        0   300000000          0     0  50000
          pll-periph0-div3            0        0        0   200000000          0     0  50000
          pll-periph0                 4        4        0   600000000          0     0  50000
             spi0                     1        1        0   100000000          0     0  50000
             fanout-25m               0        0        0    25000000          0     0  50000
             spdif-rx                 0        0        0   600000000          0     0  50000
             emac0-25m                0        0        0   600000000          0     0  50000
             apb0                     3        3        0   100000000          0     0  50000
                fanout-pclk           0        0        0   100000000          0     0  50000
                bus-tzma              0        0        0   100000000          0     0  50000
                bus-tpadc             0        0        0   100000000          0     0  50000
                bus-audio-codec       0        0        0   100000000          0     0  50000
                bus-dmic              0        0        0   100000000          0     0  50000
                bus-spdif             0        0        0   100000000          0     0  50000
                bus-ths               0        0        0   100000000          0     0  50000
                bus-gpadc             0        0        0   100000000          0     0  50000
                bus-ir-tx             0        0        0   100000000          0     0  50000
                bus-iommu             1        1        0   100000000          0     0  50000
                bus-pwm               1        1        0   100000000          0     0  50000
             psi-ahb                  6        6        0   200000000          0     0  50000
                bus-riscv-cfg         0        0        0   200000000          0     0  50000
                bus-dsp-cfg           0        0        0   200000000          0     0  50000
                bus-csi               0        0        0   200000000          0     0  50000
                bus-ledc              0        0        0   200000000          0     0  50000
                bus-tvd-top           0        0        0   200000000          0     0  50000
                bus-tvd               0        0        0   200000000          0     0  50000
                bus-tve-top           0        0        0   200000000          0     0  50000
                bus-tve               0        0        0   200000000          0     0  50000
                bus-tcon-tv           0        0        0   200000000          0     0  50000
                bus-tcon-lcd0         0        0        0   200000000          0     0  50000
                bus-mipi-dsi          0        0        0   200000000          0     0  50000
                bus-hdmi              0        0        0   200000000          0     0  50000
                bus-dpss-top0         0        0        0   200000000          0     0  50000
                bus-lradc             1        1        0   200000000          0     0  50000
                bus-otg               1        1        0   200000000          0     0  50000
                bus-ehci1             0        0        0   200000000          0     0  50000
                bus-ehci0             0        0        0   200000000          0     0  50000
                bus-ohci1             0        0        0   200000000          0     0  50000
                bus-ohci0             0        0        0   200000000          0     0  50000
                bus-emac0             0        0        0   200000000          0     0  50000
                bus-spi1              0        0        0   200000000          0     0  50000
                bus-spi0              1        1        0   200000000          0     0  50000
                bus-mmc2              0        0        0   200000000          0     0  50000
                bus-mmc1              1        1        0   200000000          0     0  50000
                bus-mmc0              0        0        0   200000000          0     0  50000
                bus-dram              1        1        0   200000000          0     0  50000
                bus-dbg               0        0        0   200000000          0     0  50000
                bus-hstimer           0        0        0   200000000          0     0  50000
                bus-spinlock          0        0        0   200000000          0     0  50000
                bus-msgbox2           0        0        0   200000000          0     0  50000
                bus-msgbox1           0        0        0   200000000          0     0  50000
                bus-msgbox0           0        0        0   200000000          0     0  50000
                bus-dma               1        1        0   200000000          0     0  50000
                bus-ve                0        0        0   200000000          0     0  50000
                bus-ce                0        0        0   200000000          0     0  50000
                bus-g2d               0        0        0   200000000          0     0  50000
                bus-di                0        0        0   200000000          0     0  50000
                bus-de0               0        0        0   200000000          0     0  50000
    pll-ddr0                          2        2        0  1584000000          0     0  50000
       dram-clk                       0        0        0  1584000000          0     0  50000
       mbus                           1        1        0   396000000          0     0  50000
          mbus-g2d                    0        0        0   396000000          0     0  50000
          mbus-csi                    0        0        0   396000000          0     0  50000
          mbus-tvin                   0        0        0   396000000          0     0  50000
          mbus-ce                     0        0        0   396000000          0     0  50000
          mbus-ve                     0        0        0   396000000          0     0  50000
          mbus-dma                    1        1        0   396000000          0     0  50000
    pll-cpux                          0        0        0  1008000000          0     0  50000
       riscv                          0        0        0  1008000000          0     0  50000
          riscv-axi                   0        0        0   504000000          0     0  50000
       pll-cpux-div                   0        0        0  1008000000          0     0  50000
    osc12M                            0        0        0    12000000          0     0  50000
       fanout-12m                     0        0        0    12000000          0     0  50000
       usb-ohci1                      0        0        0    12000000          0     0  50000
       usb-ohci0                      0        0        0    12000000          0     0  50000
    dcxo24M-div32k                    0        0        0       32768          0     0  50000

先dump整个时种,发现D1芯片里的PLL特别多,根本不是规格书里说的8个pll,而是至少有10个

#446 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-05-27 23:58:28

一段代码来石锤正室的存在,cortex-a7,不要有任何怀疑。

	/* a7:Reparent CPU during PLL CPU rate changes */
	ccu_mux_notifier_register(pll_cpux_clk.common.hw.clk,
				  &sun8iw20_cpu_nb);

	/* riscv:Reparent CPU during PLL CPU rate changes */
	ccu_mux_notifier_register(pll_cpux_clk.common.hw.clk,
				  &sun20iw1_cpu_nb);

#447 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-05-26 18:13:22

d1-brom.zip
利用xfel工具dump出来的D1 brom,感兴趣的可以逆向看看

#448 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-05-26 12:17:21

xfel项目工程路径,理论上全志全系列芯片都可以支持,不管是arm32,arm64,riscv64,短期重点目标是riscv64的D1支持,设计时避免过多hack,增强适应性,最大的特色借用xfel工具可以直接初始化DDR。
感兴趣的,可以尝尝鲜,开发中...
https://github.com/xboot/xfel

#449 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-05-26 12:13:21

工欲善其事,必先利其器,先开发个fel工具,名叫xfel

xfel-v1.0.0 https://github.com/xboot/xfel
usage:
    xfel help                                   - Print this usage summary
    xfel version                                - Show brom version
    xfel hexdump <address> <length>             - Dumps memory region in hex
    xfel dump <address> <length>                - Binary memory dump to stdout
    xfel exec <address>                         - Call function address
    xfel read32 <address>                       - Read 32-bits value from device memory
    xfel write32 <address> <value>              - Write 32-bits value to device memory
    xfel read <address> <length> <file>         - Read memory to file
    xfel write <address> <file>                 - Write file to memory
    xfel reset                                  - Reset device using watchdog
    xfel sid                                    - Output 128-bits SID information
    xfel jtag                                   - Enable JTAG debug
    xfel ddr [type]                             - Initial DDR controller with optional type
    xfel spinor                                 - Detect spi nor flash
    xfel spinor read <address> <length> <file>  - Read spi nor flash to file
    xfel spinor write <address> <file>          - Write file to spi nor flash
    xfel spinand                                - Detect spi nand flash
    xfel spinand read <address> <length> <file> - Read spi nand flash to file
    xfel spinand write <address> <file>         - Write file to spi nand flash

#450 Re: 全志 SOC » cygwin 编译 xfel 成功,但是运行出错,请问是什么原因呢? » 2021-05-26 12:11:57

估计是cygwin的问题,支持的命令行。

xfel-v1.0.0 https://github.com/xboot/xfel
usage:
    xfel help                                   - Print this usage summary
    xfel version                                - Show brom version
    xfel hexdump <address> <length>             - Dumps memory region in hex
    xfel dump <address> <length>                - Binary memory dump to stdout
    xfel exec <address>                         - Call function address
    xfel read32 <address>                       - Read 32-bits value from device memory
    xfel write32 <address> <value>              - Write 32-bits value to device memory
    xfel read <address> <length> <file>         - Read memory to file
    xfel write <address> <file>                 - Write file to memory
    xfel reset                                  - Reset device using watchdog
    xfel sid                                    - Output 128-bits SID information
    xfel jtag                                   - Enable JTAG debug
    xfel ddr [type]                             - Initial DDR controller with optional type
    xfel spinor                                 - Detect spi nor flash
    xfel spinor read <address> <length> <file>  - Read spi nor flash to file
    xfel spinor write <address> <file>          - Write file to spi nor flash
    xfel spinand                                - Detect spi nand flash
    xfel spinand read <address> <length> <file> - Read spi nand flash to file
    xfel spinand write <address> <file>         - Write file to spi nand flash

#452 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-05-24 20:30:06

@Kirin
马甲不马甲,我们也真没那么关心,比较关心的还是哪有卖更实惠的芯片,能让利消费者,产品拥有成本优势,能在市场上拥有竞争力。这才是选择的出发点。你科技进步了,成本得降,不然那算哪门子科技进步。

#453 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-05-24 12:03:59

如果包DDR版本定价在4个美金左右,还是有杀伤力的。

#454 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-05-24 12:02:06

是的,无所不包,要什么有什么,算比较完美的芯片,当然晶圆面积也小不了哪里去,脚越多的,全志定价肯定越贵,虽然是同一个东西。在满足要求的同时,尽量选脚少的。

#455 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-05-23 19:45:04

实现reset驱动,gpio驱动,串口驱动,还有一堆工作要做,任重道远!

#456 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-05-23 19:43:06

拉轰的脚踏车 说:

请问楼主, #5 楼怎么进入uboot命令模式? 按什么按键?

需要修改uboot的bootdelay

#457 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-05-23 17:55:00

#define SID_PRCTL               (IOMEM_ADDR(SUNXI_SID_BASE) + 0x40)
#define SID_PRKEY               (IOMEM_ADDR(SUNXI_SID_BASE) + 0x50)
#define SID_RDKEY               (IOMEM_ADDR(SUNXI_SID_BASE) + 0x60)
#define SJTAG_AT0               (IOMEM_ADDR(SUNXI_SID_BASE) + 0x80)
#define SJTAG_AT1               (IOMEM_ADDR(SUNXI_SID_BASE) + 0x84)
#define SJTAG_S                 (IOMEM_ADDR(SUNXI_SID_BASE) + 0x88)
#define SID_EFUSE               (IOMEM_ADDR(SUNXI_SID_BASE) + 0x200)
#define SID_OP_LOCK  (0xAC)

#define EFUSE_CHIPID            (0x0)
#define EFUSE_ANTI_BRUSH		(0x10)
#define EFUSE_OEM_PROGRAM		(0x38)

#define ANTI_BRUSH_BIT_OFFSET			(31)
#define ANTI_BRUSH_MODE			(SID_EFUSE + EFUSE_ANTI_BRUSH)

/* write protect */
#define EFUSE_WRITE_PROTECT		(0x40)
/* read  protect */
#define EFUSE_READ_PROTECT		(0x44)
/* jtag security */

#define EFUSE_HUK					(0x50)
#define EFUSE_ROTPK					(0x70)
#define EFUSE_SSK					(0x90)
#define EFUSE_RSSK					(0xB0)
#define EFUSE_HDCP_HASH				(0xC0)
#define EFUSE_NV1					(0xD0)
#define EFUSE_NV2					(0xD4)
#define EFUSE_OEM_PROGRAM_SECURE	(0xE4)

#define SID_HUK_SIZE					(192)
#define SID_OEM_PROGRAM_SIZE			(64)
#define SID_SSK_SIZE					(256)
#define SID_RSSK_SIZE					(128)
#define SID_HDCP_HASH_SIZE				(128)
#define SID_OEM_PROGRAM_SECURE_SIZE		(224)

/*read protect*/
#define SCC_OEM_PROGRAM_DONTSHOW_FLAG			(4)
#define SCC_ROTPK_DONTSHOW_FLAG					(12)
#define SCC_SSK_DONTSHOW_FLAG					(13)
#define SCC_RSSK_DONTSHOW_FLAG					(14)
#define SCC_HDCP_HASH_DONTSHOW_FLAG				(15)
#define SCC_OEM_PROGRAM_SECURE_DONTSHOW_FLAG	(18)

/*write protect*/
#define SCC_OEM_PROGRAM_BURNED_FLAG				(4)
#define SCC_HUK_BURNED_FLAG						(9)
#define SCC_ROTPK_BURNED_FLAG					(12)
#define SCC_SSK_BURNED_FLAG						(13)
#define SCC_RSSK_BURNED_FLAG					(14)
#define SCC_HDCP_HASH_BURNED_FLAG				(15)
#define SCC_OEM_PROGRAM_SECURE_BURNED_FLAG		(18)

/*efuse power ctl*/
#define EFUSE_HV_SWITCH			(IOMEM_ADDR(SUNXI_RTC_BASE) + 0x204)

整个秘密都在SID里,这是个比较有用的信息,现在xboot可以获取D1的唯一序列号。

xboot: /# cat sys/class/machine/nezha/uniqueid
92805000dc0048140141d5812c5a1b0b

#458 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-05-23 15:21:00

修改boot0干掉opensbi,修改uboot,增加go指令,借助fastboot,顺利启动xboot

=> go 0x41000800
## Starting application at 0x41000800 ...
OOOO       _                   _                     
 _  _ | |___ _____ _____ _| |_                   
\ \/ /|  _  |  _  |  _  |_   _|  (C) 2007-2021   
 )  ( | |_| | |_| | |_| | | |____JIANJUN.JIANG__ 
/_/\_\|_____|_____|_____| |_____________________|
V3.0.0 (May 23 2021 - 15:15:37) - [nezha][Nezha Based On Allwinner D1 SOC]
[    0.000000] Probe device 'blk-romdisk.0' with blk-romdisk
[    0.000010] Probe device 'xin24m' with clk-fixed
[    0.000020] Probe device 'xin10m' with clk-fixed
[    0.000030] Probe device 'xin32k' with clk-fixed
[    0.000040] Probe device 'uart0' with clk-link
[    0.000050] Probe device 'uart1' with clk-link
[    0.000060] Probe device 'uart2' with clk-link
[    0.000070] Probe device 'uart3' with clk-link
[    0.000080] Probe device 'uart4' with clk-link
[    0.000090] Probe device 'uart5' with clk-link
[    0.000100] Probe device 'uart-16550.0' with uart-16550
[    0.000110] Probe device 'uart-16550.1' with uart-16550
[    0.000120] Probe device 'uart-16550.2' with uart-16550
[    0.000130] Probe device 'uart-16550.3' with uart-16550
[    0.000140] Probe device 'uart-16550.4' with uart-16550
[    0.000150] Probe device 'uart-16550.5' with uart-16550
[    0.000160] Probe device 'console-uart.0' with console-uart
[    0.000170] mount /private with 'ram' filesystem
Press any key to stop auto boot:  0.000
 could not found 'launcher' command
xboot: /#  
xboot: /# 
xboot: /# 
xboot: /# help
 cat       - show the contents of a file
 cd        - change the current working directory
 clear     - clear the terminal screen
 cp        - copy files and directories
 date      - print the system date and time
 dcp       - device copy for file or block or memory
 delay     - delay for a specified time
 echo      - echo the string to standard output
 env       - display environment variable
 event     - show all of input events
 fdt       - flattened device tree utility commands
 go        - start application at address
 help      - show online help about command
 kill      - kill the window task
 ls        - list directory contents
 md        - dump a memory region
 mkdir     - make directories
 mkfat16   - format fat16 filesystem on block device
 mkfat32   - format fat32 filesystem on block device
 mkz       - compress and encrypt and signature image
 mount     - mount a file system
 mv        - move (rename) files
 mw        - write values to memory region
 overview  - show overview application of xui
 ps        - report a snapshot of the current processes
 pwd       - print the current working directory
 reboot    - reboot the target system
 rm        - remove files or directories
 rx        - receive file using xmodem
 setting   - display the global setting
 sha1sum   - compute sha1 message digest
 sha256sum - compute sha256 message digest
 shutdown  - shutdown the target system
 sleep     - sleep the target system
 sx        - send file using xmodem
 sync      - synchronize cached writes to storage
 test      - debug command for programmer
 tree      - list contents of directories in a tree-like format
 umount    - unmount a file system
 version   - show xboot version information
 write     - write contents to a file
 xsync     - xsync server for file copying

为了达成这一步,用了很多高级技巧,万事开头难。现在啥工具都缺。

#459 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-05-23 15:18:07

opensbi太恶心了,程序都不給跳转,一跳转就指令异常,直接干掉这个,影响我开发引导程序

#460 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-05-23 13:51:24

正室是可以被关禁闭的。

=> md.l 0x02001504 1
02001504: 80000000                               ....
=> md.l 0x02001500 2
02001500: 00000300 80000000                      ........
=> md.l 0x02001504 1
02001504: 80000000                               ....
=> mw.l 0x02001504 0x000016aa
=> md.l 0x02001504 1         
02001504: 00000000                               ....
=> 
02001508: 00000000                               ....
=> md.l 0x02001504 1
02001504: 00000000                               ....
=> md.l 0x02001504 1
02001504: 00000000                               ....

#461 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-05-23 11:20:46

cat /proc/cpuinfo 
processor       : 0
hart            : 0
isa             : rv64imafdcvu
mmu             : sv39

RISCV核支持的扩展,以及mmu信息

#462 Re: 全志 SOC » 全志D1芯片之终极探索 » 2021-05-23 10:55:16

关于DSP,关注Tensilica 这家公司,应该会有答案

#463 全志 SOC » 全志D1芯片之终极探索 » 2021-05-23 10:37:28

xboot
回复: 123

开这帖子,估计就是为了扒光这颗芯片的内裤。

先来点初步研究成果,这个芯片里面的RISCV核玄铁906只能算通房丫鬟,正室还是ARM,估计是双核cortex-a7,当然还带有一个hifi dsp,这个是第三方的不公开,也不值得研究。

这个芯片算异构系统,总共4个核,2个cortex-a7(可能是一个,但一定存在),一个riscv-64,一个dsp。

初步确认的马甲有,D1, T1033, R528-RV, ...

V, T, R, F系列都会有马甲,静候风暴吧,这是一个什么钱都能挣到的马甲,同志们,努力研究吧,会有惊喜的。

#464 Re: 全志 SOC » 在全志芯片F1C100S/V3S/V831上实现裸机加密方案,防盗版进行时(不采用专用加密芯片)。 » 2021-05-17 20:51:39

或者软件本身存在缓冲区溢出漏洞被攻击了,然后ram被dump了,即使ram被搞了,你也只能做到非完美破解,你无法固化rom,一没key,二没签名,复制无从谈起

#466 Re: 全志 SOC » 在全志芯片F1C100S/V3S/V831上实现裸机加密方案,防盗版进行时(不采用专用加密芯片)。 » 2021-05-17 19:37:44

struct zdesc_t {			/* Total 256 bytes */
	uint8_t magic[4];		/* ZB??, I for bind id, E for encrypt image */
	uint8_t key[32];		/* Aes256 encrypt key (hardcode or efuse suggested) */
	uint8_t sha256[32];		/* Sha256 hash */
	uint8_t signature[64];	/* Ecdsa256 signature of sha256 */
	uint8_t csize[4];		/* Compress size of image */
	uint8_t dsize[4];		/* Decompress size of image */
	uint8_t public[33];		/* Ecdsa256 public key (hardcode suggested) */
	uint8_t majoy;			/* Majoy version */
	uint8_t minior;			/* Minior version */
	uint8_t patch;			/* Patch version */
	uint8_t message[80];	/* Message additionally */
};

这个里面有两个东西涉及到安全性:

最关键的是AES256的密钥,这个需要防泄漏,最好是芯片只带AES256硬件压缩,KEY是只写的,这种安全性最高,基本很难获取key,这里技巧,根密钥是只写的,然后镜像采用的密钥不是根密钥,而是由根密钥经过运算生成的次级密钥,避免根密钥直接暴露。如果没有硬件AES256,那么这个key就只能硬编码到代码里,当然硬编码到代码里,还是有可能被找出来的,可以适当的用其他算法保护下这个key,比如RC4这种算法来保护key,安全性最差的,就是key直接放在头里,这个一般不建议,知道文件结构后,很容易获取。

其次是ECDSA256签名的公钥,其实这个公开是没有任何问题的,关键的是如果AES KEY被破了后,怎么防止伪造签名的问题,破解者伪造签名,唯一的思路就是自己生成一对ECDSA256密钥对,替换默认的,要应对这个,就是公钥不能直接采用文件头里的公钥,而是直接硬编码到代码里,当然硬编码到代码里,也是有可能被修改的,毕竟最关键的AES KEY 已经被破了。伪造签名,仅仅难度增加而已不能测地杜绝。


总结,这里最关键的是AES256 KEY,如果这个KEY被泄漏了,整套系统就失效了,如果KEY没有泄漏,那么整套系统就完全安全的。

如何将AES key泄漏的风险降到最低呢。就是一台机器,一个次级AES KEY,当然每个芯片的根密钥都是一样的,仅仅次级密钥是由根密钥和硬件ID通过某种算法生成的。及时破解了这台机器的AES key,也是没有太大价值的。

一句话,根密钥要好好保护,这个被破了,就彻底被破了,其他破解,都是无法动到根基。

切记,千万不要在任何场合直接使用根密钥,降低泄漏的风险!!!!

#467 Re: 全志 SOC » 在全志芯片F1C100S/V3S/V831上实现裸机加密方案,防盗版进行时(不采用专用加密芯片)。 » 2021-05-17 19:18:39

制作镜像简略流程:
LZ4压缩二进制镜像 ->AES256加密LZ4压缩镜像 -> SHA256计算摘要含头信息 -> ECSDA256对SHA256摘要进行签名 -> 更新头信息 -> AES256加密头信息

运行镜像流程
读取头信息 -> AES256解密头信息 -> 验证SHA256签名 -> 校验SHA256运算结果 -> AES256解密镜像 -> LZ4解压镜像

#468 Re: 全志 SOC » 在全志芯片F1C100S/V3S/V831上实现裸机加密方案,防盗版进行时(不采用专用加密芯片)。 » 2021-05-17 19:09:26

先说下,采用到的相关技术,LZ4压缩,SHA256算法,AES256算法,ECSDA256算法。

#469 Re: 全志 SOC » 在全志芯片F1C100S/V3S/V831上实现裸机加密方案,防盗版进行时(不采用专用加密芯片)。 » 2021-05-17 19:08:48

现在祭出方案,来一个核心头信息

struct zdesc_t {			/* Total 256 bytes */
	uint8_t magic[4];		/* ZB??, I for bind id, E for encrypt image */
	uint8_t key[32];		/* Aes256 encrypt key (hardcode or efuse suggested) */
	uint8_t sha256[32];		/* Sha256 hash */
	uint8_t signature[64];	/* Ecdsa256 signature of sha256 */
	uint8_t csize[4];		/* Compress size of image */
	uint8_t dsize[4];		/* Decompress size of image */
	uint8_t public[33];		/* Ecdsa256 public key (hardcode suggested) */
	uint8_t majoy;			/* Majoy version */
	uint8_t minior;			/* Minior version */
	uint8_t patch;			/* Patch version */
	uint8_t message[80];	/* Message additionally */
};

#470 全志 SOC » 在全志芯片F1C100S/V3S/V831上实现裸机加密方案,防盗版进行时(不采用专用加密芯片)。 » 2021-05-17 19:07:41

xboot
回复: 42

当你辛辛苦苦开发了一个方案,正准备享受你的劳动果实时,突然一个晴天霹雳,发现被盗版了。。。 财富毫不留情的离你而去。只剩你在风中瑟瑟发抖。

未避免让您冻感冒了,我这里提供一个防盗版思路,抛转引玉,探讨探讨。

一般我们通常所说的加密,防盗版,主要是指两件事:
1,防复制,你的镜像一般都是烧录在flash里,如果flash对拷就实现盗版,那么就相当于你直接在大街上裸奔。
2,防逆向,虽然源码见不着,但二进制跟源码也没太大区别,仅仅可读性差了点,但真要去读,还是可以读懂的。别人读懂了,就什么事都可能发生,爆破,仿制,扣出核心算法,等等。

为解决这两件事,我们先来一件一件分析。
第一件事,防复制,避免flash对拷盗版,这个可以通过绑定机器唯一序列号,唯一序列号的来源,CPUID最优,其次时候FLASH ID或其他芯片的ID。具体怎么绑定,就是引入SHA256算法,下面讨论。
第二件事,防逆向,我们就需要对镜像进行加密了,在运行时解密,这里引入AES256对称加密算法。

光引入这两个算法,还是不够的,还有一个完整性检验,用于防爆破,这里引入ECSDA256签名校验算法。

先总结下,防盗版,就是需要,在保护镜像的完整性的同时,一机一加密镜像,只要能做到防逆向,防修改,硬件绑定,这三个特性,你的财富就不会离你而去的。

先说个前提,如果需要做到这三个特性,唯一可靠的实现是要求芯片支持加密引导,如果不支持,这三点是不可能完全做到的。

虽然完全做不到,但实现大部分保护,还是有可能的。

下面的实现,认为芯片是支持加密引导的,且芯片没办法复制,里面的key也是安全的。这是前提。

#471 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 国产MCU对rtos的需求大吗? » 2021-05-17 18:23:52

其实rtos本身根本不重要的,关键是是否拥有各种组件,目的还是快速开发

#472 Re: 全志 SOC » 用F1C100S开发了一个项目,原始技术实现,裸奔XUI GUI框架 » 2021-05-12 09:29:52

要是还要自己去算坐标,不是累死个人,而且,定死坐标的那种,怎么可能做到自适应,且矢量化的UI系统。任意缩放,靠指定坐标来实现,是不敢想象的。XUI里面任何一个控件都无需传递任何坐标参数信息,也不会存储各种坐标,全靠自动布局系统来管理布局。

#473 Re: 全志 SOC » 用F1C100S开发了一个项目,原始技术实现,裸奔XUI GUI框架 » 2021-05-12 09:26:17

不需要,有自动布局系统,布局相关函数的调用一下,就可以按你心里所想得布局规则,布局了。

#474 Re: 全志 SOC » 用F1C100S开发了一个项目,原始技术实现,裸奔XUI GUI框架 » 2021-05-11 15:02:34

windows可以开发的,不过,体验差很多,开发效率也低很多。

#475 Re: 全志 SOC » 用F1C100S开发了一个项目,原始技术实现,裸奔XUI GUI框架 » 2021-05-11 11:26:08


给屏幕打上水印,任何界面都会有,有人能猜到究竟是想干啥吗?

#476 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 国产MCU对rtos的需求大吗? » 2021-05-10 21:13:20

不管底层是裸机还是rtos还是什么异构,什么分布式系统,大家要的是sdk,hdk,能迅速产品化的没坑的完整解决方案,最好今天有想法了,明天就能出样机,后天就能上市赚钱的玩意儿,管他是啥技术实现的

#477 Re: 全志 SOC » 用F1C100S开发了一个项目,原始技术实现,裸奔XUI GUI框架 » 2021-05-09 19:11:18

看你内存多大了,靠内部K级的SRAM肯定是不可以的

#479 Re: 全志 SOC » 用F1C100S开发了一个项目,原始技术实现,裸奔XUI GUI框架 » 2021-05-08 18:19:16


支持通过网络和485传输图片,因为传输协议层中间是通用的json数据,所以图片都是经过base64编码后,json格式打包传送到板子上,板子收到完整帧后,先base64解码,然后再jpg或png格式解码,解码后的内容直接生成surface_t对象,可通过xui_image 控件显示对象。

#480 Re: RISC-V » [juicevm] 只需要不到5000行代码实现一个risc-v虚拟机,纯c语言实现,无第三方库,支持ESP32 & GDB » 2021-05-08 17:51:08

退出时,恢复一下终端的状态吧,看不到光标了,还有参数选项解释可以详细点,现在不知道怎么传参

#483 Re: 全志 SOC » 用F1C100S开发了一个项目,原始技术实现,裸奔XUI GUI框架 » 2021-05-07 08:52:23


区分拖动与滑动事件,滑动时可以急停,提升用户体验

#485 Re: 全志 SOC » 用F1C100S开发了一个项目,原始技术实现,裸奔XUI GUI框架 » 2021-05-06 19:02:28


启动速度及通信测试,持续通信45分钟,没有发现异常。

#486 Re: 全志 SOC » 用F1C100S开发了一个项目,原始技术实现,裸奔XUI GUI框架 » 2021-05-06 15:45:34

写个键盘控件没多少行代码,关键要好看的话,这个得找到漂亮的皮,才行

#488 Re: 全志 SOC » 用F1C100S开发了一个项目,原始技术实现,裸奔XUI GUI框架 » 2021-05-06 09:29:20


中文界面启动速度优化,其中logo显示后会等待1秒,再执行APP

#491 Re: 全志 SOC » 用F1C100S开发了一个项目,原始技术实现,裸奔XUI GUI框架 » 2021-04-29 19:44:24

是的,就是状态不好封装,还有具体的事件响应没办法描述,语言能力在声明式UI显得很关键,基本有什么样语言就有什么样的表达,还是看语言的表达能力。

#492 Re: 全志 SOC » 用F1C100S开发了一个项目,原始技术实现,裸奔XUI GUI框架 » 2021-04-29 17:47:16

从另外一个角度看,虚拟dom是否可以看成绘制命令呢,diff算法,就相当于比较两帧之间的绘制命令差异。可能一个是宏观的,一个是微观的吧

#494 Re: 全志 SOC » 用F1C100S开发了一个项目,原始技术实现,裸奔XUI GUI框架 » 2021-04-28 15:26:57

是的,lua理论上是可以实现声明式GUI的,但现在还没见到相关工程,有lua版的react移植,但react仅仅是框架,排版,渲染,等都是自己实现,工作量还是很大的,这个领域我会一直关注,如果思路成熟了,真可能会去实现个lua版的声明式gui,现在xboot里,支持各种c版app,lua版app,可同时运行,不管选用哪种gui框架,都不冲突。之所以开发个c版本的gui,就是考虑到嵌入式领域,某些简单的案子,完全用c就可以胜任了,没必要上那么高阶的技能,况且lua也不是每个人都懂,多少是有点学习成本的。

编译型语言支持声明式ui,这一点我现在还没想明白,如果要让c支持声明式ui,理论上也有可能吗?第一感觉是不能。

#495 Re: 全志 SOC » 用F1C100S开发了一个项目,原始技术实现,裸奔XUI GUI框架 » 2021-04-27 22:19:22

XUI记录的是绘图指令,每条指令都有影响的空间区域且记录在指令里,将所有指令重排,计算出影响了到了哪些区域再做脏矩形优化。一个控件由多条绘制指令组合而成,其实所谓的控件仅仅是一个函数,并没有特别的,复合控件,就是多调用了很多其他函数而已。控件的概念本身是弱化了,只不过方便人使用而抽象出来的。从这一点上看,任何奇形怪状的控件都是可以做出来的,不一定是矩形区域,只要能画得出来的都可以。立即UI特别灵活,少量的代码就可以作出复杂的界面,在嵌入式领域还是有优势的,谁都讨厌动不动就上万行的代码。现在xui,23个控件总共才3000多行,其中框架就占了近2000行,也就说说一个控件才需100行代码,我想这是立即UI最大的优势吧。当然耦合性强,这也是他的缺点。

声明式UI肯定是未来的趋势,但这个需要强大的脚本语言配合,纯编译型语言是不可能实现声明式UI的。Jetpack Compose理念最大的变化就是将原来的继承关系变成了顶级函数间的组合关系,摒弃类,而拥抱函数。

再补充一句,声明式UI可以说是进化版的立即UI,就是不用用户维护变量版本的立即UI。为何能做到不要用户维护,那是因为引入了脚本语言,可以动态记录各种状态。

#496 Re: 全志 SOC » 用F1C100S开发了一个项目,原始技术实现,裸奔XUI GUI框架 » 2021-04-26 20:35:50

关于控件和变量天然绑定,这个可以看number控件,这个控件可以绑定一个变量,变量类型有多种,char,int,float,double等都是可以绑定的

static inline int xui_number(struct xui_context_t * ctx, double * value, double low, double high, double step)
static inline int xui_number_float(struct xui_context_t * ctx, float * value, float low, float high, float step)
static inline int xui_number_int(struct xui_context_t * ctx, int * value, int low, int high, int step)
static inline int xui_number_uint(struct xui_context_t * ctx, unsigned int * value, unsigned int low, unsigned int high, unsigned int step)
static inline int xui_number_char(struct xui_context_t * ctx, char * value, char low, char high, char step)
static inline int xui_number_uchar(struct xui_context_t * ctx, unsigned char * value, unsigned char low, unsigned char high, unsigned char 

number控件绑定某个变量后,就会双向控制,滑动鼠标可以改变变量的值,同样,改变变量的值,可以修改控件的显示状态,滑动的范围,步长等参数,都可以在调用控件时传递参数来设置。

if(xui_begin_tree(ctx, "Normal Number"))
			{
				static double n[8] = { 10, 20, 30, 40, 50, 60, 70, 80 };
				xui_layout_row(ctx, 1, (int[]){ -1 }, 0);
				for(int i = 0; i < 8; i++)
				{
					xui_number_ex(ctx, &n[i], -1000, 1000, 1, "%.2f", (i << 8) | XUI_OPT_TEXT_LEFT);
				}
				xui_end_tree(ctx);
			}

这个代码是创建8个double型number控件,从-1000 到1000,步长为1。这样这个double变量,就限制了变化范围,以及变化的步长,可以通过ui来双向控制。

#497 Re: 全志 SOC » 用F1C100S开发了一个项目,原始技术实现,裸奔XUI GUI框架 » 2021-04-26 20:05:11

第一个问题,绝大部分控件的状态是由用户来维护,但某些控件,为了方便使用,xui自动负责维护了,这个需要在实现控件时,跟一般控件有些区别,也就是说,系统可以自动维护状态,比如树形控件的展开和折叠,窗口的显示与关闭,toogle开关的缓动动画过程,这些是控件自动维护的,但checkbox,radiobutton等状态是需要外面的变量来维护的。

第二个问题,通过描述文件生成ui,界面的描述,是没有任何问题的,但你事件响应就无法编程了,没有任何响应的界面,是没有任何意义的。

通过api改变控件的状态,这种是保留模式特有的,这立即模式根本就不需要api来改变控件状态,你直接改变变量的值,ui就跟着变化了。
控件和变量是天然绑定的,控件可以改变变量,同样变量也可以改变控件。

#499 Re: 全志 SOC » 用F1C100S开发了一个项目,原始技术实现,裸奔XUI GUI框架 » 2021-04-26 17:45:15

下面是一个简单的demo代码,一个窗体里创建了3个控件,一个label,独占一行,显示value变量的值,两个button,每个100像素宽,在同一行,其中一个点击后执行加一操作,另一个执行减一操作。看着着代码应该更容易理解怎么编写UI吧。

static void test_window(struct xui_context_t * ctx)
{
	if(xui_begin_window(ctx, "Test Window", NULL))
	{
		static int value = 0;

		xui_layout_row(ctx, 1, (int[]){ -1 }, 0);
		xui_label(ctx, xui_format(ctx, "value = %d", value));

		xui_layout_row(ctx, 2, (int[]){ 100, 100 }, 0);
		if(xui_button(ctx, "add"))
			value++;
		if(xui_button(ctx, "sub"))
			value--;

		xui_end_window(ctx);
	}
}

下面是演示视频

#500 Re: 全志 SOC » 用F1C100S开发了一个项目,原始技术实现,裸奔XUI GUI框架 » 2021-04-26 17:30:59

可以的,可以看那个cmd-overview.c,看里面怎么写的,千万别用保留模式的思维来思考,换一种思维,你会发现,一切都是顺其自然的,纯线性思维。

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn