Skip to content

Commit

Permalink
rockchip: Drop first 32kb of zeros from the rkSD image type
Browse files Browse the repository at this point in the history
Instead of creating a rockchip SPL SD card image with 32KB of zeros
which can be written to the start of an SD card, create the images with
only the useful data that should be written to an offset of 32KB on the
SD card.

The first 32 kilobytes aren't needed for bootup and only serve as
convenient way of accidentally obliterating your partition table.

Signed-off-by: Sjoerd Simons <[email protected]>
Acked-by: Simon Glass <[email protected]>
Signed-off-by: Simon Glass <[email protected]>
  • Loading branch information
sjoerdsimons authored and sjg20 committed Sep 3, 2015
1 parent 81b0618 commit dd39bca
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 8 deletions.
2 changes: 1 addition & 1 deletion doc/README.rockchip
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ Booting from an SD card
To write an image that boots from an SD card (assumed to be /dev/sdc):

./firefly-rk3288/tools/mkimage -T rksd -d firefly-rk3288/spl/u-boot-spl-dtb.bin out
sudo dd if=out of=/dev/sdc
sudo dd if=out of=/dev/sdc seek=64
sudo dd if=firefly-rk3288/u-boot-dtb.img of=/dev/sdc seek=256

This puts the Rockchip header and SPL image first and then places the U-Boot
Expand Down
9 changes: 2 additions & 7 deletions tools/rksd.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,7 @@
#include "rkcommon.h"

enum {
RKSD_HEADER0_START = 64 * RK_BLK_SIZE,
RKSD_SPL_HDR_START = RKSD_HEADER0_START +
RK_CODE1_OFFSET * RK_BLK_SIZE,
RKSD_SPL_HDR_START = RK_CODE1_OFFSET * RK_BLK_SIZE,
RKSD_SPL_START = RKSD_SPL_HDR_START + 4,
RKSD_HEADER_LEN = RKSD_SPL_START,
};
Expand Down Expand Up @@ -44,11 +42,8 @@ static void rksd_set_header(void *buf, struct stat *sbuf, int ifd,
unsigned int size;
int ret;

/* Zero the whole header. The first 32KB is empty */
memset(buf, '\0', RKSD_HEADER0_START);

size = params->file_size - RKSD_SPL_HDR_START;
ret = rkcommon_set_header(buf + RKSD_HEADER0_START, size);
ret = rkcommon_set_header(buf, size);
if (ret) {
/* TODO([email protected]): This method should return an error */
printf("Warning: SPL image is too large (size %#x) and will not boot\n",
Expand Down

0 comments on commit dd39bca

Please sign in to comment.