Nanoframework Couldn't find a valid native assembly - esp32

I have ESP32_WROOM_32 with VisualStudio.
Before build and flash in VS2019, I flashed target with nanoff --update --target ESP32_WROOM_32 --serialport COM5
When I use nuget, to install Gpio, Wifi, Mqtt... etc, i see, that there is unrecommended versions of this libraries. (1)
OK, I thought. Lets download this chain:
nanoFramework.CoreLibrary 1.11.7
nanoFramework.System.Device.Gpio 1.0.2
Press FLASH... Error:
17:23:31.965 [Starting deployment transaction from v2019.10.0+69f6b0d48e]
17:23:31.971 [Starting debug engine on nanoDevice]
17:23:32.032 [Connecting to debug engine...OK]
17:23:32.436 [Couldn't find a valid native assembly required by mscorlib v1.11.7.2, checksum 0xC5322585]
17:23:32.436 [The connected target does not have support for mscorlib.]
I note, that if i use
nanoFramework.CoreLibrary 1.10.5
nanoFramework.System.Device.Gpio 1.0.1
everything works fine.
I understand that the problem is that the mscorlib version in the target (ESP32) = 1.10.5.4 and it is not possible to use the nanoFramework.CoreLibrary 1.11.7 or 1.12.x
MAIN QUESTION: How can I upgrade the version in my ESP, to use latest libraries?
Device details
System Information
HAL build info: nanoFramework running # ESP32
Target: ESP32_WROOM_32
Platform: ESP32
Firmware build Info:
Date: Aug 25 2021
Type: MinSizeRel build with IDF v3.3.5
CLR Version: 1.7.0.618
Compiler: GNU ARM GCC v5.2.0
OEM Product codes (vendor, model, SKU): 0, 0, 0
Serial Numbers (module, system):
00000000000000000000000000000000
0000000000000000
Target capabilities:
Has nanoBooter: NO
IFU capable: NO
Has proprietary bootloader: YES
AppDomains:
Assemblies:
Esp32_Test, 1.0.0.0
nanoFramework.Runtime.Events, 1.9.1.3
System.Device.Gpio, 1.0.1.2
mscorlib, 1.10.5.4
Native Assemblies:
mscorlib v100.5.0.12, checksum 0x132BDB6F
nanoFramework.Runtime.Native v100.0.8.0, checksum 0x2307A8F3
nanoFramework.Hardware.Esp32 v100.0.7.2, checksum 0x1B75B894
nanoFramework.Hardware.Esp32.Rmt v100.0.3.0, checksum 0x9A53BB44
nanoFramework.Devices.OneWire v100.0.3.4, checksum 0xA5C172BD
nanoFramework.Networking.Sntp v100.0.4.4, checksum 0xE2D9BDED
nanoFramework.ResourceManager v100.0.0.1, checksum 0xDCD7DF4D
nanoFramework.System.Collections v100.0.0.1, checksum 0x5A31313D
nanoFramework.System.Text v100.0.0.1, checksum 0x8E6EB73D
nanoFramework.Runtime.Events v100.0.8.0, checksum 0x0EAB00C9
EventSink v1.0.0.0, checksum 0xF32F4C3E
System.IO.FileSystem v1.0.0.0, checksum 0x3112D24C
System.Math v100.0.5.2, checksum 0xC9E0AB13
System.Net v100.1.3.4, checksum 0xC74796C2
Windows.Devices.Adc v100.1.3.3, checksum 0xCA03579A
System.Device.Dac v100.0.0.6, checksum 0x02B3E860
System.Device.Gpio v100.1.0.4, checksum 0xB6D0ACC1
Windows.Devices.Gpio v100.1.2.2, checksum 0xC41539BE
Windows.Devices.I2c v100.2.0.2, checksum 0x79EDBF71
System.Device.I2c v100.0.0.1, checksum 0xFA806D33
Windows.Devices.Pwm v100.1.3.3, checksum 0xBA2E2251
Windows.Devices.SerialCommunication v100.1.1.2, checksum 0x34BAF06E
System.IO.Ports v100.1.1.3, checksum 0x61B8380C
Windows.Devices.Spi v100.1.4.2, checksum 0x360239F1
System.Device.Spi v100.1.0.0, checksum 0x48031DC5
Windows.Devices.Wifi v100.0.6.2, checksum 0xA94A849E
Windows.Storage v100.0.2.0, checksum 0x954A4192

You should be using another firmware image. That one it's outdated. Please check the available target names in our Home repo. Or just use nanoff with --platform esp32 instead of --target Name. That will choose the appropriate firmware according to the connected device capabilities.

Related

Yocto: gstreamer1.0-plugins-bad_1.16.3.bb:do_configure in yocto

I am always facing a problem if i wanted to build yocto or the qt toolchain.
for example in the first run i have give the following command where the issue occurs the first time:
bitbake meta-toolchain-qt5
following error message occurs:
Build Configuration:
BB_VERSION = "1.46.0"
BUILD_SYS = "x86_64-linux"
NATIVELSBSTRING = "universal"
TARGET_SYS = "arm-poky-linux-gnueabi"
MACHINE = "raspberrypi3"
DISTRO = "poky"
DISTRO_VERSION = "3.1.6"
TUNE_FEATURES = "arm vfp cortexa7 neon vfpv4 thumb callconvention-hard"
TARGET_FPU = "hard"
meta = "dunfell:9ee329c18fbe0c42eaf3d43657ea30591f79143b"
meta-oe = "dunfell:346681e7bf9c78008a845fc89031be4fd4ceb3a1"
meta-poky
meta-yocto-bsp = "dunfell:9ee329c18fbe0c42eaf3d43657ea30591f79143b"
meta-qt5 = "dunfell:0d8eb956015acdea7e77cd6672d08dce18061510"
meta-raspberrypi = "dunfell:77190af02d48adc2b28216775e6318e9eeda571c"
meta-multimedia
meta-python
meta-networking = "dunfell:346681e7bf9c78008a845fc89031be4fd4ceb3a1"
Initialising tasks: 100% |##################################################################################################################################################################| Time: 0:00:02
Sstate summary: Wanted 0 Found 0 Missed 0 Current 329 (0% match, 100% complete)
NOTE: Executing Tasks
ERROR: gstreamer1.0-plugins-bad-1.16.3-r0 do_configure: meson failed
-------------------------------------------------------------------------------------------
| Run-time dependency gstreamer-sdp-1.0 found: YES 1.16.3
| Run-time dependency gstreamer-tag-1.0 found: YES 1.16.3
| Run-time dependency gstreamer-video-1.0 found: YES 1.16.3
| Run-time dependency gstreamer-check-1.0 found: YES 1.16.3
| Found CMake: NO
| Run-time dependency gstreamer-gl-1.0 found: NO (tried pkgconfig and cmake)
| Looking for a fallback subproject for the dependency gstreamer-gl-1.0
|
| meson.build:283:0: ERROR: Subproject directory not found and gst-plugins-base.wrap file not found
|
How can i solve this problem any ideas?
Thanks in advance
I encountered this issue as well and was able to track down the cause (though it probably doesn't apply to the original query if it was resolved by a clean build). In my case, I was building for an ELGFS Qt based system. There's a check in the meson.build file in gstreamer1.0-plugins-base that will disable the gstgl library build if an OpenGL Window system isn't found, and this was being triggered for me. gstreamer 1.16 does not support EGL as the window system but 1.18 does. Yocto upgraded to gstreamer 1.18 with the hardknott release, but we were relying on multiple supporting 3rd party recipes that were still on dunfell and couldn't upgrade.
In our case, gstreamer had been included as a dependency from qtmultimedia, but this was determined to be extraneous and could be resolved by excluding qtmultimedia or using a .bbappend file to remove gstreamer from the PACKAGECONFIG. If gstreamer is actually needed then the options are:
Use a windowing system (e.g., weston, or a custom wayland compositor), or
See if the gstreamer 1.18 recipe from hardknott can be made to work in the existing project, or
See if the entire project can be upgraded to use the hardknott release, so that gstreamer 1.18 is used by default.

Catkin_make on the velodyne drivers fails in the windows 10 environemnt

I am trying to install the ROS-Velodyne drivers(https://github.com/ros-drivers/velodyne) in windows to capture the point cloud from velodyne LiDAR but getting error while running catkin_make.
Since these drivers require pcap library, i installed WinPcap in my system and updated the cmake of velodyne driver to find the required headers and link the library.
But on running the cmake, i am getting error on "target_link_libraries" (image shown)
Cannot specify link libraries for target "velodyne_driver" which is not
built by this project
Following is the cmake file of velodyne_driver package:
cmake_minimum_required(VERSION 2.8.3)
project(velodyne_driver)
# Set minimum C++ standard to C++11
if (NOT "${CMAKE_CXX_STANDARD_COMPUTED_DEFAULT}")
message(STATUS "Changing CXX_STANDARD from C++98 to C++11")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
elseif ("${CMAKE_CXX_STANDARD_COMPUTED_DEFAULT}" STREQUAL "98")
message(STATUS "Changing CXX_STANDARD from C++98 to C++11")
set(CMAKE_CXX_STANDARD 11)
endif()
set(${PROJECT_NAME}_CATKIN_DEPS
diagnostic_updater
dynamic_reconfigure
nodelet
roscpp
tf
velodyne_msgs)
find_package(catkin REQUIRED COMPONENTS ${${PROJECT_NAME}_CATKIN_DEPS} roslint)
# This driver uses Boost threads
find_package(Boost REQUIRED COMPONENTS thread)
# kinger: libpcap provides no pkg-config or find_package module:
#message (STATUS "****** Starting PCAP Search in folder: ********")
set( PCAP_DIR "C:/workspace/WpdPack" )
#message (STATUS ${PCAP_DIR})
#kinger: Include file FindPCAP.cmake
include(FindPCAP.cmake)
#find_package( PCAP REQUIRED )
message (STATUS "******* FIND PCAP TASK FINISHED **********")
message (STATUS ${PCAP_FOUND})
message (STATUS ${PCAP_INCLUDE_DIRS})
message (STATUS ${PCAP_LIBRARY_DIRS})
message (STATUS ${PCAP_LIBRARIES})
#set(libpcap_LIBRARIES -lpcap)
if(PCAP_FOUND)
# Include Directories
include_directories( ${PCAP_INCLUDE_DIRS} )
# Library Directories (Option)
link_directories( ${PCAP_LIBRARY_DIRS} )
# Dependencies
target_link_libraries( ${PROJECT_NAME} ${PCAP_LIBRARIES} )
endif()
include_directories(include ${Boost_INCLUDE_DIR} ${catkin_INCLUDE_DIRS})
# Generate dynamic_reconfigure server
generate_dynamic_reconfigure_options(cfg/VelodyneNode.cfg)
# objects needed by other ROS packages that depend on this one
catkin_package(CATKIN_DEPENDS ${${PROJECT_NAME}_CATKIN_DEPS}
INCLUDE_DIRS include
LIBRARIES velodyne_input)
# compile the driver and input library
add_subdirectory(src/lib)
add_subdirectory(src/driver)
install(DIRECTORY include/${PROJECT_NAME}/
DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION})
install(FILES nodelet_velodyne.xml
DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION})
install(DIRECTORY launch/
DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/launch)
install(PROGRAMS src/vdump
DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION})
roslint_cpp()
if (CATKIN_ENABLE_TESTING)
# these dependencies are only needed for unit testing
find_package(roslaunch REQUIRED)
find_package(rostest REQUIRED)
# Download packet capture (PCAP) files containing test data.
# Store them in devel-space, so rostest can easily find them.
catkin_download_test_data(
${PROJECT_NAME}_tests_class.pcap
http://download.ros.org/data/velodyne/class.pcap
DESTINATION ${CATKIN_DEVEL_PREFIX}/${CATKIN_PACKAGE_SHARE_DESTINATION}/tests
MD5 65808d25772101358a3719b451b3d015)
catkin_download_test_data(
${PROJECT_NAME}_tests_32e.pcap
http://download.ros.org/data/velodyne/32e.pcap
DESTINATION ${CATKIN_DEVEL_PREFIX}/${CATKIN_PACKAGE_SHARE_DESTINATION}/tests
MD5 e41d02aac34f0967c03a5597e1d554a9)
catkin_download_test_data(
${PROJECT_NAME}_tests_vlp16.pcap
http://download.ros.org/data/velodyne/vlp16.pcap
DESTINATION ${CATKIN_DEVEL_PREFIX}/${CATKIN_PACKAGE_SHARE_DESTINATION}/tests
MD5 f45c2bb1d7ee358274e423ea3b66fd73)
# unit tests
add_rostest(tests/pcap_node_hertz.test)
add_rostest(tests/pcap_nodelet_hertz.test)
add_rostest(tests/pcap_32e_node_hertz.test)
add_rostest(tests/pcap_32e_nodelet_hertz.test)
add_rostest(tests/pcap_vlp16_node_hertz.test)
add_rostest(tests/pcap_vlp16_nodelet_hertz.test)
# parse check all the launch/*.launch files
roslaunch_add_file_check(launch)
# unit test
catkin_add_gtest(time_test tests/timeconversiontest.cpp)
target_link_libraries(time_test
${catkin_LIBRARIES}
${Boost_LIBRARIES}
${PCAP_LIBRARIES})
endif (CATKIN_ENABLE_TESTING)
UPDATE: Resolved the above issue. It was related to target_link_libraries where we need to provide the "target" and not the "project". I updated the cmake by adding this line:
set(libpcap_LIBRARIES ${PCAP_LIBRARIES})
Now, the build fails at 59% with following error:
C:\opt\ros\noetic\x64\include\diagnostic_updater/update_functions.h(188): error C2589: 'constant': illegal token on right side of '::'
Looks like this is an open issue: https://github.com/ms-iot/ROSOnWindows/issues/280
I'm happy to see that you are using ROS on Windows! I'd love to know more about your project.
We (Azure Edge Robotics, who maintain ROS on Windows) don't currently have a Velodyne lidar, so have not attempted to port it.
It looks like the Velodyne Lidar ROS node has not been enabled on Windows. It looks like there are several linux specific commands in the cmake file which need windows equivalents.
We have a porting guide for Windows here - https://ms-iot.github.io/ROSOnWindows/GettingStarted/PortingANode.html
It there is a winpcap vcpkg which can be leveraged in the port:
https://github.com/microsoft/vcpkg/tree/master/ports/winpcap
I've created this on the ROSonWindows github to track:
Catkin_make on the velodyne drivers fails in the windows 10 environemnt

How to cause Windbg to download the compressed versions of MS public symbols

Microsoft state here:
The Microsoft Symbol Server provides compressed versions of the symbol
files. The files have an underscore at the end of the filename’s
extension to indicate that they are compressed. For example, the PDB
for ntdll.dll is available as ntdll.pd_.
I have 2 questions here:
The more general question: How can I cause Windbg to prefer the compressed version of the symbols? This would result in massive bandwidth savings. (Compressing c:\Symbols on my computer resulted in a 68% reduction in size).
Sniffing the traffic reveals that the uncompressed version is tried first and then the compressed version (underscore at end of name).
and specific to MS Public Symbols: Are the compressed versions currently available at all? Trying to manually download a compressed versions of ntdll.pdb returns a 404 error.
>$ wget https://msdl.microsoft.com/download/symbols/ntdll.pdb/38A5841BD353770D9C800BF1AF6B17EB1/ntdll.pdb
...
ntdll.pdb 100%[=====================================================================================>] 1.46M 406KB/s in 4.4s
2018-11-11 01:16:56 (341 KB/s) - ‘ntdll.pdb’ saved [1534976/1534976]
>$ wget https://msdl.microsoft.com/download/symbols/ntdll.pdb/38A5841BD353770D9C800BF1AF6B17EB1/ntdll.pd_
....
HTTP request sent, awaiting response... 404 Not Found
2018-11-11 01:17:01 ERROR 404: Not Found.
Update:
I have now discovered that DbgHelp supports an option called SYMOPT_FAVOR_COMPRESSED which is explained as follows:
If there is both an uncompressed and a compressed file available, favor the compressed file. This option is good for slow connections.
The question now is how to enable this option in Windbg?
This option isn't documented in the officical Windbg documentation and setting it manually seems to only affect the UI level.
0:003> .symopt+ 0x800000
Symbol options are 0x830337:
0x00000001 - SYMOPT_CASE_INSENSITIVE
0x00000002 - SYMOPT_UNDNAME
0x00000004 - SYMOPT_DEFERRED_LOADS
0x00000010 - SYMOPT_LOAD_LINES
0x00000020 - SYMOPT_OMAP_FIND_NEAREST
0x00000100 - SYMOPT_NO_UNQUALIFIED_LOADS
0x00000200 - SYMOPT_FAIL_CRITICAL_ERRORS
0x00010000 - SYMOPT_AUTO_PUBLICS
0x00020000 - SYMOPT_NO_IMAGE_SEARCH
0x00800000 - SYMOPT_FAVOR_COMPRESSED
However inspecting the traffic using fiddler shows that the uncompressed version is still requested first.

net-snmp TUT:Writing a MIB Module doesn't work

I just follow the net-snmp tutorial step by step, I really can't get the right result.
here is the link
HERE
I'm facing the same problem, I even didn't pass the tutorial.
here are my details:
my configure command:
./configure --with-default-snmp-version="3" --with-sys-contact="##no.where" --with-sys-location="Unknown" --with-logfile="/var/log/snmpd.log" --with-persistent-directory="/var/net-snmp" --with-mib-modules="nstAgentModuleObject"
after configuration:
part of the ./configure output
checking for and configuring mib modules to use... nstAgentModuleObject default_modules.
nstAgentModuleObject default_modules snmpv3mibs mibII ucd_snmp notification notification-log-mib target agent_mibs agentx dism
and after all:
---------------------------------------------------------
Net-SNMP configuration summary:
---------------------------------------------------------
SNMP Versions Supported: 1 2c 3
Building for: linux
Net-SNMP Version: 5.7.2.1
Network transport support: Callback Unix Alias TCP UDP IPv4Base SocketBase TCPBase UDPIPv4Base UDPBase
SNMPv3 Security Modules: usm
Agent MIB code: nstAgentModuleObject default_modules => snmpv3mibs mibII ucd_snmp notification notification-log-mib target agent_mibs agentx disman/event disman/schedule utilities host
MYSQL Trap Logging: unavailable
Embedded Perl support: enabled
SNMP Perl modules: building -- embeddable
SNMP Python modules: disabled
Crypto support from: internal
Authentication support: MD5 SHA1
Encryption support: DES AES
Local DNSSEC validation: disabled
I used nm to check whether the function has been compiled into the library.
akamai#JNdev:~/Workspace/net-snmp-5.7.2.1/net-snmp-5.7.2.1/agent/.libs$ nm libnetsnmpmibs.so | grep init_nst
00000000000331c0 T init_nstAgentModuleObject

Build Curl on vc9/vc11 with release dynamic library with dynamic ssl, ssh2 and dynamic zlib

I am trying to build curl dll library with both zlib, ssh2 and openssl support
However when I specify release-dll-ssl-dll-ssh2-dll-zlib-dll
I get this list:
Usage: nmake /f makefile.vc9 CFG=<config> <target>
where <config> is one of:
release - release static library
release-ssl - release static library with ssl
release-zlib - release static library with zlib
release-ssl-zlib - release static library with ssl and zlib
release-ssl-ssh2-zlib - release static library with ssl, ssh2 and zlib
release-ssl-dll - release static library with dynamic ssl
release-zlib-dll - release static library with dynamic zlib
release-ssl-dll-zlib-dll - release static library with dynamic ssl and dynamic zlib
release-dll - release dynamic library
release-dll-ssl-dll - release dynamic library with dynamic ssl
release-dll-zlib-dll - release dynamic library with dynamic zlib
release-dll-ssl-dll-zlib-dll - release dynamic library with dynamic ssl and dynamic zlib
debug - debug static library
debug-ssl - debug static library with ssl
debug-zlib - debug static library with zlib
debug-ssl-zlib - debug static library with ssl and zlib
debug-ssl-ssh2-zlib - debug static library with ssl, ssh2 and zlib
debug-ssl-dll - debug static library with dynamic ssl
debug-zlib-dll - debug static library with dynamic zlib
debug-ssl-dll-zlib-dll - debug static library with dynamic ssl and dynamic zlib
debug-dll - debug dynamic library
debug-dll-ssl-dll - debug dynamic library with dynamic ssl
debug-dll-zlib-dll - debug dynamic library with dynamic zlib1
debug-dll-ssl-dll-zlib-dll - debug dynamic library with dynamic ssl and dynamic zlib
<target> can be left blank in which case all is assumed
Makefile.vc9(476) : fatal error U1050: please choose a valid configuration "release-dll-ssl-dll-zlib-dll-ssh2-dll"
Building with release-ssl-dll-zlib-dll works fine, but I also need sftp.
Why does this option not exist?
Is there a way around this?
The answer is: you can't
What you should do is build curl with ssl, ssh2 and zlib internally using CFG=release-ssl-ssh2-zlib.
Then use this patch to add the dlls to the link command. Note this patch is for VC10, but can easily be done on the vc9 makefile.
After the builds, you will need to add libssh2.lib in to lincurl.lib, if you want to build something against it (say PHP). That can be done with this command (set the paths to the your libssh2.lib and libcurl.lib):
lib.exe /OUT:libcurl_merged.lib libssh2.lib libcurl.lib
copy libcurl_merged.lib libcurl.lib
You can use non standard build script "Makefile.vc" form "winbuild" folder.
Example for x64 dynamics lib:
cd curl-src\winbuild
nmake /f Makefile.vc mode=dll VC=14 MACHINE=x64 DEBUG=no GEN_PDB=yes WITH_SSL=dll WITH_ZLIB=dll WITH_SSH2=dll
The builds will be in the top curl-src directory, builds\ directory, in
a directory named using the options given to the nmake call.

Resources