No announcement yet.

How to program LCD "Boot uSD" in VisiGenie

  • Filter
  • Time
  • Show
Clear All
new posts

  • How to program LCD "Boot uSD" in VisiGenie

    What happened to the "Boot uSD" option in Workshop 4 (v4.5.0.17)? How am I supposed to program the LCD (gen4-uLCD-70DT) with the parent program which loads the program from microSD card? There is an "Update Bank(s) and Run" option, but this does not do what I want. I want to program the LCD only with the parent (bootloader) program, then put all lcd programming (Visi Genie) and content on the uSD card. It seems like the Build button does indeed put the program on the uSD card (RunBank1.4xe), but I can't figure out how to program the LCD with the bootloader. I know this used to be an option, but it is not included now?

  • #2
    If you hover over 'Updates Bank(s) and Run' you will see that this is really an enhanced 'Boot uSD' program.

    'Boot uSD' loaded the program off uSD at every boot into RAM

    'Updates Bank(s) and Run' checks to see if the program on uSD has changed. If it has it loads the new program into Flashbank 1 and runs it. If it hasn't it just runs the program in Flashbank1.

    As well as being 'cleaner' and a bit faster, it also gives you significantly more program space.

    The new program should require no changes to anything you do, other than to click on a different Icon to load the new program.


    • #3
      Why would it be put in Flash bank 1? Why not in Flash bank 0, like normal programs? Also, I don't think it is working. I tried using this, and later changed uSD cards with one that had a different program, but the differences were not updated in the LCD. I had to attach the LCD to the PC via the programming cable and use the "Update Banks" funtion to get the LCD to see the changes in the new uSD card. This is what I was hoping to avoid by putting the program on the uSD card. I don't want to have to attach the LCD to the programming cable just to make changes.


      • #4
        The bootloader lives in flashbank0, thus your program lives in flashbank1

        The old method looked for a program called RunFlash.4xe on the uSD card

        The new method looks for "RunBank1.4xe"

        So, for the first usage of the new method you will need to load the new bootloader, otherwise you will be looking for the program by the old name.

        You only need to do that once.



        • #5
          Thanks for helping Mark,
          I don't understand how the bootloader gets into flash bank0. Where is the button that does that? Also, there is a major problem with this. What I expect to happen is that there is a bootloader in flashbank0 that checks the uSD card for the program, then copies it to RAM and executes it there. What I think is actually happening is that the Workshop 4IDE must be used and connected to the LCD with the programmer cable, and user must press the "Update Banks" button. Only then does the flashbank1 get programmed with the RunBank1.4xe program. This defeats the purpose.
          Once the program gets put into flashbank1, the bootloader never again checks for an updated program on the uSD card, so how would a program update happen? For example, by replacing the uSD card with one that has a new program (and support files) on it.
          If I am still misunderstanding how it is supposed to work, then I can't explain why it doesn't work in my case. This is why I think there is no bootloader in flashbank0.


          • #6
            When you clicked on the old 'boot uSD' tool it put a program in Flashbank0.

            Similarly, when you click on the new 'Updates Bank(s) and Run' it puts the new program in Flashbank0.

            You only need to click on that once and the display will have that program in flash, until you replace it with something else.


            • #7

              Well I guess I'll keep trying. Thanks for your replies.



              • #8
                Hi bjl,

                You can read on these application notes to learn more about the Flashbanks:

                ViSi-Genie Program Destination

                ViSi-Genie Switching Banks

                ViSi-Genie Flash Banks


                • #9
                  I have read 4D-AN-00202. I have not seen 4DLS-AN-00041S before, so I will give it a look. Thank you!


                  • #10
                    I would like to use the run from uSD option but have done all programming with Visi and I don't see the Update bank(s) and run option on that menu.
                    Is there a way to do it from Visi?



                    • #11
                      Hello Sam,

                      Their is no "run from SD card" option in ViSi, this could be done manually though. To do this, the generated files (.dat,.gci,.4xe) of the child program should first be copied to the SD card. This could be done manually or with the remote file transfer method (refer to: General Serial File Transfer from PC to Display Module uSD Card). A mother program should then be created to call out the executable file (.4xe) of the child program (refer to: Designer or ViSi Memory Management Picaso).

                      You might also be interested in modifying It is located on C:\Users\Public\Documents\4D Labs\4DUpdates\Utils.

                      For more information please read:

                      Diablo16 Internal Functions Manual: (file_Run() and file_Exec())

                      Designer or ViSi Memory Management Picaso:

                      ViSi-Genie Program Destination:

                      General Serial File Transfer from PC to Display Module uSD Card:

                      Best Regards,
                      Last edited by michael_4D; 4th May 2018, 12:07 PM.


                      • #12
                        I think I am getting close but have a couple of questions.

                        1. Should the child program project setting be RAM or Flash? (I am using Flash)
                        2. Should I include the preprosseor line #MODE FLASHBANK_1 in the child program? (I tried with and without)

                        I have saved the child.4xe file to the SD card along with the other standard files.

                        I have created a Visi parent program as the loader and saved it to the display flash.

                        In the parent, I have tried file_Run(child.4ex), file_Exec(child.4xe) and childHandle := file_LoadFunction(child.4xe, 0) with no luck.

                        I'm not sure how I can run the program after getting the handle. ( It doesn't return when called )



                        • #13
                          Line should read:
                          In the parent, I have tried file_Run(child.4ex, 0), file_Exec(child.4xe, 0) and childHandle := file_LoadFunction(child.4xe, 0) with no luck.


                          • #14
                            Okay, I've been away from FAT16 so long I forgot about the 8 character name limit.

                            I did a file_Exists(long_child_name.4XE) and it returned false.

                            I shortened the child name and everything is working just fine now. Arg!

                            Thanks for your support.



                            • #15
                              Glad to hear that Sam,

                              If you have anymore questions ,please don't hesitate to ask.
                              Last edited by michael_4D; 8th May 2018, 10:04 AM.