Where did you get preloader? Does it contain uboot/atf or is this part of all-in-one-image?
which system is the all-in-one?
Can we also flash it from running linux-system?
Where did you get preloader? Does it contain uboot/atf or is this part of all-in-one-image?
which system is the all-in-one?
Can we also flash it from running linux-system?
All-in-on single image includes GPT, atf, u-boot, and linux kernel image, so you can replace the kernel image with root filesystem in initial ramfs if you do not enable eMMC driver. I am not quite familiar with eMMC.
Ok there is no linux-distribution,only initramfs like buildroot/busybox?
Have you build the image (with steps) or an official image?
I don’t want to speak against your work,i only want to know what the image is/what it does
which uboot/kernel is used with which support (rtl8367/mt7531)?
and most important: how did you build the image (source atf, where to put atf, where uboot, partitions?)
the only source i had was this: https://github.com/BPI-SINOVOIP/BPI-R64-BSP/blob/5738a31e6393d11ef4a771341e00149b7cd4ee30/scripts/bootloader.sh#L30
and i hung on the preloader (sd-card-preloader was not working in my tests), so good that you have now a emmc preloader
do you use the same atf?
tried now writing the emmc-preloader to boot0-block…looks good so far:
F0: 102B 0000
F5: 480A 0031
F5: 480A 0031
F3: 0000 0000
V0: 0000 0000 [0001]
00: 0000 0000
BP: 0000 0041 [0000]
G0: 0190 0000
T0: 0000 0395 [000F]
Jump to BL
UNIVPLL_CON0 = 0xFE000000!!!
mt_pll_init: Set pll frequency for 25M crystal
[PMIC_WRAP]wrap_init pass,the return value=0.
[pmic_init] Preloader Start..................
[pmic_init] MT6380 CHIP Code, reg_val = 0, 1:E2 0:E3
[pmic_init] Done...................
Chip part number:7622A
MT7622 Version: 1.2.7, (iPA)
SSC OFF
mt_pll_post_init: mt_get_cpu_freq = 1350000Khz
mt_pll_post_init: mt_get_mem_freq = 1600000Khz
mt_pll_post_init: mt_get_bus_freq = 1119920Khz
[PLFM] Init I2C: OK(0)
[BLDR] Build Time: 20180622-162441
==== Dump RGU Reg ========
RGU MODE: 4D
RGU LENGTH: FFE0
RGU STA: 0
RGU INTERVAL: FFF
RGU SWSYSRST: 8000
==== Dump RGU Reg End ====
RGU: g_rgu_satus:0
mtk_wdt_mode_config mode value=10, tmp:22000010
PL P ON
WDT does not trigger reboot
WDT NONRST=0x20000000
WDT IRQ_EN=0x340003
RGU mtk_wdt_init:MTK_WDT_DEBUG_CTL(590200F3)
[EMI] MDL number = 2
[EMI] DRAMC calibration start
[EMI] DRAMC calibration end
[EMI]rank0 size: 0x40000000
[MEM] complex R/W mem test pass
RAM_CONSOLE wdt status (0x0)=0x0
[mmc_init]: msdc0 start mmc_init_host() in PL...
[msdc_init]: msdc0 Host controller intialization start
[SD0] Pins mode(1), none(0), down(1), up(2), keep(3)
[SD0] Pins mode(2), none(0), down(1), up(2), keep(3)
[info][msdc_set_startbit 1127] read data start bit at rising edge
[info][msdc_config_clksrc] input clock is 400000kHz
[SD0] Bus Width: 1
[info][msdc_config_clksrc] input clock is 400000kHz
[info][msdc_set_startbit 1127] read data start bit at rising edge
[SD0] SET_CLK(260kHz): SCLK(259kHz) MODE(0) DDR(0) DIV(385) DS(0) RS(0)
[msdc_init]: msdc0 Host controller intialization done
[mmc_init]: msdc0 start mmc_init_card() in PL...
[mmc_init_card]: start
[info][msdc_config_clksrc] input clock is 400000kHz
[info][msdc_set_startbit 1127] read data start bit at rising edge
[SD0] SET_CLK(260kHz): SCLK(259kHz) MODE(0) DDR(0) DIV(385) DS(0) RS(0)
[SD0] Bus Width: 8
[SD0] Switch to High-Speed mode!
[info][msdc_config_clksrc] input clock is 400000kHz
[info][msdc_set_startbit 1127] read data start bit at rising edge
[SD0] SET_CLK(260kHz): SCLK(259kHz) MODE(2) DDR(1) DIV(192) DS(0) RS(0)
[SD0] Bus Width: 8
[SD0] Size: 7456 MB, Max.Speed: 52000 kHz, blklen(512), nblks(15269888), ro(0)
[mmc_init_mem_card 3140][SD0] Initialized, eMMC50
before host->cur_bus_clk(259740)
[info][msdc_config_clksrc] input clock is 400000kHz
[info][msdc_set_startbit 1127] read data start bit at rising edge
[SD0] SET_CLK(52000kHz): SCLK(50000kHz) MODE(2) DDR(1) DIV(1) DS(0) RS(0)
host->cur_bus_clk(50000000)
[mmc_init_card]: finish successfully
[PLFM] Init Boot Device: OK(0)
[GPT_PL]Parsing Primary GPT now...
[GPT_PL]check header, err(signature 0x0000000000000000!=0x5452415020494645)
[GPT_PL]Parsing Secondary GPT now...
[GPT_PL]check header, err(signature 0x0000000000000000!=0x5452415020494645)
[GPT_PL]Failure to find valid GPT.
[PART] blksz: 512B
Device APC domain init setup:
Domain Setup (0x0)
Domain Setup (0x0)
Device APC domain after setup:
Domain Setup (0x0)
Domain Setup (0x0)
[BLDR] lk partition not found
load lk (ret=-1)
[BLDR] Second Bootloader Load Failed
PL fatal error...
have written uboot and atf to same positions as for sdcard…this seems wrong…where have you put these in your image?
made simple byte-analysis…looks like you have also uboot at 0xC0000 and atf at 0x80000
maybe they are different??
you image boots up using these steps from running system:
root@bpi-r64:/boot# echo 0 > /sys/block/mmcblk1boot0/force_ro
root@bpi-r64:/boot# dd of=/dev/mmcblk1boot0 bs=1024 seek=0 if=r64_preloader_emmc.bin
root@bpi-r64:/boot# dd of=/dev/mmcblk1 if=r64_emmc_singleimage.img
it seems it is build for newer r64 (mt7531) because old ethernet-switch-chip is not recognized…
[ 2.321133] mt753x gsw@0: No mt753x switch found
[ 2.325776] mt753x: probe of gsw@0 failed with error -22
for others as info, it is lede 17.01 with kernel 4.4.177
I also tried losetup to load image and readout gpt,but this failed is it needed? Maybe i missed gpt…messages in log suggesting this
Does uboot need special options (like efi)?
The images support public bpi-r64 with 7531 switch. I cannot get a CB bpi-r64.
None of images are built by me. My goal is mixing them all to help coming users to play with its network easily, so I only touch required topics roughly. Thank you for sharing the detail information of images.
The partition is the same as sd card without preloader. If you only want to get eMMC binaries mentioned in above thread, you have gotten them all.
I try to understand,what needs to be done getting my image work with emmc but i don’t get to uboot…i guess partitioning is not needed till uboot (only after to load kernel from it) or am i wrong?
Where did you get the image?
Also wondered why i can’t load image with losetup/partprobe…
Build and Run OpenWRT(kernel 4.19.x) on bpi-r64
Step 0: Get OpenWRT source code
Step 1: Update/Install feeds
Step 2: Modify mediatek platform kernel to v4.19.x
Step 3: Select bpi64 as target board
make menuconfig
select :
Target System (MediaTek Ralink ARM) —>
Subtarget (MT7622) —>
Target Profile (Banana Pi R64) —>
Step 4: Enable mt7615e module(optional)
Step 5: Enable bpi64 BT function(optional)
Step 6: Build bpi64 image
Step 7: Upload image from uBoot by TFTP
make sure your PC’s ethernet was connected to bpi64 and Tftp server was running on PC.
PC connect bpi64 console by UART and enter uBoot menu , select :
–> (2). System Load Linux Kernel then write to Flash via TFTP.
image will be upgraded and auto bootup
Enjoy BPI-R64 with eMMC on board
At this moment, only mt7615 has mac80211 upstream driver (mt7622 built-in 4x4n open source driver is not ready), so we can buy two mt7615 m2 card from AsiaRF website and use m2-to-pcie adapter card to have pure ac2600 open source router solution.
2.4G
5G
Imho newer r64 (v1+) do not have the build-in mt7615
yes, we need to plug two mt7615 cards into pcie slots before mt7622 built-in 4x4n mac80211 wifi driver is ready.
Can ypu ppint me to the script which bootheader is written to which offset?
Remeber to burn preloader to boot0-block, or os this done by the tftp-command?
I have removed them from my uboot to make room for own menuentries
How to build BPI-R64 uboot image.
(MT7622) Chip ID (ASIC) Chip Type (eMMC) Flash Type (GMAC1) Use GE1 or GE2 (GE_SGMII_FORCE_2500) GE1 connected to (MT7531) Switch connected to
make
burn u-boot-mtk.bin into EMMC via option 4 in uboot menu.
*** U-Boot EMMC ***
1. System Load Linux to SDRAM via TFTP.
2. System Load Linux Kernel then write to Flash via TFTP.
3. Boot system code via Flash.
4. ***System Load U-Boot then write to Flash via TFTP.*****
5. System Load U-Boot then write to Flash via Serial.
6. System Load ATF then write to Flash via TFTP.
7. System Load Preloader then write to Flash via TFTP.
8. System Load ROM header then write to Flash via TFTP.
9. System Load CTP then write to Flash via TFTP.
a. System Load CTP then Boot to CTP (via Flash).
b. System Load flashimage then write to Flash via TFTP.
c. System Load partition table then write to Flash via TFTP.
U-Boot console
Can you please make a storage graphic like we got from gary for r2 to see which part needs to be on which position for sd and emmc?
Tried to get debian running on r64 emmc using this new preloader and official uboot and atf,but uboot does not come up…something is missing. Is gpt needed before uboot? Can’t extract it from image above
you can type ‘printenv in uboot console’ to know the flash offset.
for example: how to burn kernel image
boot1=download_setting kernel;tftpboot ${loadaddr} ${kernel_filename};run boot_wr_img;run boot_rd_img;bootm
boot_wr_img=filesize_check 0x1E00000;if test ${filesize_result} = good; then image_blks 512 ${filesize};mmc device 0;mmc write ${loadaddr} 0x1000 0x18000;fi
boot_rd_img=mmc device 0;mmc read ${loadaddr} 0x1000 1;image_blks 512;mmc read ${loadaddr} 0x1000 ${img_blks}
Why is kernel flashed here and not just loaded from mmc-partition? I had successful flashed above image from linux userspace (preloader to boot0 and img to mmcblkx). I also have atf and uboot-position which seems to be the same as for sd…but something i miss
i don’t have this menuentry (“GE1 connected to” is the last one)…also see no mt7531-driver in uboot-mt/drivers/net
the 4.19-repo seems to have the mt7531-driver, but there also the menuentry is missing.
i have additional “DDR Component”
│ │ (MT7622) Chip ID │ │
│ │ (ASIC) Chip Type │ │
│ │ (eMMC) Flash Type │ │
│ │ (1024Mb) DDR Component │ │
│ │ (GMAC1) Use GE1 or GE2 │ │
│ │ (GE_SGMII_FORCE_2500) GE1 connected to │ │
│ │ --- │ │
│ │ Load an Alternate Configuration File │ │
│ │ Save Configuration to an Alternate File
as far as i see mt7531 is linked in makefile but not in any kconfig…also searching in menuconfig is disabled (i cannot search with / like in Linux-Kernel-menuconfig). maybe it’s because uboot-version is 2014-04…i guess kconfig-support is added later. also the string “switch connected to” is not in config.in (which seems to be the source for the menuconfig). Interesting detail in config.in:
if [ "$CONFIG_GE1_SGMII_FORCE_2500" = "y" ]; then
define_bool CONFIG_RTL8367 y
fi
so here old switch is always used if selecting sgmii for ge1, i tried to add a coice for switch:
choice 'switch' "RTL8367s CONFIG_RTL8367 \
MT7631 CONFIG_MT7631
" RTL8367s
but compile failes on missing arm-linux-gcc
/bin/sh: 1: /opt/buildroot-gcc492_arm/usr/bin/arm-linux-gcc: not found
makefile ignores CROSS_COMPILE environment variable and set it directly
ifeq ($(MT7622), y)
CROSS_COMPILE_PATH = /opt/buildroot-gcc492_arm/usr/bin
CROSS_COMPILE = $(CROSS_COMPILE_PATH)/arm-linux-
endif
have fixed it locally, but hanging now on wrong “-march”, build.sh on top dir compiles till multiple definition of __raw_read* __raw_write* (also without my modifications to Makefile) and setting new chip per default
hi [frank-w,
please use https://github.com/BPI-SINOVOIP/BPI-R64-bsp-4.19.git for R64 mt7531 BSP.
use “./build.sh” to compile the uboot and kernel. you need install the toolchain /opt/buildroot-gcc492_arm/usr/bin/arm-linux-gcc
uboot MT7531 driver is already enabled. include/configs/autoconf.h #define CONFIG_MT7531 1
kernel’s MT7531 driver is already enabled by default kernel configuration file. you need only compile them by “build.sh” script .
I have linaro (ubuntu default crosscompiler) installed…why should i install another? Old r64-bsp was compilable with linaro-crosscompiler
it seems that adding the above choice to config.in
choice 'switch' "RTL8367s CONFIG_RTL8367 \
MT7531 CONFIG_MT7531
" RTL8367s
configuring via make menuconfig (needs to be entered twice because on first start i see only SOC + ASIC, after saving first time and starting again i see the other options). then building via build.sh from top-dir with gcc6 compiles fine
for anyone interested, i forked official r64-4.19-repo and did some changes to uboot
@frank-w let me say, your copious and diligent efforts on the R64 and R2 have made ramping up far simpler then was to be expected.
1st - the process above for openwrt works without issue - my issue arises as soon as i attempt to use the ubuntu or debiam images.
I’m having what will likely be refered to as simple on your behalf, but I can not get my R64 to boot from eMMC for love nor money.
/dev/mmcblk0boot0 was all built from your 4.19 repo and I’ve tried the preloader_emmc.bin that’s floating around, the two that say for sd card, writing with and without headers, writing to offset 0 and 2k - I’ve got no idea what the issue is at the moment as its saying it can’t load LK, which i assume would be in ATF (Little Kernel) from the trust zone, but i really just have no idea at the moment?
I assume i just have the wrong preloader??
error below
[get_part] part->nr_sects=1, part->info->name=
[get_part] part->nr_sects=1, part->info->name=
[get_part] part->nr_sects=1, part->info->name=
[get_part] part->nr_sects=1, part->info->name=
[get_part] part->nr_sects=1, part->info->name=
[get_part] part->nr_sects=1414483778, part->info->name=
[BLDR] lk partition not found
load lk (ret=-1)
[BLDR] Second Bootloader Load Failed
PL fatal error...
F0: 102B 0000
F5: 0000 0000
V0: 0000 0000 [0001]
00: 0000 0000
BP: 0000 0041 [0000]
G0: 0190 0000
T0: 0000 03AE [000F]
Jump to BL
i also have not got debian working on emmc so far…it’s a similar problem i faced above
I think we need some vendor-info why it does not work