~aleteoryx/muditaos

37c5c2fcc83cf7382610d8823a5f45e5066be83b — Lucjan Bryndza 5 years ago 5ad8a9b
[EGD-5153] Fix errors in generate image script

Script for generate partitions for emulator by mistake
overwrites the littlefs image and fatfs image due to the
overlap fat parition and littlefs partition

Signed-off-by: Lucjan Bryndza <lucjan.bryndza@mudita.com>
M generate_fatfs_image.sh => generate_fatfs_image.sh +15 -7
@@ 57,21 57,29 @@ if [ -z ${GENLFS} ]; then
    exit -1
fi

# Partition sizes in sector 512 units
PART1_START=2048
PART1_SIZE=2097152
PART2_START=$(($PART1_START + $PART1_SIZE))
PART2_SIZE=$PART1_SIZE
PART3_START=$(($PART2_START + $PART2_SIZE))
PART3_SIZE=29358080

truncate -s 16G $IMAGE_NAME
sfdisk $IMAGE_NAME << ==sfdisk
label: dos
label-id: 0x09650eb4
unit: sectors

/dev/sdx1 : start=       2048,  size=    2097152, type=b, bootable
/dev/sdx2 : start=    2099200,  size=    2097152, type=b
/dev/sdx3 : start=    4196352,  size=   29358080, type=9e
/dev/sdx1 : start=    $PART1_START,  size=    $PART1_SIZE, type=b, bootable
/dev/sdx2 : start=    $PART2_START,  size=    $PART2_SIZE, type=b
/dev/sdx3 : start=    $PART3_START,  size=    $PART3_SIZE, type=9e
==sfdisk

PART1="$IMAGE_NAME@@1048576"
PART2="$IMAGE_NAME@@14604566528"
mformat -i "$PART1" -F -T 28522496 -v MUDITAOS
mformat -i "$PART2" -F -T 2097152 -v RECOVER
PART1="$IMAGE_NAME@@$(($PART1_START*512))"
PART2="$IMAGE_NAME@@$(($PART2_START*512))"
mformat -i "$PART1" -F -T $PART1_SIZE -M 512 -v MUDITAOS
mformat -i "$PART2" -F -T $PART2_SIZE -M 512 -v RECOVER
mmd -i "$PART1" ::/current
cd "$SRC_DATA"
for i in $ASSETS_DIR; do

M module-vfs/board/linux/purefs/include/purefs/blkdev/disk_image.hpp => module-vfs/board/linux/purefs/include/purefs/blkdev/disk_image.hpp +1 -0
@@ 25,6 25,7 @@ namespace purefs::blkdev
        auto status() const -> media_status override;
        auto get_info(info_type what) const -> scount_t override;
        auto erase(sector_t lba, std::size_t count) -> int override;
        auto range_valid(sector_t lba, std::size_t count) const -> bool;

      private:
        int m_filedes{-1};

M module-vfs/board/linux/purefs/src/blkdev/disk_image.cpp => module-vfs/board/linux/purefs/src/blkdev/disk_image.cpp +13 -3
@@ 40,6 40,9 @@ namespace purefs::blkdev
    }
    auto disk_image::write(const void *buf, sector_t lba, std::size_t count) -> int
    {
        if (!range_valid(lba, count)) {
            return -ERANGE;
        }
        auto offs = ::lseek(m_filedes, off_t(lba) * sector_size, SEEK_SET);
        if (offs < 0) {
            return offs;


@@ 58,12 61,15 @@ namespace purefs::blkdev
    }
    auto disk_image::erase(sector_t lba, std::size_t count) -> int
    {
        char buf[count * sector_size];
        std::memset(buf, 0xff, count * sector_size);
        return write(buf, lba, count);
        std::unique_ptr<char[]> buf(new char[count * sector_size]);
        std::memset(buf.get(), 0xff, count * sector_size);
        return write(buf.get(), lba, count);
    }
    auto disk_image::read(void *buf, sector_t lba, std::size_t count) -> int
    {
        if (!range_valid(lba, count)) {
            return -ERANGE;
        }
        auto offs = ::lseek(m_filedes, off_t(lba) * sector_size, SEEK_SET);
        if (offs < 0) {
            return offs;


@@ 111,4 117,8 @@ namespace purefs::blkdev
        }
        return -1;
    }
    auto disk_image::range_valid(sector_t lba, std::size_t count) const -> bool
    {
        return (lba < m_sectors) && ((lba + count) < m_sectors);
    }
} // namespace purefs::blkdev