From f1a09b12e2287d4bef4cd70f5b74539a0173760b Mon Sep 17 00:00:00 2001 From: spacemeowx2 Date: Fri, 4 Dec 2020 23:37:40 +0800 Subject: [PATCH] feat: flash fixed dtb --- blflash/src/chip/bl602/cfg/ro_params.dtb | Bin 0 -> 5671 bytes blflash/src/chip/bl602/mod.rs | 11 ++++++----- blflash/src/elf.rs | 6 ++++++ blflash/src/main.rs | 2 ++ 4 files changed, 14 insertions(+), 5 deletions(-) create mode 100644 blflash/src/chip/bl602/cfg/ro_params.dtb diff --git a/blflash/src/chip/bl602/cfg/ro_params.dtb b/blflash/src/chip/bl602/cfg/ro_params.dtb new file mode 100644 index 0000000000000000000000000000000000000000..1aeeacbe0c9d3cc1f9294ab814cc816cf10f298e GIT binary patch literal 5671 zcmd5=O^h7H6|P=_1Hnclj^c>Oo{kJM2V0)mUF-!SSlfi3gI7Y9Z6qSK`)_tz+cVwn zuG#f+Ku#1Qj6g!-M_iCC#R|4TNE{FxI3Y_A#fOAL@GitwDhLld-eY7byfBJebZN;3h|2_LWmh5HebYe7vQIW+W>ebLhzrf@PS`PQ#WAT zOgu>4Al=iPboU+E?*^G)L`s75E?`5D?o{);O23n*G2}HJW}Qyfr7&fG1fYM~H?*s1 zXFg9d;C#&7I9W5l6SB-n={BiZ>E4KOI$QKt6sK?RKG2*q`VXYBN`y4w;YSkuR`>>t zb3vMP7Zt14IRuhQ69DD6)t|o!=ya5net;U_F@ETm_6+@l_?@JO%I0eMGEVyaG2nrq zCuOx9iZ`6|Es&Y(^irARMO>DkDqZIFxRsYPWQXf|4Db^GZ4we)OQ&4O3h60>UZ-!9 zIugKIQl9jaLfrD6MLz|c@vB;=S$BTWOsxkyTXIVec6PAGja}LyUfWsS*1fL|=`uDG zhZ&t@QYB-2jO$g(%}zI)t-Z~rZc!D>s5N8#@Gjv+^R)FUZr1`{024Py z)G)+Q+gPR6p~?{{eydt5>jSlB`=}g;>-rZ=xK=C|fNuh*IHPze3FEpiSev&1zXbdm zz#41;yoY?exSW}4wFJ@musPM7xgRtAyqR;A%iwy^=I|af&^O=A#gt2!Tn1_@lTKVH z*K5~T$*QQ((N%?+)2NuZ=DL?_4@MTfJd0^nUsX5DuF2NO4(Gat-F>!QWjkN)fVXyT zkYi@eebbZQqIa})yLZG{7yby$fopSdHyUF%M73e^xu^UUz{k)$C-@lplGu2+P5%P~ zw|$eBj(6IQchp*t_w=kdJB!f;d?T(Fn3`|m;^LS%7?(|7!nNQTYko{zd)6D*G1zjo zy@7gJXPk+Px!ZBs^g833S#Mk?;mg(j2I86mQ}az+jLDA6rq>zQzV*g+2EJVFZy>H| zFg4%A#nFz-rdNwg^;lAE3`XB?xj4#@5{2Zx4X1 z=_|k^O;hH7`aYrJD*EFhF?W1op$WYUZGSdk9-_q-7z#zd^yC!8atbI3D%4j)NJIbpV|4(bDVk>j?kz(>2+oOb#HZ=Fxt+E@S(LvLp7mQTgj$IRkUI0s3`bPTHzj z!CSM=MLeHa-=>JoVbPChdrrp>f!22B4(@-*(D=4?{`Ap-qkkx8$x<@py{LH1zKY2y zrB9r(V6B|fD_O57%LHqp9`bRQcg~XU=ViH^>3=$Ezs@-=ORJ7wbrJP&);Onw)RS>3 zy=JpsJNh}>nw*-xd(Yk(txI|4_dZ7MX{1p@=fk1>(g}*lE83W?WFY5UKB&@GI$ZOA zVeSqMl>3ba+NAt{gT6i%$GHkV^lJE7B_~|WeFdEKD7Y1T0`0meC(qVVa%=!w7CBGc z4j%W8?*jCPoF?wv_Q~AEZC||mx5g&-o@EY&Y*lav`0J#{uL zP+w!pThYrU5?k?>vQ&+E7^tzzl{1CEjFR`dvRLs#mJAi~u=`Z0`FS5#TSvYe3BM;Z z$acGND80C={{MquxZs0@^wcy6FN!5Z#0lxARkp-LzFbrk5lL;Y)e02bQ1b&+S5aBJ fUB*&qFJ6=^RmwFd>`Ki^Gp`-OCuA%`?5M8+T2b9M literal 0 HcmV?d00001 diff --git a/blflash/src/chip/bl602/mod.rs b/blflash/src/chip/bl602/mod.rs index be6abcd..2e703f3 100644 --- a/blflash/src/chip/bl602/mod.rs +++ b/blflash/src/chip/bl602/mod.rs @@ -4,6 +4,7 @@ use deku::prelude::*; pub const DEFAULT_PARTITION_CFG: &'static [u8] = include_bytes!("cfg/partition_cfg_2M.toml"); pub const DEFAULT_BOOTHEADER_CFG: &'static [u8] = include_bytes!("cfg/efuse_bootheader_cfg.conf"); +pub const RO_PARAMS: &'static [u8] = include_bytes!("cfg/ro_params.dtb"); pub const BLSP_BOOT2: &'static [u8] = include_bytes!("image/blsp_boot2.bin"); pub const EFLASH_LOADER: &'static [u8] = include_bytes!("image/eflash_loader_40m.bin"); const ROM_START: u32 = 0x23000000; @@ -28,17 +29,17 @@ impl Bl602 { let boot2image = bootheader_cfg.make_image(0x2000, Vec::from(BLSP_BOOT2))?; let fw_image = bootheader_cfg.make_image(0x1000, Vec::from(bin))?; - log::trace!("{}", hex::encode(&boot2image[0..200])); - let _segments = vec![ + let segments = vec![ RomSegment::from_vec(0x0, boot2image), RomSegment::from_vec(0xe000, partition_cfg.clone()), RomSegment::from_vec(0xf000, partition_cfg), - RomSegment::from_vec(0x10000, fw_image.clone()), - // FlashSegment::from_slice(0x1f8000, &d), + RomSegment::from_vec(0x10000, fw_image), + // TODO: generate from dts + RomSegment::from_slice(0x1f8000, RO_PARAMS), ]; - todo!() + Ok(segments) } } diff --git a/blflash/src/elf.rs b/blflash/src/elf.rs index aed5205..4fba5d3 100644 --- a/blflash/src/elf.rs +++ b/blflash/src/elf.rs @@ -96,6 +96,12 @@ impl<'a> RomSegment<'a> { data: Cow::Owned(data), } } + pub fn from_slice(addr: u32, data: &'a [u8]) -> RomSegment<'a> { + RomSegment { + addr, + data: Cow::Borrowed(data), + } + } pub fn from_code_segment(addr: u32, code_segment: CodeSegment<'a>) -> RomSegment<'a> { Self { diff --git a/blflash/src/main.rs b/blflash/src/main.rs index d80f791..9516d29 100644 --- a/blflash/src/main.rs +++ b/blflash/src/main.rs @@ -16,8 +16,10 @@ struct FlashOpt { #[structopt(parse(from_os_str))] image: PathBuf, /// Path to partition_cfg.toml, default to be partition/partition_cfg_2M.toml + #[structopt(parse(from_os_str))] partition_cfg: Option, /// Path to efuse_bootheader_cfg.conf + #[structopt(parse(from_os_str))] boot_header_cfg: Option, /// With boot2 #[structopt(short, long)]