To embed GUI script into code memory

From ThaiEasyElecWiki
Jump to: navigation, search

GUI script work originally by reading the script file named "main.txt" located in specified directory (named "sr" by default) on SD card. The alternate method created later is to convert the script file into binary code and put it in FLASH memory. This has many advantages:

- No more time wasted removing, updating, inserting SD card. Just compile and download new firmware.

- More security.


To do this, open "app_scr_func.h" and look for macro EMBED_SCRIPT_TO_ROM and define it 1.

#define EMBED_SCRIPT_TO_ROM   1

If you can't find it (this macro is defined originally as 0), it means your example code is too old. Try getting a new one because there are some new functions required.


Once the macro's value is 1, a file named "emb_script.h" is required by "script_reader.c". This file needs to be converted from a text file by "file2h.exe".

//this is copied from script_reader.c (version 1.06 or later)
#ifndef EMBED_SCRIPT_TO_ROM
#define EMBED_SCRIPT_TO_ROM		0
#endif

#if EMBED_SCRIPT_TO_ROM == 1
#include "../emb_script.h"
#endif

From above, "../emb_script.h" means the file must be in the same directory with "main.c".


"file2h.exe" is included in the example project. It is used by Windows console, for example:

file2h emb_script.h main.txt "const unsigned char emb_script"

With this command, "main.txt", locates in the same directory with "file2h.exe" will be converted to "emb_script.h" with variable type and name "const unsigned char emb_script".


To make sure you always get your embedded script file updated, add command line above to user program running before build/rebuild.


And the last, if your "main.txt" is in somewhere out of the project directory, make sure to have a command line copying it to the project directory.

Now when things are ready, what you have to do when your "main.txt" is modified is to rebuild your project and download new firmware to target board. Note that this has nothing to do with other files such as fonts, images.




โดยปกติ GUI script จะทำงานโดยการอ่านไฟล์สคริปชื่อ "main.txt" ที่อยู่ใน directory เฉพาะใน SD card (โดย default ชื่อ "sr")

แต่อีกวิธีหนึ่งที่ถูกพัฒนาขึ้นมาภายหลัง คือ การแปลงไฟล์สคริปไปเป็น binary code และใส่ลงไปใน FLASH memory ซึ่งมีข้อดีอยู่หลายอย่าง ได้แก่

- ลดเวลาในการพัฒนา เนื่องจากจะไม่ต้องเสียเวลาในการถอดใส่ SD card เพียงแค่ compile และ download firmware ตัวใหม่เท่านั้น

- มีความปลอดภัยสูงกว่า


ในการทำวิธีนี้ให้ เปิดไฟล์ "app_scr_func.h" และค้นหา macro EMBED_SCRIPT_TO_ROM แล้วกำหนดค่าให้เป็น 1

#define EMBED_SCRIPT_TO_ROM   1

ถ้าใน code ไม่มีการประกาศ macro ไว้ แสดงว่า code ตัวอย่างนี้เก่าเกินไป ให้ download ตัวอย่างที่ใหม่กว่ามาใช้ เนื่องจากจะมี function ที่ต้องการบางตัวเพิ่มเข้ามา


เมื่อค่าของ macro เป็น 1 แล้ว ไฟล์ "script_reader.c" จะทำการ include ไฟล์ "emb_script.h" ซึ่งไฟล์ดังกล่าวสามารถสร้างโดยการแปลงมาจากไฟล์ text ด้วยโปรแกรม "file2h.exe"

//this is copied from script_reader.c (version 1.06 or later)
#ifndef EMBED_SCRIPT_TO_ROM
#define EMBED_SCRIPT_TO_ROM		0
#endif

#if EMBED_SCRIPT_TO_ROM == 1
#include "../emb_script.h"
#endif

จากข้างบน "../emb_script.h" หมายถึงไฟล์นี้ต้องอยู่ใน directory เดียวกันกับ "main.c"


"file2h.exe" จะมีมาพร้อมกับโปรเจคตัวอย่าง ซึ่งวิธีการใช้จะต้องใช้ใน console ของ Windows ตัวอย่างเช่น:

file2h emb_script.h main.txt "const unsigned char emb_script"

จากคำสั่งนี้, "main.txt" ที่อยู่ใน directory เดียวกันกับ "file2h.exe" จะถูกแปลงไปเป็น "emb_script.h" ด้วยประเภทของตัวแปรชื่อ "const unsigned char emb_script"

เพื่อแน่ใจว่า embedded สคริปไฟล์ของคุณเป็นตัวที่ถูกแก้ไขล่าสุดเสมอ ให้เพิ่มบรรทัดคำสั่งข้างบนลงไปใน user program ซึ่งจะทำงานทุกครั้งก่อนที่จะมีการ build/rebuild


แต่ถ้า "main.txt" ไม่ได้อยู่ในแฟ้มเดียวกับ project อาจจะใช้คำสั่งในการ copy ไฟล์ตัวนี้ไปไว้ที่เดียวกับ project


ตอนนี้เมื่อทุกอย่างพร้อมแล้ว เมื่อมีการแก้ไขใน "main.txt" ก็เพียงแค่ทำการ rebuild project และ download firmware ตัวใหม่ลงไปที่บอร์ด ทั้งนี้เมื่อมีการแก้ไขไฟล์อื่นๆ เช่น fonts และ images ก็ยังคงต้องทำการ update ใน SD card เนื่องจากมีเพียง script เท่านั้นที่จะถูกโปรแกรมลงไปใน FLASH memory

Personal tools
Namespaces
Variants
Actions
Navigation
Articles and Tutorials
Shortcut (mini SUN7)
Toolbox