From d0b70ab753ed94d6f98a892d3dd1ef4df8d85da0 Mon Sep 17 00:00:00 2001 From: Wayne Lin Date: Tue, 4 Oct 2022 17:03:09 +0800 Subject: [PATCH] Update NuWriter material. 1. DDR timing setting. 2. README.md 3. Remove unused files. --- .../nuwriter_scripts/README.md | 18 +++-- .../nuwriter_scripts/UnpackImage.py | 15 ++-- .../_nuwriter_nand_generate_header_bin.bat | 2 - .../_nuwriter_nand_generate_pack_bin.bat | 2 - .../ddrimg/enc_ddr2_winbond_128mb.bin | Bin 0 -> 2700 bytes .../ddrimg/enc_ddr3_winbond_256mb.bin | Bin 0 -> 2708 bytes .../nuwriter_scripts/nuwriter.py | 14 ++-- .../nuwriter_leave_ibr_download_and_run.bat | 8 -- .../nuwriter_leave_ibr_sd_pack.bat | 5 -- .../nuwriter_scripts/otp_writer.bin | Bin 0 -> 3392 bytes .../nuwriter_scripts/xusb.bin | Bin 0 -> 139016 bytes .../preload/Makefile.leave_ibr | 69 ------------------ .../numaker-hmi-ma35d1/preload/env_build.bat | 2 - .../numaker-hmi-ma35d1/preload/leave_ibr.ASM | 53 -------------- 14 files changed, 31 insertions(+), 157 deletions(-) delete mode 100644 bsp/nuvoton/numaker-hmi-ma35d1/nuwriter_scripts/_nuwriter_nand_generate_header_bin.bat delete mode 100644 bsp/nuvoton/numaker-hmi-ma35d1/nuwriter_scripts/_nuwriter_nand_generate_pack_bin.bat create mode 100644 bsp/nuvoton/numaker-hmi-ma35d1/nuwriter_scripts/ddrimg/enc_ddr2_winbond_128mb.bin create mode 100644 bsp/nuvoton/numaker-hmi-ma35d1/nuwriter_scripts/ddrimg/enc_ddr3_winbond_256mb.bin delete mode 100644 bsp/nuvoton/numaker-hmi-ma35d1/nuwriter_scripts/nuwriter_leave_ibr_download_and_run.bat delete mode 100644 bsp/nuvoton/numaker-hmi-ma35d1/nuwriter_scripts/nuwriter_leave_ibr_sd_pack.bat create mode 100644 bsp/nuvoton/numaker-hmi-ma35d1/nuwriter_scripts/otp_writer.bin create mode 100644 bsp/nuvoton/numaker-hmi-ma35d1/nuwriter_scripts/xusb.bin delete mode 100644 bsp/nuvoton/numaker-hmi-ma35d1/preload/Makefile.leave_ibr delete mode 100644 bsp/nuvoton/numaker-hmi-ma35d1/preload/leave_ibr.ASM diff --git a/bsp/nuvoton/numaker-hmi-ma35d1/nuwriter_scripts/README.md b/bsp/nuvoton/numaker-hmi-ma35d1/nuwriter_scripts/README.md index 77ed9cf2e6..4ff12603c1 100644 --- a/bsp/nuvoton/numaker-hmi-ma35d1/nuwriter_scripts/README.md +++ b/bsp/nuvoton/numaker-hmi-ma35d1/nuwriter_scripts/README.md @@ -21,16 +21,24 @@ Step 2: Copy MS64\dll\libusb-1.0.dll to C:\Windows\System32. Step 3: Copy MS64\dll\libusb-1.0.lib to C:\Users\\AppData\Local\Programs\Python\\Lib. ``` -## Scripts +## Double-click Scripts for Windows ### nuwriter_ddr_download_and_run.bat -Download rttthread binary file into DDR. The address is 0x80400000. +Download rtthread.bin binary file into DDR. The address is 0x80400000. -### nuwriter_nand_programming.bat +### nuwriter_sd_programming.bat -Program header, DDR timing setting and rttthread binary file into NAND flash. +Program header, DDR timing setting and rtthread.bin binary file into SD card or EMMC. ### nuwriter_spinand_programming.bat -Program header, DDR timing setting and rttthread binary file into SPI NAND flash. +Program header, DDR timing setting and rtthread.bin binary file into SPI NAND flash. + +### nuwriter_nand_programming.bat + +Program header, DDR timing setting and rtthread.bin binary file into NAND flash. + + +### See also +[NuWriter Repository](https://github.com/OpenNuvoton/MA35D1_NuWriter) diff --git a/bsp/nuvoton/numaker-hmi-ma35d1/nuwriter_scripts/UnpackImage.py b/bsp/nuvoton/numaker-hmi-ma35d1/nuwriter_scripts/UnpackImage.py index 29ae007767..113f6fe307 100644 --- a/bsp/nuvoton/numaker-hmi-ma35d1/nuwriter_scripts/UnpackImage.py +++ b/bsp/nuvoton/numaker-hmi-ma35d1/nuwriter_scripts/UnpackImage.py @@ -8,7 +8,7 @@ import crcmod class UnpackImage: - def __init__(self, pack_file_name): + def __init__(self, pack_file_name, nocrc): self.img_list = [] try: with open(pack_file_name, "rb") as pack_file: @@ -21,11 +21,14 @@ class UnpackImage: print(f"{pack_file_name} marker check failed") sys.exit(0) - crc32_func = crcmod.predefined.mkCrcFun('crc-32') - checksum = crc32_func(self.pack_data[8:]) - if checksum != int.from_bytes(self.pack_data[4:8], byteorder='little'): - print(f"{pack_file_name} CRC check failed") - sys.exit(0) + print("Waiting for unpack Images ...") + if nocrc == 0: + print("check pack file crc32 ...") + crc32_func = crcmod.predefined.mkCrcFun('crc-32') + checksum = crc32_func(self.pack_data[8:]) + if checksum != int.from_bytes(self.pack_data[4:8], byteorder='little'): + print(f"{pack_file_name} CRC check failed") + sys.exit(0) self.image_cnt = int.from_bytes(self.pack_data[8:12], byteorder='little') # 1st image descriptor begins @ 0x10 index = 0x10 diff --git a/bsp/nuvoton/numaker-hmi-ma35d1/nuwriter_scripts/_nuwriter_nand_generate_header_bin.bat b/bsp/nuvoton/numaker-hmi-ma35d1/nuwriter_scripts/_nuwriter_nand_generate_header_bin.bat deleted file mode 100644 index 90242c39c5..0000000000 --- a/bsp/nuvoton/numaker-hmi-ma35d1/nuwriter_scripts/_nuwriter_nand_generate_header_bin.bat +++ /dev/null @@ -1,2 +0,0 @@ -py -3 nuwriter.py -c header-nand.json -pause diff --git a/bsp/nuvoton/numaker-hmi-ma35d1/nuwriter_scripts/_nuwriter_nand_generate_pack_bin.bat b/bsp/nuvoton/numaker-hmi-ma35d1/nuwriter_scripts/_nuwriter_nand_generate_pack_bin.bat deleted file mode 100644 index 80110b5deb..0000000000 --- a/bsp/nuvoton/numaker-hmi-ma35d1/nuwriter_scripts/_nuwriter_nand_generate_pack_bin.bat +++ /dev/null @@ -1,2 +0,0 @@ -py -3 nuwriter.py -p pack-nand.json -pause \ No newline at end of file diff --git a/bsp/nuvoton/numaker-hmi-ma35d1/nuwriter_scripts/ddrimg/enc_ddr2_winbond_128mb.bin b/bsp/nuvoton/numaker-hmi-ma35d1/nuwriter_scripts/ddrimg/enc_ddr2_winbond_128mb.bin new file mode 100644 index 0000000000000000000000000000000000000000..3ac079800b24ccab6c5b0f31df8c56fc606d8140 GIT binary patch literal 2700 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 GtTRz=_DSdf literal 0 HcmV?d00001 diff --git a/bsp/nuvoton/numaker-hmi-ma35d1/nuwriter_scripts/ddrimg/enc_ddr3_winbond_256mb.bin b/bsp/nuvoton/numaker-hmi-ma35d1/nuwriter_scripts/ddrimg/enc_ddr3_winbond_256mb.bin new file mode 100644 index 0000000000000000000000000000000000000000..6f64bd68ffeb2ec680a1cae5c58d98070926958b GIT binary patch literal 2708 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 None: print("Device not found") sys.exit(2) - pack_image = UnpackImage(pack_file_name) + pack_image = UnpackImage(pack_file_name, option) with ThreadPoolExecutor(max_workers=8) as executor: futures = [executor.submit(__pack_program, dev, media, pack_image, option) for dev in devices] success = 0 @@ -1179,10 +1180,10 @@ def do_attach(ini_file_name, option=OPT_NONE) -> None: print(f"Successfully get info from {success} device(s)") -def do_unpack(pack_file_name) -> None: +def do_unpack(pack_file_name, nocrc32) -> None: now = datetime.now() - pack_image = UnpackImage(pack_file_name) + pack_image = UnpackImage(pack_file_name, nocrc32) image_cnt = pack_image.img_count() try: @@ -1681,7 +1682,8 @@ def get_option(option) -> int: 'STUFF': OPT_STUFF, 'SETINFO': OPT_SETINFO, 'CONCAT': OPT_CONCAT, - 'SHOWHDR': OPT_SHOWHDR + 'SHOWHDR': OPT_SHOWHDR, + 'NOCRC': OPT_NOCRC }.get(option, OPT_UNKNOWN) @@ -1772,7 +1774,9 @@ def main(): sys.exit(0) else: if option == OPT_UNPACK: - do_unpack(cfg_file) + do_unpack(cfg_file, 0) + elif option == OPT_NOCRC: + do_unpack(cfg_file, 1) elif option == OPT_STUFF: do_stuff(cfg_file) else: diff --git a/bsp/nuvoton/numaker-hmi-ma35d1/nuwriter_scripts/nuwriter_leave_ibr_download_and_run.bat b/bsp/nuvoton/numaker-hmi-ma35d1/nuwriter_scripts/nuwriter_leave_ibr_download_and_run.bat deleted file mode 100644 index f60706d163..0000000000 --- a/bsp/nuvoton/numaker-hmi-ma35d1/nuwriter_scripts/nuwriter_leave_ibr_download_and_run.bat +++ /dev/null @@ -1,8 +0,0 @@ -:forever_develop -py -3 nuwriter.py -a ddrimg\enc_ddr3_winbond_256mb.bin -IF %ERRORLEVEL% EQU 0 ( - py -3 nuwriter.py -o execute -w ddr 0x28000000 ..\preload\leave_ibr.bin -) -pause - -goto :forever_develop \ No newline at end of file diff --git a/bsp/nuvoton/numaker-hmi-ma35d1/nuwriter_scripts/nuwriter_leave_ibr_sd_pack.bat b/bsp/nuvoton/numaker-hmi-ma35d1/nuwriter_scripts/nuwriter_leave_ibr_sd_pack.bat deleted file mode 100644 index c1deb2296f..0000000000 --- a/bsp/nuvoton/numaker-hmi-ma35d1/nuwriter_scripts/nuwriter_leave_ibr_sd_pack.bat +++ /dev/null @@ -1,5 +0,0 @@ -py -3 nuwriter.py -c header-sram-leave_ibr.json -IF %ERRORLEVEL% EQU 0 ( - py -3 nuwriter.py -p pack-sd-leave_ibr.json -o stuff -) -pause \ No newline at end of file diff --git a/bsp/nuvoton/numaker-hmi-ma35d1/nuwriter_scripts/otp_writer.bin b/bsp/nuvoton/numaker-hmi-ma35d1/nuwriter_scripts/otp_writer.bin new file mode 100644 index 0000000000000000000000000000000000000000..2aa82e32b947ff6636379efab50be91db0cbe63c GIT binary patch literal 3392 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%0A474!igebD85l~)@@4{Ru& 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 E0JRgNQ2+n{ literal 0 HcmV?d00001 diff --git a/bsp/nuvoton/numaker-hmi-ma35d1/preload/Makefile.leave_ibr b/bsp/nuvoton/numaker-hmi-ma35d1/preload/Makefile.leave_ibr deleted file mode 100644 index d0e949ca1c..0000000000 --- a/bsp/nuvoton/numaker-hmi-ma35d1/preload/Makefile.leave_ibr +++ /dev/null @@ -1,69 +0,0 @@ -TARGET ?= leave_ibr - -################################# -# GNU ARM Embedded Toolchain -################################# -CC=aarch64-elf-gcc -CXX=aarch64-elf-g++ -LD=aarch64-elf-ld -AR=aarch64-elf-ar -AS=aarch64-elf-as -CP=aarch64-elf-objcopy -OD=aarch64-elf-objdump -NM=aarch64-elf-nm -SIZE=aarch64-elf-size -A2L=aarch64-elf-addr2line - -################################# -# Working directories -################################# -ROOT = . - -################################# -# Source Files -################################# - -# Search path and source files for the ST stdperiph library - -ASMSOURCES = $(notdir $(wildcard *.ASM)) - -INCLUDE_DIRS = -I$(ROOT) - -################################# -# Object List -################################# -OBJECTS= - -################################# -# Target Output Files -################################# -TARGET_O=$(TARGET).o -TARGET_ASM=$(TARGET).asm - -################################# -# Flags -################################# -MCFLAGS=-march=armv8-a -OPTIMIZE = -O2 -AFLAGS=-c $(MCFLAGS) -x assembler-with-cpp -D__ASSEMBLY__ -LDSCRIPT= -LDFLAGS = -nostartfiles -Wl,--gc-sections,-cref,-Map=$(TARGET).map,-cref,-u,_start -T $(TARGET).ld - -################################# -# Build -################################# -all: clean $(TARGET_O) - -$(TARGET_O): - @echo -n "Build $@ ..." - $(CC) -c $(INCLUDE_DIRS) $(AFLAGS) $(ASMSOURCES) $(LDFLAGS) - $(OD) -d $@ > $(TARGET).txt - $(CP) -O binary $(TARGET_O) ../nuwriter_scripts/$(TARGET).bin - -################################# -# Recipes -################################# -.PHONY: all clean - -clean: - rm -f $(TARGET_O) \ No newline at end of file diff --git a/bsp/nuvoton/numaker-hmi-ma35d1/preload/env_build.bat b/bsp/nuvoton/numaker-hmi-ma35d1/preload/env_build.bat index ad8f1ad7b9..57136e7b8e 100644 --- a/bsp/nuvoton/numaker-hmi-ma35d1/preload/env_build.bat +++ b/bsp/nuvoton/numaker-hmi-ma35d1/preload/env_build.bat @@ -5,5 +5,3 @@ make python transcode.py - -make -f Makefile.leave_ibr diff --git a/bsp/nuvoton/numaker-hmi-ma35d1/preload/leave_ibr.ASM b/bsp/nuvoton/numaker-hmi-ma35d1/preload/leave_ibr.ASM deleted file mode 100644 index 91571076a7..0000000000 --- a/bsp/nuvoton/numaker-hmi-ma35d1/preload/leave_ibr.ASM +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 2006-2020, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Date Author Notes - * 2021-06-29 Wayne the first version - * - * Description: Load the routine into SRAM0 0x28000000 - * - */ - -.section ".text.boot" -.global _start - -_start: - /* Give execution address for secondary CPU */ - adr x20, . - - /*=============================================================*/ - /* Read CPU id */ - /* Primary core(id=0): Help Secondary core leaving. */ - /* Secondary core(id>0): Notice 'Ready' to Primary core. */ - /*=============================================================*/ - /* MPIDR_EL1: Multi-Processor Affinity Register */ - mrs x1, mpidr_el1 - and x1, x1, #3 - cbz x1, .L__cpu_0_loop - -.L__cpu_1_loop: - /*=============================================================*/ - /* Secondary CPU notification */ - /*=============================================================*/ - wfe /* Wait for Primary CPU's notification */ - - mov x0, #0x48 /* if (*(0x40460048)==PC) */ - movk x0, #0x4046, LSL #16 /* goto L__cpu_1_loop */ - ldr x1, [x0] /* else */ - cmp x1, x20 /* goto *(0x40460048) */ - b.eq .L__cpu_1_loop - br x1 - -.L__cpu_0_loop: - /*=============================================================*/ - /* Help CPU-1 to leave IBR. */ - /*=============================================================*/ - mov x0, #0x48 /* *(0x40460048) = _start */ - movk x0, #0x4046, LSL #16 - mov x1, x20 - str w1, [x0] - sev /* Wakeup Secondary CPU */ - b .L__cpu_0_loop -