What happens is that your service file is trying to execute your application before other services have been started.
You need to add to your demo_start.servicedemo_start.service the directive AfterAfter that tells the service to run only if the other services are already running. Given the fact that you need the Weston compositor you must add the weston.serviceweston.service to the directive.
 Also, regarding the XDG_RUNTIME_DIRXDG_RUNTIME_DIR error, the same logic applies. For this case you need to add the systemd-user-sessions.service so the /run/user/0/run/user/0 directory is created before trying to execute your application. Besides that, you need to set to the directive EnvironmentEnvironment the path to the XDG_RUNTIME_DIRXDG_RUNTIME_DIR directory.
 Your demo_start.servicedemo_start.service file should have the following directives:
[Unit]
Description = starts the MH11 demo on EVK
After = weston.service systemd-user-sessions.service
[Service]
User = root
Environment = "XDG_RUNTIME_DIR=/run/user/0"
ExecStart = /home/root/demo_wrap.sh
[Install]
WantedBy = multi-user.target
 
                 
                 
                