Files
Gen4_R-Car_Trace32/2_Trunk/demo/arm/flash/stm32f407-emmc.cmm
2025-10-14 09:52:32 +09:00

99 lines
3.0 KiB
Plaintext

; --------------------------------------------------------------------------------
; @Title: eMMC FLASH Programming script for STM32F407IG
; @Description:
; eMMC FLASH(Numonyx, NAND16GXH) is connected
;
; Internal SRAM: 0x20000000
;
; SD/MMC Controller Register : 0x40012C00
;
; @Author: jjeong
; @Chip: STM32F407IG
; @Keywords: Numonyx NAND16GXH eMMC
; @Copyright: (C) 1989-2022 Lauterbach GmbH, licensed for use with TRACE32(R) only
; --------------------------------------------------------------------------------
; $Id: stm32f407-emmc.cmm 12049 2023-04-20 12:32:16Z bschroefel $
LOCAL &arg1
ENTRY &arg1
&arg1=STRing.UPpeR("&arg1") // for example "PREPAREONLY"
SYStem.CPU STM32F407IG
SYStem.CONFIG DEBUGPORTTYPE SWD
SYStem.Up
GOSUB board_init
//clk enable for GPIO & SDIO
PER.Set.simple SD:0x40023844 %Long 0x800
PER.Set.simple SD:0x40023864 %Long 0x75f33
//SDIO pin configuration
PER.Set.simple SD:0x40023830 %Long 0x4001CC ;gpio_c
PER.Set.simple SD:0x40020800 %Long 0x2aa4000
PER.Set.simple SD:0x40020808 %Long 0x1558000
PER.Set.simple SD:0x4002080C %Long 0x554000
PER.Set.simple SD:0x40020824 %Long 0xCCCCC ;sdio_clk, sdio_d0
PER.Set.simple SD:0x40020C00 %Long 0x20 ;gpio_d
PER.Set.simple SD:0x40020C08 %Long 0x10
PER.Set.simple SD:0x40020C0C %Long 0x10
PER.Set.simple SD:0x40020C20 %Long 0xc00 ;sido_cmd
//SDIO controller configuration
PER.Set.simple SD:0x40012C00 %Long 0x3 ;power on
PER.Set.simple SD:0x40012C24 %Long 0xFFFFFFFF
PER.Set.simple SD:0x40012C28 %Long 0x200
PER.Set.simple SD:0x40012C2C %Long 0x0
PER.Set.simple SD:0x40012C04 %Long 0x176 ;clk 400Khz
Break.RESet
FLASHFILE.RESet
FLASHFILE.CONFIG 0x40012C00 0x0 0x0 0x0
// FLASHFILE.TARGET <<code range>> <<data range>> <<algorithm file>>
FLASHFILE.TARGET 0x20000000++0x1fff 0x20004000++0x1fff ~~/demo/arm/flash/byte/emmc_stm32.bin /KEEP ;for mmc
; FLASHFILE.TARGET 0x20000000++0x1fff 0x20004000++0x1fff ~~/demo/arm/flash/byte/emmcsd_stm32.bin /keep ;for sd
PER.Set.simple SD:0x40012C04 %Long 0x176 ; clk 400Khz
FLASHFILE.GETID
PER.Set.simple SD:0x40012C04 %Long 0x100 ; change clk to 20Mhz
FLASHFILE.DUMP 0x0
//Read mmc Extended CSD registers
; FLASHFILE.getextcsd
//End of the test prepareonly
IF "&arg1"=="PREPAREONLY"
ENDDO
//Erase & Write & Verify
; FLASHFILE.ERASE 0x0--0xFFFFFF
; FLASHFILE.LOAD * 0x0
; FLASHFILE.LOAD * 0x0 /ComPare
ENDDO
board_init:
//Configure PLL
PER.Set.simple SD:0x40023800 %LE %Long 0x9383
PER.Set.simple SD:0x40023808 %LE %Long 0x0
PER.Set.simple SD:0x40023800 %LE %Long 0x9383
PER.Set.simple SD:0x40023804 %LE %Long 0x24003010
PER.Set.simple SD:0x40023800 %LE %Long 0x9383
PER.Set.simple SD:0x40023808 %LE %Long 0x8000
PER.Set.simple SD:0x40023808 %LE %Long 0x9400
PER.Set.simple SD:0x40023804 %LE %Long 0x5403c19
PER.Set.simple SD:0x40023800 %LE %Long 0x01039383
PER.Set.simple SD:0x40023808 %LE %Long 0x940A
PER.Set.simple SD:0xE000ED08 %LE %Long 0x08000000 ; Vector table on the flash based
PER.Set.simple SD:0xE000ED0C %Long 0xfa050600
PER.Set.simple SD:0xE000E104 %Long 0x20000
RETURN