convert hardware loadAddress to int

This commit is contained in:
Daniel Barlow 2023-11-12 18:47:31 +00:00
parent 185117843b
commit 315907de98
10 changed files with 14 additions and 14 deletions

View file

@ -180,7 +180,7 @@
# We put it at the 32MB mark so that tftpboot can put its rootfs # We put it at the 32MB mark so that tftpboot can put its rootfs
# image and DTB underneath, but maybe this is a terrible waste of # image and DTB underneath, but maybe this is a terrible waste of
# RAM unless the kernel is able to reuse it later. Oh well # RAM unless the kernel is able to reuse it later. Oh well
loadAddress = "0x42000000"; loadAddress = lim.parseInt "0x42000000";
entryPoint = "0x42000000"; entryPoint = "0x42000000";
rootDevice = "ubi0:liminix"; rootDevice = "ubi0:liminix";
dts = { dts = {

View file

@ -103,7 +103,7 @@
}; };
hardware = { hardware = {
defaultOutput = "flashimage"; defaultOutput = "flashimage";
loadAddress = "0x80060000"; loadAddress = lim.parseInt "0x80060000";
entryPoint = "0x80060000"; entryPoint = "0x80060000";
flash = { flash = {
address = "0x9F060000"; address = "0x9F060000";

View file

@ -55,7 +55,7 @@
imports = [ ../../modules/arch/mipsel.nix ]; imports = [ ../../modules/arch/mipsel.nix ];
hardware = { hardware = {
defaultOutput = "flashimage"; defaultOutput = "flashimage";
loadAddress = "0x80000000"; loadAddress = lim.parseInt "0x80000000";
entryPoint = "0x80000000"; entryPoint = "0x80000000";
# Creating 5 MTD partitions on "spi0.0": # Creating 5 MTD partitions on "spi0.0":

View file

@ -62,7 +62,7 @@
}; };
hardware = { hardware = {
defaultOutput = "flashimage"; defaultOutput = "flashimage";
loadAddress = "0x80000000"; loadAddress = lim.parseInt "0x80000000";
entryPoint = "0x80000000"; entryPoint = "0x80000000";
flash = { flash = {

View file

@ -65,7 +65,7 @@
}; };
in { in {
defaultOutput = "vmroot"; defaultOutput = "vmroot";
loadAddress = "0x0"; loadAddress = lim.parseInt "0x0";
entryPoint = "0x0"; entryPoint = "0x0";
rootDevice = "/dev/mtdblock0"; rootDevice = "/dev/mtdblock0";

View file

@ -67,7 +67,7 @@
}; };
in { in {
defaultOutput = "vmroot"; defaultOutput = "vmroot";
loadAddress = "0x00010000"; loadAddress = lim.parseInt "0x00010000";
entryPoint = "0x00010000"; entryPoint = "0x00010000";
rootDevice = "/dev/mtdblock0"; rootDevice = "/dev/mtdblock0";

View file

@ -59,7 +59,7 @@ in {
type = types.str; type = types.str;
}; };
}; };
loadAddress = mkOption { default = null; }; loadAddress = mkOption { type = types.ints.unsigned; default = null; };
entryPoint = mkOption { }; entryPoint = mkOption { };
radios = mkOption { radios = mkOption {
description = '' description = ''

View file

@ -10,7 +10,7 @@ let
instructions = pkgs.writeText "env.scr" '' instructions = pkgs.writeText "env.scr" ''
setenv serverip ${cfg.serverip} setenv serverip ${cfg.serverip}
setenv ipaddr ${cfg.ipaddr} setenv ipaddr ${cfg.ipaddr}
setenv loadaddr ${cfg.loadAddress} setenv loadaddr ${lib.toHexString cfg.loadAddress}
''; '';
in { in {
options.system.outputs = { options.system.outputs = {

View file

@ -70,13 +70,13 @@ in {
in in
pkgs.buildPackages.runCommand "boot-scr" { nativeBuildInputs = [ pkgs.pkgsBuildBuild.dtc ]; } '' pkgs.buildPackages.runCommand "boot-scr" { nativeBuildInputs = [ pkgs.pkgsBuildBuild.dtc ]; } ''
uimageSize=$(($(stat -L -c %s ${o.uimage}) + 0x1000 &(~0xfff))) uimageSize=$(($(stat -L -c %s ${o.uimage}) + 0x1000 &(~0xfff)))
rootfsStart=0x$(printf %x $((${cfg.loadAddress} + 0x100000 + $uimageSize &(~0xfffff) ))) rootfsStart=0x$(printf %x $((${toString cfg.loadAddress} + 0x100000 + $uimageSize &(~0xfffff) )))
rootfsBytes=$(($(stat -L -c %s ${o.rootfs}) + 0x100000 &(~0xfffff))) rootfsBytes=$(($(stat -L -c %s ${o.rootfs}) + 0x100000 &(~0xfffff)))
rootfsBytes=$(($rootfsBytes + ${toString cfg.freeSpaceBytes} )) rootfsBytes=$(($rootfsBytes + ${toString cfg.freeSpaceBytes} ))
rootfsMb=$(($rootfsBytes >> 20)) rootfsMb=$(($rootfsBytes >> 20))
cmd="mtdparts=phram0:''${rootfsMb}M(rootfs) phram.phram=phram0,''${rootfsStart},''${rootfsBytes},${config.hardware.flash.eraseBlockSize} root=/dev/mtdblock0"; cmd="mtdparts=phram0:''${rootfsMb}M(rootfs) phram.phram=phram0,''${rootfsStart},''${rootfsBytes},${config.hardware.flash.eraseBlockSize} root=/dev/mtdblock0";
dtbStart=$(printf %x $((${cfg.loadAddress} + $rootfsBytes + 0x100000 + $uimageSize ))) dtbStart=$(printf %x $((${toString cfg.loadAddress} + $rootfsBytes + 0x100000 + $uimageSize )))
mkdir $out mkdir $out
cat ${o.dtb} > $out/dtb cat ${o.dtb} > $out/dtb
@ -89,8 +89,8 @@ in {
setenv serverip ${cfg.serverip} setenv serverip ${cfg.serverip}
setenv ipaddr ${cfg.ipaddr} setenv ipaddr ${cfg.ipaddr}
setenv bootargs 'liminix ${cmdline} $cmd' setenv bootargs 'liminix ${cmdline} $cmd'
tftpboot 0x$(printf %x ${cfg.loadAddress}) result/uimage ; tftpboot 0x$(printf %x $rootfsStart) result/rootfs ; tftpboot 0x$dtbStart result/dtb tftpboot 0x${lib.toHexString cfg.loadAddress} result/uimage ; tftpboot 0x$(printf %x $rootfsStart) result/rootfs ; tftpboot 0x$dtbStart result/dtb
bootm 0x$(printf %x ${cfg.loadAddress}) - 0x$dtbStart bootm 0x$${lib.toHexString cfg.loadAddress} - 0x$dtbStart
EOF EOF
''; '';
}; };

View file

@ -46,7 +46,7 @@ in {
buildPhaseUImage = '' buildPhaseUImage = ''
test -f tmp.dtb && ${objcopy} --update-section .appended_dtb=tmp.dtb vmlinux.elf || ${objcopy} --add-section .appended_dtb=tmp.dtb vmlinux.elf test -f tmp.dtb && ${objcopy} --update-section .appended_dtb=tmp.dtb vmlinux.elf || ${objcopy} --add-section .appended_dtb=tmp.dtb vmlinux.elf
${stripAndZip} ${stripAndZip}
mkimage -A ${arch} -O linux -T kernel -C lzma -a ${loadAddress} -e ${entryPoint} -n '${lib.toUpper arch} Liminix Linux ${extraName}' -d vmlinux.bin.lzma kernel.uimage mkimage -A ${arch} -O linux -T kernel -C lzma -a 0x${lib.toHexString loadAddress} -e ${entryPoint} -n '${lib.toUpper arch} Liminix Linux ${extraName}' -d vmlinux.bin.lzma kernel.uimage
''; '';
buildPhaseFIT = '' buildPhaseFIT = ''
@ -57,7 +57,7 @@ in {
images { images {
kernel { kernel {
data = /incbin/("./vmlinux.bin.lzma"); data = /incbin/("./vmlinux.bin.lzma");
load = <${loadAddress}>; load = <0x${lib.toHexString loadAddress}>;
entry = <${entryPoint}>; entry = <${entryPoint}>;
arch = "${arch}"; arch = "${arch}";
compression = "lzma"; compression = "lzma";