[Feature] You can specify the address for obtaining the upgrade package(The third party code )
Change-Id: I294c21d33d84d53c700598624e6863737ae97414
diff --git a/meta/meta-mediatek-mt2735/recipes-lynq/liblynq-fota/liblynq-fota.bb b/meta/meta-mediatek-mt2735/recipes-lynq/liblynq-fota/liblynq-fota.bb
old mode 100644
new mode 100755
index 339e4e1..492f15a
--- a/meta/meta-mediatek-mt2735/recipes-lynq/liblynq-fota/liblynq-fota.bb
+++ b/meta/meta-mediatek-mt2735/recipes-lynq/liblynq-fota/liblynq-fota.bb
@@ -6,7 +6,7 @@
LICENSE = "CLOSED"
LIC_FILES_CHKSUM = "file://LICENSE;md5=e1696b147d49d491bcb4da1a57173fff"
-DEPENDS += "bootctrl nandapi liblynq-protcl liblynq-log"
+DEPENDS += "bootctrl nandapi liblynq-protcl liblynq-log liblynq-uci"
inherit workonsrc
WORKONSRC = "${TOPDIR}/../src/lynq/lib/liblynq-fota"
diff --git a/meta/meta-mediatek-mt2735/recipes-lynq/lynq-konoda-nrock/lynq-konoda-nrock.bb b/meta/meta-mediatek-mt2735/recipes-lynq/lynq-konoda-nrock/lynq-konoda-nrock.bb
new file mode 100755
index 0000000..45c1992
--- /dev/null
+++ b/meta/meta-mediatek-mt2735/recipes-lynq/lynq-konoda-nrock/lynq-konoda-nrock.bb
@@ -0,0 +1,48 @@
+inherit externalsrc package
+
+DESCRIPTION = "carota update"
+SECTION = "base"
+#LICENSE = "MediaTekProprietary"
+LICENSE = "CLOSED"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e1696b147d49d491bcb4da1a57173fff"
+
+DEPENDS += "bootctrl liblynq-log liblynq-fota"
+
+inherit workonsrc
+WORKONSRC = "${TOPDIR}/../src/lynq/packages/thirdpart/Konoda/lynq-konoda-nrock/src"
+
+TARGET_CC_ARCH += "${LDFLAGS}"
+BB_INCLUDE_ADD = "--sysroot=${STAGING_DIR_HOST}"
+BB_LDFLAGS_ADD = "--sysroot=${STAGING_DIR_HOST} -Wl,--hash-style=gnu"
+#Parameters passed to do_compile()
+EXTRA_OEMAKE = "'RAT_CONFIG_C2K_SUPPORT = ${RAT_CONFIG_C2K_SUPPORT}'\
+ 'MTK_MULTI_SIM_SUPPORT = ${MTK_MULTI_SIM_SUPPORT}'\
+ 'TARGET_PLATFORM = ${TARGET_PLATFORM}'"
+
+#INHIBIT_PACKAGE_STRIP = "1"
+do_compile () {
+ if [ "${PACKAGE_ARCH}" = "cortexa7hf-vfp-vfpv4-neon" ]; then
+ oe_runmake all ROOT=${STAGING_DIR_HOST} OFLAGS="--sysroot=${STAGING_DIR_HOST} -Os -mhard-float -Wl,--hash-style=gnu -DTELEPHONYWARE"
+ elif [ "${PACKAGE_ARCH}" = "cortexa7hf-neon-vfpv4" ]; then
+ oe_runmake all ROOT=${STAGING_DIR_HOST} OFLAGS="--sysroot=${STAGING_DIR_HOST} -Os -mhard-float -Wl,--hash-style=gnu -DTELEPHONYWARE"
+ elif [ "${PACKAGE_ARCH}" = "cortexa53hf-neon-fp-armv8" ]; then
+ oe_runmake all ROOT=${STAGING_DIR_HOST} OFLAGS="--sysroot=${STAGING_DIR_HOST} -Os -mhard-float -Wl,--hash-style=gnu -DTELEPHONYWARE -mhard-float -mfpu=neon-fp-armv8 -mfloat-abi=hard -mcpu=cortex-a53 -mtune=cortex-a53"
+ else
+ oe_runmake all ROOT=${STAGING_DIR_HOST} OFLAGS="--sysroot=${STAGING_DIR_HOST} -Os -Wl,--hash-style=gnu -DTELEPHONYWARE"
+ fi
+}
+
+
+do_install () {
+ install -d ${D}${bindir}/
+
+ if [ -d "${WORKONSRC}" ] ; then
+ install -m 0755 ${S}/lynq-konoda-nrock ${D}${bindir}/
+ install -d ${D}${includedir}
+ fi
+}
+
+addtask bachclean
+do_bachclean () {
+ oe_runmake clean
+}
\ No newline at end of file
diff --git a/meta/meta-mediatek-mt2735/recipes-lynq/packagegroups/packagegroup-lync-mt2735.bb b/meta/meta-mediatek-mt2735/recipes-lynq/packagegroups/packagegroup-lync-mt2735.bb
index eb5569e..7a31269 100755
--- a/meta/meta-mediatek-mt2735/recipes-lynq/packagegroups/packagegroup-lync-mt2735.bb
+++ b/meta/meta-mediatek-mt2735/recipes-lynq/packagegroups/packagegroup-lync-mt2735.bb
@@ -28,6 +28,7 @@
liblynq-media \
lynq-framework-service \
lynq-konoda-rock \
+ lynq-konoda-nrock \
lynq-factory-test \
lynq-function-test \
lynq-low-power \
diff --git a/src/lynq/lib/liblynq-fota/include/iot_rock.h b/src/lynq/lib/liblynq-fota/include/iot_rock.h
index fbeba75..3fe2427 100755
--- a/src/lynq/lib/liblynq-fota/include/iot_rock.h
+++ b/src/lynq/lib/liblynq-fota/include/iot_rock.h
@@ -17,6 +17,7 @@
#define E_ROCK_WRITE_BLOCK_ERROR (-12)
#define E_ROCK_RAM_NOT_ENOUGH (-20)
#define E_ROCK_INVALID_CTX (-30)
+#define E_ROCK_FOTA_ADDR (-50)
#define PATCH_SYSTEM (1)
@@ -129,6 +130,10 @@
ssize_t lynq_nand_write(int fd, void *buf, size_t count);
int lynq_nand_close(int fd);
int lynq_get_upgrade_status(void);
+void lynq_reboot_device(void);
+int lynq_fota_nrestart(void);
+int lynq_fota_set_addr_value(char *value,int size);
+int lynq_fota_get_addr_value(char *tmp);
#endif
diff --git a/src/lynq/lib/liblynq-fota/makefile b/src/lynq/lib/liblynq-fota/makefile
old mode 100644
new mode 100755
index dfdb8f6..b460dbc
--- a/src/lynq/lib/liblynq-fota/makefile
+++ b/src/lynq/lib/liblynq-fota/makefile
@@ -34,6 +34,7 @@
-lbootctrl \
-llynq-log \
-llynq-protcl \
+ -llynq-uci \
SOURCES = $(wildcard *.c wildcard *.h rock_ua/*.c MD5/*c)
diff --git a/src/lynq/lib/liblynq-fota/rock_ua/rock_ua.c b/src/lynq/lib/liblynq-fota/rock_ua/rock_ua.c
index 50b3c37..8a80ac2 100755
--- a/src/lynq/lib/liblynq-fota/rock_ua/rock_ua.c
+++ b/src/lynq/lib/liblynq-fota/rock_ua/rock_ua.c
@@ -30,6 +30,7 @@
#include "liblog/lynq_deflog.h"
#include "mtk_device_wrap.h"
+#include <include/lynq_uci.h>
#define ROCK_DEFAULT_BLOCK_SIZE 0x40000
#define ROCK_RAM_LEN (1024*1024)
@@ -69,6 +70,9 @@
#define DEV_DELTA "/dev/mtd41"
#endif
+#define FOTA_UCI_MODULE "lynq_fota"
+#define FOTA_UCI_FILE "lynq_uci"
+#define FOTA_UCI_ADDR "lynq_fota_addr"
#define FILE_UPDATE_STATE "/data/.update_status"
#define FILE_FOTA_STATE "/data/.fota_status"
@@ -292,7 +296,7 @@
int ret = 0,err = 0;
- if (mtk_device_wrap_seek(fd_delta, offset + delta_offset, SEEK_SET) < 0) {
+ if (lseek(fd_delta, offset + delta_offset, SEEK_SET) < 0) {
err = -errno;
rock_trace(ctx, "mtk_device_wrap_seek df_delta err\n");
return err;
@@ -300,7 +304,7 @@
do {
- ret = mtk_device_wrap_read(fd_delta, dest, size);
+ ret = read(fd_delta, dest, size);
if (ret == 0) {
break;
@@ -311,7 +315,7 @@
err = -errno;
rock_trace(ctx," Error reading metadata file\n");
- mtk_device_wrap_close(fd_delta);
+ close(fd_delta);
return err;
}
@@ -338,9 +342,14 @@
{
int err;
-
+ char lynq_fota_addr[64] = {0};
+ if(0 != lynq_fota_get_addr_value(lynq_fota_addr))
+ {
+ return E_ROCK_FOTA_ADDR;
+ }
+ LYERRLOG("+[UA]: get fota pack addr: %s\n",lynq_fota_addr);
//fd_delta = mtk_device_wrap_open(DEV_DELTA,O_RDONLY);
- fd_delta = mtk_device_wrap_open(DEV_DELTA,O_RDWR);
+ fd_delta = open(lynq_fota_addr,O_RDWR);
if (fd_delta < 0) {
err = errno;
@@ -366,7 +375,7 @@
static int close_dev_fd(int fd)
{
- mtk_device_wrap_close(fd);
+ close(fd);
}
@@ -451,7 +460,7 @@
int err;
- if (mtk_device_wrap_seek(fd_delta, start, SEEK_SET) < 0) {
+ if (lseek(fd_delta, start, SEEK_SET) < 0) {
LYERRLOG("+[UA]: delta_copyto_nand seek err\n");
return -1;
}
@@ -464,7 +473,7 @@
do {
- ret = mtk_device_wrap_read(fd_delta, delta_data, NAND_PAGE_SIZE);
+ ret = read(fd_delta, delta_data, NAND_PAGE_SIZE);
if (ret == 0) {
break;
@@ -559,9 +568,11 @@
//ctx.first_run = first_run;
ctx.first_run = 1;
-
- init_dev_fd();
-
+ if(0 != init_dev_fd())
+ {
+ LYVERBLOG("+[UA]: get fota addr error\n");
+ return E_ROCK_FOTA_ADDR;
+ }
memset(&up_info, 0, sizeof(up_info));
@@ -594,7 +605,7 @@
memset(&da_head, 0, sizeof(da_head));
- mtk_device_wrap_read(fd_delta, (unsigned char*)&da_head, sizeof(da_head));
+ read(fd_delta, (unsigned char*)&da_head, sizeof(da_head));
rock_trace(&ctx, "da_head.sys:%d,da_head.boot:%d,da_head.tee:%d,da_head.md1img=%d,da_head.md1dsp=%d,da_head.vbmeta=%d,da_head.bl33=%d\n", da_head.sys, da_head.boot,da_head.tee,da_head.md1img,da_head.md1dsp,da_head.vbmeta,da_head.bl33);
@@ -1491,13 +1502,13 @@
fota_status.switch_slot = WAIT;
save_fota_status();
- if (mtk_device_wrap_seek(fd_delta, DELTA_HEARD_SIZE + delta_size, SEEK_SET) < 0) {
+ if (lseek(fd_delta, DELTA_HEARD_SIZE + delta_size, SEEK_SET) < 0) {
err = errno;
LYERRLOG("+[UA]: mtk_device_wrap_seek df_delta err\n");
return -1;
}
- mtk_device_wrap_read(fd_delta, full_header, DELTA_FULL_HEARD_SIZE);
+ read(fd_delta, full_header, DELTA_FULL_HEARD_SIZE);
if (memcmp(full_header, "full-ota", DELTA_FULL_HEARD_SIZE) != 0) {
@@ -2093,25 +2104,25 @@
int lynq_nand_open(const char *pathname, int flags)
{
- printf("pathname:%s---flags:%d",pathname,flags);
- return mtk_device_wrap_open(pathname,flags);
+// printf("pathname:%s---flags:%d",pathname,flags);
+ return open(pathname,flags);
}
ssize_t lynq_nand_read(int fd, void *buf, size_t count)
{
- printf("rfd:%d---buf:%s---count:%d",fd,buf,count);
- return mtk_device_wrap_read(fd,buf,count);
+// printf("rfd:%d---buf:%s---count:%d",fd,buf,count);
+ return read(fd,buf,count);
}
ssize_t lynq_nand_write(int fd, void *buf, size_t count)
{
- printf("wfd:%d---buf:%s---count:%d",fd,buf,count);
- return mtk_device_wrap_write(fd,buf,count);
+ // printf("wfd:%d---buf:%s---count:%d",fd,buf,count);
+ return write(fd,buf,count);
}
int lynq_nand_close(int fd)
{
- return mtk_device_wrap_close(fd);
+ return close(fd);
}
/**
@@ -2224,9 +2235,11 @@
//ctx.first_run = first_run;
ctx.first_run = 1;
-
- init_dev_fd();
-
+ if(0 != init_dev_fd())
+ {
+ LYVERBLOG("+[UA]: get fota addr error\n");
+ return E_ROCK_FOTA_ADDR;
+ }
memset(&up_info, 0, sizeof(up_info));
@@ -2259,7 +2272,7 @@
memset(&da_head, 0, sizeof(da_head));
- mtk_device_wrap_read(fd_delta, (unsigned char*)&da_head, sizeof(da_head));
+ read(fd_delta, (unsigned char*)&da_head, sizeof(da_head));
rock_trace(&ctx, "da_head.sys:%d,da_head.boot:%d,da_head.tee:%d,da_head.md1img=%d,da_head.md1dsp=%d,da_head.vbmeta=%d,da_head.bl33=%d\n", da_head.sys, da_head.boot,da_head.tee,da_head.md1img,da_head.md1dsp,da_head.vbmeta,da_head.bl33);
@@ -3156,13 +3169,13 @@
fota_status.switch_slot = WAIT;
save_fota_status();
- if (mtk_device_wrap_seek(fd_delta, DELTA_HEARD_SIZE + delta_size, SEEK_SET) < 0) {
+ if (lseek(fd_delta, DELTA_HEARD_SIZE + delta_size, SEEK_SET) < 0) {
err = errno;
LYERRLOG("+[UA]: mtk_device_wrap_seek df_delta err\n");
return -1;
}
- mtk_device_wrap_read(fd_delta, full_header, DELTA_FULL_HEARD_SIZE);
+ read(fd_delta, full_header, DELTA_FULL_HEARD_SIZE);
if (memcmp(full_header, "full-ota", DELTA_FULL_HEARD_SIZE) != 0) {
@@ -3682,4 +3695,31 @@
save_fota_status();
return status;
-}
\ No newline at end of file
+}
+
+/**
+ * @brief Set the upgrade package address
+ *
+ * @param1 value:fota addr
+ * @param1 szie:fota addr length
+ * @return 0:set success other:set fail
+ */
+int lynq_fota_set_addr_value(char *value,int size)
+{
+ if(size < 64)
+ {
+ return lynq_set_value(FOTA_UCI_MODULE,FOTA_UCI_ADDR, value);
+ }
+ return -1;
+}
+/**
+ * @brief get the upgrade package address
+ *
+ * @param1 value:fota addr
+ * @return 0:get success other:set fail
+ */
+int lynq_fota_get_addr_value(char *tmp)
+{
+ return lynq_get_value(FOTA_UCI_FILE, FOTA_UCI_MODULE,FOTA_UCI_ADDR, tmp);
+}
+
diff --git a/src/lynq/lib/liblynq-uci/lynq_uci.config b/src/lynq/lib/liblynq-uci/lynq_uci.config
old mode 100644
new mode 100755
index f19ffc1..6e1a5be
--- a/src/lynq/lib/liblynq-uci/lynq_uci.config
+++ b/src/lynq/lib/liblynq-uci/lynq_uci.config
@@ -13,3 +13,5 @@
config lynq_autosuspend 'lynq_autosuspend'
option auto_enable '0'
option debug '1'
+
+config lynq_fota_rw 'lynq_fota'
\ No newline at end of file
diff --git a/src/lynq/packages/thirdpart/Konoda/lynq-konoda-nrock/src/main.c b/src/lynq/packages/thirdpart/Konoda/lynq-konoda-nrock/src/main.c
new file mode 100755
index 0000000..3855f4f
--- /dev/null
+++ b/src/lynq/packages/thirdpart/Konoda/lynq-konoda-nrock/src/main.c
@@ -0,0 +1,123 @@
+#include <stdio.h>
+#include "include/iot_rock.h"
+#include "fcntl.h"
+
+#include "liblog/lynq_deflog.h"
+
+//lynq_ftp_socker_info ftp_log_info;
+
+#define USER_LOG_TAG "UA_UP"
+
+
+#define UPDATA_ADDR "/tmp/fota.delta"
+#define READ_BLOCK_SIZE 0x40000
+#if 0
+#define FLASH_DEV_DELTA "/dev/disk/by-partlabel/delta"
+#else
+#define FLASH_DEV_DELTA "/dev/mtd41"
+#endif
+
+
+int main(int argc,char argv[])
+{
+
+ int lynq_upgrade_state = 0;
+ int first_run = 1;
+ int ret = 0;
+ int fd_down,size,fd_target;
+ char input_md5_data[64];
+ char input_order_data[64];
+ char delta_data[READ_BLOCK_SIZE];
+ char lynq_fota_data[64] = {0};
+
+ LYLOGEINIT(USER_LOG_TAG);
+ LYLOGSET(4);
+/*
+ ftp_log_info.portnum = 6521;
+
+
+ sprintf(ftp_log_info.sevname,"58.246.1.50");
+ sprintf(ftp_log_info.username,"VEH_USER_SWAP");
+ sprintf(ftp_log_info.pw,"user_swap_file_0129");
+ sprintf(ftp_log_info.getfilename,"fota.delta");
+ sprintf(ftp_log_info.getfilename_path,"/FOTA/UpFile/");
+
+ sprintf(ftp_log_info.is_pasv_mode,"pasv");
+ sprintf(ftp_log_info.file_type,"A");
+ sprintf(ftp_log_info.put_opt,"APPE");
+
+ LYVERBLOG("[+UP]: Download the FTP data\n");
+ lynq_ftp_login(&ftp_log_info);
+ lynq_ftp_download(&ftp_log_info);
+ LYVERBLOG("[+UP]: Download the FTP data success\n");
+*/
+
+ lynq_upgrade_state = lynq_get_upgrade_status();
+ LYVERBLOG("[+UP]:Upgrade state:%d",lynq_upgrade_state);
+
+ LYVERBLOG("[+UP]: input MD5 data:");
+ while(fgets(input_md5_data,64,stdin) != NULL)
+ {
+ LYVERBLOG("[+UP]: receive MD5 data:%s\n",input_md5_data);
+ ret = lynq_md5_file_verfy(UPDATA_ADDR, input_md5_data);
+ break;
+ }
+
+ fd_down = open(UPDATA_ADDR,O_RDONLY);
+ if (fd_down < 0)
+ {
+ LYVERBLOG("[+UP]: open source error\n");
+ return 1;
+ }
+
+ fd_target = lynq_nand_open(FLASH_DEV_DELTA,O_RDWR);
+
+ if (fd_target < 0)
+ {
+ lynq_nand_close(fd_target);
+ close(fd_down);
+ LYERRLOG("+[UA]: open target error\n");
+ return 1;
+ }
+
+ LYVERBLOG("[+UP]: Write data to flash\n");
+ while(( size = read(fd_down,delta_data,READ_BLOCK_SIZE))>0) {
+ lynq_nand_write(fd_target,delta_data,READ_BLOCK_SIZE);
+ }
+ LYVERBLOG("[+UP]: Write data to flash success\n");
+
+ lynq_nand_close(fd_target);
+ close(fd_down);
+
+ if(0 == lynq_fota_set_addr_value(FLASH_DEV_DELTA,10))
+ {
+ lynq_fota_get_addr_value(lynq_fota_data);
+ LYVERBLOG("+[UA]: get fota addr:%s\n",lynq_fota_data);
+ }
+ else
+ {
+ LYVERBLOG("+[UA]: get fota addr error\n");
+ return -1;
+ }
+
+ sleep(10);
+
+ LYVERBLOG("+[UA]: Upgrade to start ret:%d\n",ret);
+ if(ret == 0)
+ {
+ lynq_fota_nrestart();
+ }
+ LYVERBLOG("+[UA]: Upgrade to end\n");
+
+ LYVERBLOG("+[UA]: input reboot order(reboot):\n");
+ while(fgets(input_order_data,64,stdin) != NULL)
+ {
+ if(0 == strncmp(input_order_data,"reboot",6))
+ {
+ lynq_reboot_device();
+ }
+ }
+
+ return 0;
+
+}
diff --git a/src/lynq/packages/thirdpart/Konoda/lynq-konoda-nrock/src/makefile b/src/lynq/packages/thirdpart/Konoda/lynq-konoda-nrock/src/makefile
new file mode 100755
index 0000000..f6c5348
--- /dev/null
+++ b/src/lynq/packages/thirdpart/Konoda/lynq-konoda-nrock/src/makefile
@@ -0,0 +1,54 @@
+SHELL = /bin/sh
+RM = rm -f
+
+LOCAL_CFLAGS := -Wall \
+ -Os \
+ -flto \
+ -fpermissive \
+
+ LOCAL_CFLAGS += -fPIC -O2 $(INCLUDE) -D_LARGEFILE64_SOURCE
+
+$(warning ################# rock ROOT: $(ROOT),includedir:$(includedir))
+LOCAL_PATH = .
+
+LOCAL_C_INCLUDES = \
+ -I. \
+ -I$(ROOT)$(includedir) \
+ -I$(ROOT)$(includedir)/logger \
+ -I$(ROOT)$(includedir)/liblog \
+ -I$(ROOT)$(includedir)/glib-2.0 \
+ -I$(ROOT)$(libdir)/glib-2.0/include \
+
+
+
+LOCAL_LIBS := \
+ -L. \
+ -L./lib \
+ -llog \
+ -lstdc++ \
+ -lbootctrl \
+ -llynq-log \
+ -llynq-fota \
+
+SOURCES = $(wildcard *.c wildcard *.h)
+
+EXECUTABLE = lynq-konoda-nrock
+
+OBJECTS=$(SOURCES:.c=.o)
+
+
+.PHONY: build clean install pack_rootfs
+
+all: build
+$(EXECUTABLE): $(OBJECTS)
+ $(CXX) $(OBJECTS) $(LOCAL_LIBS) $(LOCAL_CFLAGS) $(LOCAL_C_INCLUDES) -o $@
+
+%.o : %.c
+ $(CC) $(LOCAL_C_INCLUDES) $(LOCAL_CFLAGS) $(LOCAL_LIBS) -o $@ -c $<
+
+build: $(EXECUTABLE)
+ $(warning ########## build $(EXECUTABLE) ##########)
+
+.PHONY: clean
+clean:
+ $(RM) $(OBJECTS) $(EXECUTABLE)
diff --git a/src/lynq/packages/thirdpart/Konoda/lynq-konoda-rock/src/main.c b/src/lynq/packages/thirdpart/Konoda/lynq-konoda-rock/src/main.c
index 6a76781..5a1f166 100755
--- a/src/lynq/packages/thirdpart/Konoda/lynq-konoda-rock/src/main.c
+++ b/src/lynq/packages/thirdpart/Konoda/lynq-konoda-rock/src/main.c
@@ -17,6 +17,8 @@
#define FLASH_DEV_DELTA "/dev/mtd41"
#endif
+#define EMMC_DEV_DELTA "/dev/mmcblk0"
+
int main(int argc,char argv[])
{
@@ -26,6 +28,7 @@
int fd_down,size,fd_target;
char input_md5_data[64];
char delta_data[READ_BLOCK_SIZE];
+ char lynq_fota_data[64] = {0};
LYLOGEINIT(USER_LOG_TAG);
LYLOGSET(4);
@@ -48,6 +51,7 @@
lynq_ftp_download(&ftp_log_info);
LYVERBLOG("[+UP]: Download the FTP data success\n");
*/
+
lynq_upgrade_state = lynq_get_upgrade_status();
LYVERBLOG("[+UP]:Upgrade state:%d",lynq_upgrade_state);
@@ -60,37 +64,52 @@
}
fd_down = open(UPDATA_ADDR,O_RDONLY);
- if (fd_down < 0) {
- LYVERBLOG("[+UP]: open source error\n");
+ if (fd_down < 0)
+ {
+ LYVERBLOG("[+UP]: open source error\n");
return 1;
}
- fd_target = lynq_nand_open(FLASH_DEV_DELTA,O_RDWR);
-
- if (fd_target < 0) {
+ fd_target = lynq_nand_open(EMMC_DEV_DELTA,O_RDWR);
+
+ if (fd_target < 0)
+ {
lynq_nand_close(fd_target);
- close(fd_down);
- LYERRLOG("+[UA]: open target error\n");
+ close(fd_down);
+ LYERRLOG("+[UA]: open target error\n");
return 1;
}
- LYVERBLOG("[+UP]: Write data to flash\n");
- while(( size = read(fd_down,delta_data,READ_BLOCK_SIZE))>0) {
+ LYVERBLOG("[+UP]: Write data to flash\n");
+ while(( size = read(fd_down,delta_data,READ_BLOCK_SIZE))>0) {
lynq_nand_write(fd_target,delta_data,READ_BLOCK_SIZE);
}
- LYVERBLOG("[+UP]: Write data to flash success\n");
-
- lynq_nand_close(fd_target);
- close(fd_down);
+ LYVERBLOG("[+UP]: Write data to flash success\n");
+
+ lynq_nand_close(fd_target);
+ close(fd_down);
+
+ if(0 == lynq_fota_set_addr_value(EMMC_DEV_DELTA,13))
+ {
+ lynq_fota_get_addr_value(lynq_fota_data);
+ LYVERBLOG("+[UA]: get fota addr:%s\n",lynq_fota_data);
+ }
+ else
+ {
+ LYVERBLOG("+[UA]: get fota addr error\n");
+ return -1;
+ }
+
+ sleep(10);
LYVERBLOG("+[UA]: Upgrade to start ret:%d\n",ret);
-// if(ret == 0)
- {
- lynq_rock_main(first_run);
- }
+ if(ret == 0)
+ {
+ lynq_rock_main(first_run);
+ }
LYVERBLOG("+[UA]: Upgrade to end\n");
-
- return 0;
+
+ return 0;
}