Regarding CAN versus FSMC: you can either use "lcd_without_fsmc.c", or disabling the FSMC clock when you are running a program that communicates through the CAN. Perhaps the second possibility would be easier (no need to adapt CircleOS), but it means that you can't display anything new on the LCD during a CAN communication.
I've tried to adapt the lcd_without_fsmc.c file to work with Circle 3.8 without luck so far... It compiles but when the device reboots there is nothing but a blank white screen. It still gives me the audio on startup and it still beeps and stuff as I move the device around but no video. Also, the middle two LEDs (of the four on the end) tend to flash and/or stay on depending on what I do as a play with it. Not sure why it won't work, I'm sure I didn't make a mistake in merging the current lcd and the without_fsmc one... Maybe something else changed with the way everything is initialized.
So, I guess I've struck out on the above approach unless someone else has a guess... If I disable fsmc until I need to update the LCD will there be a potential of a fault condition where the CAN bus will get messages and loose them while I'm writing to the LCD? What happens if there are can messages while FSMC is on for a short time?