This post describes how to port the Vista Cube™ for RDCx00/RDP Flash Image download feature in stand-alone application, such as a firmware for MCU.
We assume that our stand-alone porting environment is on Win10 x64 and target products are RDC200/RDP550F. (This demo project is a Visual Studio console project and it is located in $VISTA_CUBE_PATH\example\mcu_example\)
!! To try this demo, Vista Studio™ and RAON uDisplay EVB be used.
— In order to migrate Vista Cube™ download function into customer MCU platform, MCU compiler IDE and MCU I2C function should be used instead of we used Visual Studio and EVB respectively.
Take the following steps.
- Download Vista Cube™.
- You can find it on our dev-site.
- Extract this zip file with a password (If you don’t know the password, please contact us).
- Prepare your target build system with Vista Cube™.
- Add include path :
- -I$VISTA_CUBE_PATH\src\libvc\core\rdc200\
- -I$VISTA_CUBE_PATH\src\libvc\include\
- -I$YOUR_I2C_INTERFACE_HEADER_PATH\ (if need)
- Add library path :
- -L$YOUR_I2C_INTERFACE_LIB_PATH\ (if need)
- Add name of library :
- -l$YOUR_I2C_INTERFACE_FILE_PATH (if need)
- Specify library loading path (if need)
- Copy SiLab_USB\SiUSBXp.dll and USBLibrary.dll in $VISTA_CUBE_PATH\src\test\windows\ to $VISTA_CUBE_PATH\example\mcu_example\
- Add include path :
- Connect your i2c interface to Vista Cube™.
- You should implement the following i2c wrapping functions in $VISTA_CUBE_PATH/src/libvc/port/rti_vc_devif.c (Refer to Capter 2.3 Device interface Services in VistaCube_User_Guid_RDC200.pdf for details).
- rtiVC_InitDevice();
- rtiVC_OpenDevice();
- rtiVC_ReadDevice(…);
- rtiVC_WriteDevice(…);
- rtiVC_ReadBurstDeviceExt(…);
- rtiVC_WriteBurstDeviceExt(…);
- rtiVC_CloseDevice();
- rtiVC_DeinitDevice();
- Check if the following functions are activated or not in $VISTA_CUBE_PATH/example/mcu_example/rdc200_dload.c ( these functions are required for normal panels booting)
- rdc200_setup_firmware_data(…);
- rdc200_setup_fw_cfg_data(…);
- rdc200_setup_rdc_init_data(…);
- rdc200_setup_rdp_init_data(…);
- rdc200_setup_gamma_data(…);
- rdc200_setup_bmp_data(…);
- Check I2C SlaveAddress (It depends on your target system configuration)
- RDC slave address : define it in your side. (e.g.
#define RDC_I2C_SLAVE_ADDR 0x44
) - RDP slave address :
#define _CFG_RDP_SLAVE_ADDR 0x39
in $VISTA_CUBE_PATH/src/libvc/include/rti_vc_config.h
- RDC slave address : define it in your side. (e.g.
- You should implement the following i2c wrapping functions in $VISTA_CUBE_PATH/src/libvc/port/rti_vc_devif.c (Refer to Capter 2.3 Device interface Services in VistaCube_User_Guid_RDC200.pdf for details).
- Copy and Paste the latest init values to Vista Cube™ code inside.
- Download an init file ( RDC100 init file / RDC200 init file) in according to your target.
- Download VisualStudio™ on our dev-site( it is also password protected).
- Power on RAON uDiaplay EVB and connect your host computer via USB and then execute Vista Studio™. (If it is first time, board configuration wizard will be appear)
- Burn the latest init files into Flash via Flash burning function ( you can find this function on Toolbar menu of Vista Studio™)
- Select $RDC200_INIT_PATH\feature\rdc200_fw_v1.6_gpioB_20171017.hex as FW
- Select $RDC200_INIT_PATH\init_lut\rdc200\RDC200_for_RDP501H_20170904.rega as Controller-Init
- Select $RDC200_INIT_PATH\feature\20170406_gamm2.0.lut as Controller-Gamma
- Select $RDC200_INIT_PATH\init_lut\rdp550f\init_rdp550f-e_20170405.rega as Panel-Init
- Select $RDC200_INIT_PATH\feature\bootlogo_00.bmp as Boot Logo
- Check Generate LUT
- And then click Start button.
- Vista Studio™ will create rdcx000_lut_data.h in Default Download Folder specified above .
- Replace the rdcx000_lut_data.h located in $VISTA_CUBE_PATH/example/mcu_example/ with the rdcx00_lut_data.h made in the previous step.
- e.g. Copy rdc200_lut_data.h made in step4 into $VISTA_CUBE_PATH/example/mcu_example/
- Build and then execute your target system.
- Don’t forget to include the downloading calling function. (Refer to main function in $VISTA_CUBE_PATH\example\mcu_example\main.c)
rtiVC_Initialize(RDC_I2C_SLAVE_ADDR);
rtiVC_OpenDevice();
- (Optional)
rtiVC_RegisterDownloadCallback(...);
rdc200_download();
rtiVC_CloseDevice();
rtiVC_Denitialize();
- After finishing, reboot. Then you will see an input video if there is video source, otherwise you will see the bootlogo image on your panels.
- Don’t forget to include the downloading calling function. (Refer to main function in $VISTA_CUBE_PATH\example\mcu_example\main.c)
A second way of getting init binaries
- Use Flash Memory Viewer On main menu of Vista Studio™.
- FW : Base Address(0x00000), Dump Length(0x4000)
- Confg : Base Address(0x08000), Dump Length(0x1000)
- RDC init : Base Address(0x09000), Dump Length(0x1000)
- RDP init : Base Address(0x0A000), Dump Length(0x1000)
- Gamma : Base Address(0x0C000), Dump Length(0x4000)
- Bootlogo : Base Address(0x90000), Dump Length(0x4000)
- Save the dump results with unchecked baseAddr, checked Prefix(0x) and Coma token in Write Format.
- Copy and pastes these binaries into the appropriate array in rdc200_lut_data.h
- Replace rdc200_fw_hex_lut values with the FW binaries.
- Replace rdc200_fw_cfg_lut values with the Config binaries.
- Replace rdc200_rdc_init_lut array with the RDC init binaries.
- Replace rdc200_rdp_init_lut array with the RDP inti binaries.
- Replace rdc200_gamma_lut array with the gamma binaries.
- Replace rdc200_bmp_lut_0 values with the bootlogo binaries.