Skip to content

Instantly share code, notes, and snippets.

@mikepurvis
Last active December 23, 2015 01:09
Show Gist options
  • Save mikepurvis/6558326 to your computer and use it in GitHub Desktop.
Save mikepurvis/6558326 to your computer and use it in GitHub Desktop.
Static analysis for size of the resulting firmware binary created by this example: https://github.com/mikepurvis/rosserial_leonardo_example
$ strings build/rosserial_leonardo_example/firmware/example.elf
std_msgs/Time
cd7166c74c552c311fbcc2fe5a7bc289
rosserial_msgs/TopicInfo
63aa5e8f1bdd6f35c69fe1a1b9d28e9f
rosserial_msgs/Log
11abd731c25933261cd6183bd12d6295
9f0e98bda65981986ddf53afa7a40e49
std_msgs/Bool
8b94c1b53db61fb6aed406028ad6332a
std_msgs/UInt32
304a39449588c7f8ce2df6e8001c5fce
Message from device dropped: message larger than buffer.
/sense
reset
rosserial_msgs/RequestParam
$ nm --demangle --print-size --size-sort --reverse-sort build/rosserial_leonardo_example/firmware/example.elf
000011dc 000003bc W ros::NodeHandle_<Leonardo, 5, 5, 200, 200>::spinOnce()
00000b0a 00000278 W rosserial_msgs::RequestParamResponse::deserialize(unsigned char*)
00001d80 0000025e T __vector_11
00000922 000001e8 W rosserial_msgs::RequestParamResponse::serialize(unsigned char*) const
0080030e 000001e5 B nh
00000412 000001cc W rosserial_msgs::TopicInfo::deserialize(unsigned char*)
00002966 00000196 T realloc
00000ee4 00000190 W ros::NodeHandle_<Leonardo, 5, 5, 200, 200>::negotiateTopics()
00002700 00000134 T malloc
00002834 00000132 T free
000007b4 00000122 W rosserial_msgs::TopicInfo::serialize(unsigned char*) const
000002f6 00000110 W std_msgs::Time::deserialize(unsigned char*)
00001b78 00000108 T USB_Send(unsigned char, void const*, int)
0000162c 00000106 W ros::NodeHandle_<Leonardo, 5, 5, 200, 200>::publish(int, ros::Msg const*)
0000227c 000000ea T Keyboard_::press(unsigned char)
00001112 000000ca W ros::NodeHandle_<Leonardo, 5, 5, 200, 200>::syncTime(unsigned char*)
00001ff2 000000c2 T __vector_10
00001924 000000b6 W CDC_Setup(Setup&)
0000250a 000000ac T init
00001732 000000aa t global constructors keyed to ros::normalizeSecNSec(unsigned long&, unsigned long&)
00001074 0000009e W ros::NodeHandle_<Leonardo, 5, 5, 200, 200>::setNow(ros::Time&)
000021ea 00000092 T Keyboard_::release(unsigned char)
000006ca 00000092 W std_msgs::UInt32::deserialize(unsigned char*)
000023c8 00000090 T __vector_23
00001c96 0000008c T USB_SendControl(unsigned char, void const*, int)
00001a8a 00000084 T USB_Recv(unsigned char, void*, int)
000001d3 00000080 T _asciimap
000005ea 0000007a W rosserial_msgs::Log::deserialize(unsigned char*)
00000155 00000065 T _hidReportDescriptor
00000e8e 00000056 W ros::NodeHandle_<Leonardo, 5, 5, 200, 200>::requestSyncTime()
00001598 00000050 T loop
00000df6 0000004e W ros::NodeHandle_<Leonardo, 5, 5, 200, 200>::advertise(ros::Publisher&)
00002474 0000004c T micros
000008d6 0000004c W rosserial_msgs::Log::serialize(unsigned char*) const
000018c0 0000004c T Serial_::accept()
00000e44 0000004a T setup
000024c0 0000004a T delay
0000186e 0000004a T Serial_::write(unsigned char)
00002380 00000048 T Print::write(unsigned char const*, unsigned int)
000002b0 00000046 W std_msgs::Time::serialize(unsigned char*) const
00001828 00000046 T Serial_::read()
00800514 00000044 B cdc_rx_buffer
000000ac 00000042 T _cdcInterface
00000db4 00000042 W bool ros::NodeHandle_<Leonardo, 5, 5, 200, 200>::subscribe<std_msgs::Bool>(ros::Subscriber<std_msgs::Bool>&)
000020b4 0000003c T USBDevice_::attach()
00002186 0000003c W HID_Setup(Setup&)
000015e8 0000003a W ros::NodeHandle_<Leonardo, 5, 5, 200, 200>::log(char, char const*)
000020f2 00000038 T Keyboard_::write(unsigned char)
00001b42 00000036 T USB_SendSpace(unsigned char)
00001b0e 00000034 T USB_Recv(unsigned char)
00002152 00000034 W HID_SendReport(unsigned char, void const*, int)
00001d22 00000032 T USB_RecvControl(void*, int)
000017f8 00000030 T Serial_::peek()
000019dc 0000002e t global constructors keyed to cdc_rx_buffer
00001d54 0000002c T SendInterfaces()
00001a0a 00000026 T main
000006a4 00000026 W std_msgs::UInt32::serialize(unsigned char*) const
00001a64 00000026 T USB_Available(unsigned char)
00000d82 00000022 W ros::Publisher::publish(ros::Msg const*)
000000f2 00000022 T STRING_IPRODUCT
00002458 0000001c T millis
000021ce 0000001c T Keyboard_::releaseAll()
000017dc 0000001c T Serial_::available()
008002ae 0000001c d rosserial_msgs::REQUESTPARAM
00000768 0000001a T reset_cb(std_msgs::Bool const&)
00001a3a 0000001a T Recv(unsigned char volatile*, unsigned char)
00002366 0000001a t global constructors keyed to Mouse
000001ba 00000019 T _hidInterface
0000212a 00000018 W HID_GetInterface(unsigned char*)
0000190c 00000018 W CDC_GetInterface(unsigned char*)
00000114 00000018 T STRING_IMANUFACTURER
00001c80 00000016 T InitControl(int)
00000782 00000014 W ros::Subscriber<std_msgs::Bool>::callback(unsigned char*)
00001fde 00000014 T USB_Flush(unsigned char)
00002afc 00000012 T memcpy
008002ee 00000012 V vtable for Serial_
0000013e 00000012 T USB_DeviceDescriptorA
0000012c 00000012 T USB_DeviceDescriptor
00000da4 00000010 W Leonardo::init()
00001a54 00000010 W LockEP::LockEP(unsigned char)
00002142 00000010 W HID_GetDescriptor(int)
00800300 0000000e V vtable for Keyboard_
0000067c 0000000e W std_msgs::Bool::serialize(unsigned char*) const
0000068a 0000000e W std_msgs::Bool::deserialize(unsigned char*)
00800558 0000000e B Serial
00800503 0000000d B reset_sub
008002ca 0000000c V vtable for std_msgs::UInt32
0080028a 0000000c V vtable for std_msgs::Time
008002e2 0000000c V vtable for std_msgs::Bool
008002d6 0000000c V vtable for ros::Subscriber<std_msgs::Bool>
0080027e 0000000c V vtable for rosserial_msgs::TopicInfo
00800296 0000000c V vtable for rosserial_msgs::Log
008002a2 0000000c V vtable for rosserial_msgs::RequestParamResponse
000021c2 0000000c T Keyboard_::sendReport(KeyReport*)
00800570 0000000c B Keyboard
008004f9 0000000a B num_pub
00800274 0000000a V vtable for ros::NodeHandle_<Leonardo, 5, 5, 200, 200>
000007aa 0000000a W ros::NodeHandle_<Leonardo, 5, 5, 200, 200>::connected()
00001622 0000000a W ros::NodeHandle_<Leonardo, 5, 5, 200, 200>::logerror(char const*)
00001a30 0000000a t WaitIN()
000018b8 00000008 T Serial_::flush()
00000796 00000008 W ros::Subscriber<std_msgs::Bool>::getEndpointType()
0080026a 00000008 d _usbLineInfo
008004f3 00000006 B num_msg
0000075c 00000006 W std_msgs::UInt32::getType()
00000762 00000006 W std_msgs::UInt32::getMD5()
00000406 00000006 W std_msgs::Time::getType()
0000040c 00000006 W std_msgs::Time::getMD5()
00000698 00000006 W std_msgs::Bool::getType()
0000069e 00000006 W std_msgs::Bool::getMD5()
000007a4 00000006 W ros::Subscriber<std_msgs::Bool>::getMsgMD5()
0000079e 00000006 W ros::Subscriber<std_msgs::Bool>::getMsgType()
000005de 00000006 W rosserial_msgs::TopicInfo::getType()
000005e4 00000006 W rosserial_msgs::TopicInfo::getMD5()
00000664 00000006 W rosserial_msgs::Log::getType()
0000066a 00000006 W rosserial_msgs::Log::getMD5()
00000670 00000006 W rosserial_msgs::RequestParamResponse::getType()
00000676 00000006 W rosserial_msgs::RequestParamResponse::getMD5()
00000150 00000005 T _initEndpoints
0080057c 00000004 B timer0_overflow_count
00800580 00000004 B timer0_millis
00800510 00000004 b loop::last_tick
000000ee 00000004 T STRING_LANGUAGE
00800569 00000002 B _cmark
0080056b 00000002 B _cend
00800264 00000002 D __malloc_margin
00800266 00000002 D __malloc_heap_start
00800268 00000002 D __malloc_heap_end
00800587 00000002 B __flp
00800585 00000002 B __brkval
000019da 00000002 T Serial_::begin(unsigned int)
000020f0 00000002 t global constructors keyed to TxLEDPulse
00800584 00000001 b timer0_fract
00800568 00000001 B _usbConfiguration
00800272 00000001 D _hid_protocol
00800273 00000001 D _hid_idle
0080056d 00000001 B _cdcComposite
0080056e 00000001 B USBDevice
00800566 00000001 B TxLEDPulse
00800567 00000001 B RxLEDPulse
0080056f 00000001 B Mouse
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment