Yusuf Goren
Forum Replies Created
-
AuthorPosts
-
Yusuf GorenParticipant
Mike,
Thanks a lot for the prompt reply, I got it now!
Thanks,
YusufYusuf GorenParticipantDear Neil, Mike,
Here is what I understand from mBed page
(1) Pins 21-23 is for RF antenna only.
(2) Pins 24-31 is for programming purpose only (i.e. I cannot use them for bus/IO operations in development).
(3) Pin 1 is reserved for VIN, Pin 5 for reset, Pin 10 for ground, and Pin 12 for wake-up interrupt while Pin 8 and 14 are not connected (hence all these are out in development).
(4) Any pin not mentioned above can be used as digital/analog IO.Could you tell if these are correct? Am I missing/overstating anything?
Thanks a lot,
YusufYusuf GorenParticipantMike,
Found the problem! I was using
2015q4
for GCC ARM Embedded and now it compiles perfectly with2015q3
. Sorry about the trouble.Thanks,
Yusuf- This reply was modified 8 years, 10 months ago by Yusuf Goren.
Yusuf GorenParticipantMike,
First, I have tried to compile the mbed libraries using the arm-none-gcc that comes with Ubuntu, but that didn’t work (that was when I had to
sudo
the command). Then I downloaded the GCC ARM Embedded compiler that you linked on the Wiki page, but I forgot to remove sudo from the command. But after your comment on howsudo
shouldn’t be required, I removed the whole git library, recloned it and recompiled without sudo and it worked.Let me recap my final setup with the toolchain: I have the GCC ARM Embedded toolchain from
https://launchpad.net/gcc-arm-embedded
that is located in/home/yugoren/bin/arm-none-eabi-2015q4/
, the settings file (workspace_tools/private_settings.py
) readsGCC_ARM_PATH = "/home/yugoren/bin/arm-none-eabi-2015q4/bin"
The build using
python workspace_tools/build.py -m MTS_MDOT_F411RE -t GCC_ARM -c -j 0 --rtos
is successful (with
Build successes: * GCC_ARM::MTS_MDOT_F411RE
) but the make for the project usingpython workspace_tools/make.py -m MTS_MDOT_F411RE -t GCC_ARM -c -j 0 --rtos --source=/home/yugoren/OEA/git/multitech/mdot/ --build=/home/yugoren/OEA/git/multitech/mbed/build/loraTest/
fails with the error message
main.cpp:(.text.startup.main+0x28): undefined reference to "mDot::getId[abi:cxx11]()" main.cpp:(.text.startup.main+0x8c): undefined reference to "mDot::setNetworkName(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)" main.cpp:(.text.startup.main+0xaa): undefined reference to "mDot::setNetworkPassphrase(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)" main.cpp:(.text.startup.main+0x12a): undefined reference to "mDot::getReturnCodeString[abi:cxx11](long const&)" main.cpp:(.text.startup.main+0x1c0): undefined reference to "mDot::getReturnCodeString[abi:cxx11](long const&)" main.cpp:(.text.startup.main+0x240): undefined reference to "mDot::getReturnCodeString[abi:cxx11](long const&)" main.cpp:(.text.startup.main+0x26c): undefined reference to "mDot::getReturnCodeString[abi:cxx11](long const&)" main.cpp:(.text.startup.main+0x298): undefined reference to "mDot::getReturnCodeString[abi:cxx11](long const&)" /home/yugoren/OEA/git/multitech/mbed/build/loraTest/./main.o:main.cpp:(.text.startup.main+0x2c4): more undefined references to "mDot::getReturnCodeString[abi:cxx11](long const&)" follow
Thanks a lot,
YusufYusuf GorenParticipantMike,
1,2) Yes I did the build following the git page for mbed. I bumped into a problem with the private settings first time I was running
build.py
, that’s why I had usedsudo
all over the place.Now I recloned the git library (mbedmicro/mbed), recompiled with
build.py
, and remake withmake.py
and I have still the same errors.ls -lR
in the source directory yields/home/yugoren/OEA/git/multitech/mdot/: total 376 -rw-rw-r-- 1 yugoren yugoren 338038 Sep 9 12:08 libmDot-0.0.9-1-ge7286ba-GCC_ARM.a -rw-rw-r-- 1 yugoren yugoren 4380 Jan 22 10:25 main.cpp -rw-rw-r-- 1 yugoren yugoren 29792 Sep 9 12:07 mDot.h drwxrwxr-x 2 yugoren yugoren 4096 Jan 22 10:00 MTS-Utils /home/yugoren/OEA/git/multitech/mdot/MTS-Utils: total 20 -rw-rw-r-- 1 yugoren yugoren 5997 Sep 9 12:07 MTSCircularBuffer.h -rw-rw-r-- 1 yugoren yugoren 3465 Sep 9 12:07 MTSLog.h -rw-rw-r-- 1 yugoren yugoren 3104 Sep 9 12:07 MTSText.h -rw-rw-r-- 1 yugoren yugoren 1049 Sep 9 12:07 Utils.h
Thanks a lot,
YusufYusuf GorenParticipantMike,
Here’s the `main.cpp’ file. It’s the LoRa Connect Example code here:
https://developer.mbed.org/teams/MultiTech/code/mDot_LoRa_Connect_Example/#include "mbed.h" #include "mDot.h" #include "MTSLog.h" #include <string> #include <vector> #include <algorithm> // these options must match the settings on your Conduit // uncomment the following lines and edit their values to match your configuration static std::string config_network_name = "oeacnetw"; static std::string config_network_pass = "oeacnetw"; static uint8_t config_frequency_sub_band = 7; int main() { int32_t ret; mDot* dot; std::vector<uint8_t> data; std::string data_str = "hello!"; // get a mDot handle dot = mDot::getInstance(); // print library version information logInfo("version: %s", dot->getId().c_str()); //******************************************* // configuration //******************************************* // reset to default config so we know what state we're in dot->resetConfig(); dot->setLogLevel(mts::MTSLog::INFO_LEVEL); // set up the mDot with our network information: frequency sub band, network name, and network password // these can all be saved in NVM so they don't need to be set every time - see mDot::saveConfig() // frequency sub band is only applicable in the 915 (US) frequency band // if using a MultiTech Conduit gateway, use the same sub band as your Conduit (1-8) - the mDot will use the 8 channels in that sub band // if using a gateway that supports all 64 channels, use sub band 0 - the mDot will use all 64 channels logInfo("setting frequency sub band"); if ((ret = dot->setFrequencySubBand(config_frequency_sub_band)) != mDot::MDOT_OK) { logError("failed to set frequency sub band %d:%s", ret, mDot::getReturnCodeString(ret).c_str()); } logInfo("setting network name"); if ((ret = dot->setNetworkName(config_network_name)) != mDot::MDOT_OK) { logError("failed to set network name %d:%s", ret, mDot::getReturnCodeString(ret).c_str()); } logInfo("setting network password"); if ((ret = dot->setNetworkPassphrase(config_network_pass)) != mDot::MDOT_OK) { logError("failed to set network password %d:%s", ret, mDot::getReturnCodeString(ret).c_str()); } // a higher spreading factor allows for longer range but lower throughput // in the 915 (US) frequency band, spreading factors 7 - 10 are available // in the 868 (EU) frequency band, spreading factors 7 - 12 are available logInfo("setting TX spreading factor"); if ((ret = dot->setTxDataRate(mDot::SF_10)) != mDot::MDOT_OK) { logError("failed to set TX datarate %d:%s", ret, mDot::getReturnCodeString(ret).c_str()); } // request receive confirmation of packets from the gateway logInfo("enabling ACKs"); if ((ret = dot->setAck(1)) != mDot::MDOT_OK) { logError("failed to enable ACKs %d:%s", ret, mDot::getReturnCodeString(ret).c_str()); } // save this configuration to the mDot's NVM logInfo("saving config"); if (! dot->saveConfig()) { logError("failed to save configuration"); } //******************************************* // end of configuration //******************************************* // attempt to join the network logInfo("joining network"); while ((ret = dot->joinNetwork()) != mDot::MDOT_OK) { logError("failed to join network %d:%s", ret, mDot::getReturnCodeString(ret).c_str()); // in the 868 (EU) frequency band, we need to wait until another channel is available before transmitting again osDelay(std::max((uint32_t)1000, (uint32_t)dot->getNextTxMs())); } // format data for sending to the gateway for (std::string::iterator it = data_str.begin(); it != data_str.end(); it++) data.push_back((uint8_t) *it); while (true) { // send the data to the gateway if ((ret = dot->send(data)) != mDot::MDOT_OK) { logError("failed to send", ret, mDot::getReturnCodeString(ret).c_str()); } else { logInfo("successfully sent data to gateway"); } // in the 868 (EU) frequency band, we need to wait until another channel is available before transmitting again osDelay(std::max((uint32_t)5000, (uint32_t)dot->getNextTxMs())); } return 0; }
Thanks,
Yusuf- This reply was modified 8 years, 10 months ago by Yusuf Goren.
Yusuf GorenParticipantMike,
I did downloaded libmDot-0.0.9-1 (270) from the developer page and that’s where
main.cpp
lives. Just to make sure, my directory tree looks like this/home/yugoren/OEA/git/multitech/mdot ├── libmDot-0.0.9-1-ge7286ba-GCC_ARM.a ├── main.cpp ├── mDot.h └── MTS-Utils ├── MTSCircularBuffer.h ├── MTSLog.h ├── MTSText.h └── Utils.h
I have also tried renaming the archive to `libmDot.a’ with no avail.
Thanks,
YusufYusuf GorenParticipantI’m having some related (I think) problems with offline builds.
I have followed all the steps in the Wiki page, but when I want to build my own project (which is nothing but the LoRa Connect example) I get the following error:
main.cpp:(.text.startup.main+0x18): undefined reference to "mDot::getId[abi:cxx11]()" main.cpp:(.text.startup.main+0x7e): undefined reference to "mDot::setNetworkName(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)" main.cpp:(.text.startup.main+0x9c): undefined reference to "mDot::setNetworkPassphrase(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)" main.cpp:(.text.startup.main+0x132): undefined reference to "mDot::getReturnCodeString[abi:cxx11](long const&)" main.cpp:(.text.startup.main+0x20e): undefined reference to "mDot::getReturnCodeString[abi:cxx11](long const&)" main.cpp:(.text.startup.main+0x272): undefined reference to "mDot::getReturnCodeString[abi:cxx11](long const&)" main.cpp:(.text.startup.main+0x29c): undefined reference to "mDot::getReturnCodeString[abi:cxx11](long const&)" main.cpp:(.text.startup.main+0x2c6): undefined reference to "mDot::getReturnCodeString[abi:cxx11](long const&)"
I have the production library from the developer site and I’m invoking the build as
sudo python workspace_tools/make.py -m MTS_MDOT_F411RE -t GCC_ARM -c -j 0 --rtos --source=/home/yugoren/OEA/git/multitech/mdot/ --build=/home/yugoren/OEA/git/multitech/mbed/build/loraTest/
Could you tell me why the code is not compiling?
Thanks!
-
AuthorPosts