生活之笑看人生

#接着干
往创建的文件里面添加代码。
往my4412dir.c

*
 * Copyright (C) 2011 Samsung Electronics
 *
 * SPDX-License-Identifier:     GPL-2.0+
 */

#include <common.h>
#include <asm/io.h>
#include <asm/gpio.h>
#include <asm/arch/cpu.h>
#include <asm/arch/mmc.h>
#include <asm/arch/periph.h>
#include <asm/arch/pinmux.h>
#include <usb.h>
#include <usb/dwc2_udc.h>

DECLARE_GLOBAL_DATA_PTR;

u32 get_board_rev(void)
{
        return 0;
}

int exynos_init(void)
{
        return 0;
}
int board_usb_init(int index, enum usb_init_type init)
{

往Kconfig里面添加

if TARGET_MY4412

config SYS_BOARD
        default "my4412"

config SYS_VENDOR
        default "samsung"

config SYS_CONFIG_NAME
        default "my4412"

endif

往Makefile里添加

#
# Copyright (C) 2011 Samsung Electronics
#
# SPDX-License-Identifier:      GPL-2.0+
#

ifdef CONFIG_SPL_BUILD
# necessary to create built-in.o
obj- := __dummy__.o

hostprogs-y := tools/mkmy4412spl
always := $(hostprogs-y)

# omit -O2 option to suppress
#   warning: dereferencing type-punned pointer will break strict-aliasing rules
#
# TODO:
# Fix the root cause in tools/mkmy4412spl.c and delete the following work-around
$(obj)/tools/mkmy4412spl: HOSTCFLAGS:=$(filter-out -O2,$(HOSTCFLAGS))
else
obj-y   += my4412dir.o
endif

往MAINTAINERS添加

MY4412 BOARD
M:      Chander Kashyap <k.chander@samsung.com>
S:      Maintained
F:      board/samsung/my4412dir/
F:      include/configs/my4412.h
F:      configs/my4412_defconfig

往mkmy4412spl.c里面添加

/*
 * Copyright (C) 2011 Samsung Electronics
 *
 * SPDX-License-Identifier:     GPL-2.0+
 */

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <string.h>
#include <sys/stat.h>

#define BUFSIZE                 (16*1024)
#define IMG_SIZE                (14*1024) //16*1024
#define SPL_HEADER_SIZE         0 //16
#define FILE_PERM               (S_IRUSR | S_IWUSR | S_IRGRP \
                                | S_IWGRP | S_IROTH | S_IWOTH)
#define SPL_HEADER              "S5PC210 HEADER  "
/*
* Requirement:
* IROM code reads first 14K bytes from boot device.
* It then calculates the checksum of 14K-4 bytes and compare with data at
* 14K-4 offset.
*
* This function takes two filenames:
* IN  "u-boot-spl.bin" and
* OUT "$(BOARD)-spl.bin as filenames.
* It reads the "u-boot-spl.bin" in 16K buffer.
* It calculates checksum of 14K-4 Bytes and stores at 14K-4 offset in buffer.
* It writes the buffer to "$(BOARD)-spl.bin" file.
*/
int main(int argc, char **argv)
{
        int i, len;
        unsigned char buffer[BUFSIZE] = {0};
        int ifd, ofd;
        unsigned int checksum = 0, count;

        if (argc != 3) {
                printf(" %d Wrong number of arguments\n", argc);
                exit(EXIT_FAILURE);
        }

        ifd = open(argv[1], O_RDONLY);
        if (ifd < 0) {
                fprintf(stderr, "%s: Can't open %s: %s\n",
                        argv[0], argv[1], strerror(errno));
                exit(EXIT_FAILURE);
        }

        ofd = open(argv[2], O_WRONLY | O_CREAT | O_TRUNC, FILE_PERM);
        if (ofd < 0) {
                fprintf(stderr, "%s: Can't open %s: %s\n",
                        argv[0], argv[2], strerror(errno));
                if (ifd)
                        close(ifd);
                exit(EXIT_FAILURE);
        }

        len = lseek(ifd, 0, SEEK_END);
        lseek(ifd, 0, SEEK_SET);

        memcpy(&buffer[0], SPL_HEADER, SPL_HEADER_SIZE);
        count = (len < (IMG_SIZE - SPL_HEADER_SIZE))
                ? len : (IMG_SIZE - SPL_HEADER_SIZE);

        if (read(ifd, buffer + SPL_HEADER_SIZE, count) != count) {
                fprintf(stderr, "%s: Can't read %s: %s\n",
                        argv[0], argv[1], strerror(errno));

                if (ifd)
                        close(ifd);
                if (ofd)
                        close(ofd);

                exit(EXIT_FAILURE);
        }

#if 0
        for (i = 0; i < IMG_SIZE - SPL_HEADER_SIZE; i++)
                checksum += buffer[i+16];

        *(unsigned long *)buffer ^= 0x1f;
        *(unsigned long *)(buffer+4) ^= checksum;

        for (i = 1; i < SPL_HEADER_SIZE; i++)
                buffer[i] ^= buffer[i-1];
#endif

        for (i = 0; i < IMG_SIZE - 4; i++)
                checksum += (unsigned char)buffer[i];
        *(unsigned int *)&buffer[i] = checksum;

        if (write(ofd, buffer, BUFSIZE) != BUFSIZE) {
                fprintf(stderr, "%s: Can't write %s: %s\n",
                        argv[0], argv[2], strerror(errno));

                if (ifd)
                        close(ifd);
                if (ofd)
                        close(ofd);

                exit(EXIT_FAILURE);
        }

        if (ifd)
                close(ifd);
        if (ofd)
                close(ofd);

        return EXIT_SUCCESS;
}


这个文件的作用是生成一个工具,此工具截取u-boot-spl.bin的16k到我们板卡my4412-spl.bin文件中。
下一步是需要修改一些东西。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值