This utility creates SVD files from the Texas-Instruments XML (called TIXML from now on) device and peripheral descriptor files.
Device descriptor files are generally found in the ccsv8/ccs_base/common/targetdb/devices directory of a TI Code Composer installation directory. They contain the names and base addresses of all of the device's peripherals, as well as a the relative path of each peripheral's descriptor file.
Peripheral descriptor files are generally found in the ccsv8/ccs_base/common/targetdb/Modules directory of a TI Code Composer installation directory. They contain the names and addresses of all of the registers belonging to a peripheral.
Note: tixml2svd requires you to first remove any byte-order-mark (BOM) from your device file. This is a sequence of invisible bytes that appears at the beginning of certain text files.
Here is an one way to copy the device and Module directories into a local work directory, convert the line endings of all files to unix platform line endings, and remove the BOM:
mkdir tmp
cp -r /media/sf_ti/ccsv8/ccs_base/common/targetdb/devices tmp
cp -r /media/sf_ti/ccsv8/ccs_base/common/targetdb/Modules tmp
find tmp -type f -exec dos2unix \{\} \;
cd tmp
find devices -name \*.xml -exec sed -i '1s/^\xEF\xBB\xBF//' \{\} \;
Now, process a device file with something like tixml2svd -z -i devices/cc2652r1f.xml > cc2652r1f.svd
. If this does not work, try one
of the device peripherals all by itself, with something like
tixml2svd -p -i Modules/CC26xx/CC26x0R2F/IOC.xml > IOC.svd
.
I have tested this code on almost all Code Composer version 8 MSP430, MSP432, and CC* wireless devices. When provided with the -z option, it generates a sanitized SVD file that can be used by svd2rust to generate peripheral access code.
Some of the CCSv8 device files contain errors, ununique peripheral, register or field names, or ununique enumeration values. With the sanitize option, tixml2svd deals with most of these problems automatically, but there are a few exceptions. The following patch file makes it possible to apply tixml2svd to all 644 tixml device files on my machine (see below), and successfully generate rust code if rust warnings are permitted by your svd2rust library. Many rust code libraries generated by tixml2svd and svd2rust compile without warnings, but not all of them. The tixml files for some devices may contain mistakes that the compiler is warning you about.
For the moment, tixml2svd does not generate SVD device headers. By default, it adds a fake device header that you must modify by hand. This will require a little research on your part. Here is an example of the information you will need to dig up (the following header provides sufficient information for the Segger Ozone debugger).
<?xml version="1.0" encoding="UTF-8"?>
<device xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="1.1" xs:noNamespaceSchemaLocation="CMSIS-SVD_Schema_1_0.xsd">
<name>CC26x0</name>
<version>2.3</version>
<description>SimpleLink CC26xx Ultra-low power wireless MCU</description>
<cpu>
<name>CM3</name>
<revision>r2p1</revision>
<endian>little</endian>
<mpuPresent>false</mpuPresent>
<fpuPresent>false</fpuPresent>
<nvicPrioBits>3</nvicPrioBits>
<vendorSystickConfig>false</vendorSystickConfig>
</cpu>
<addressUnitBits>8</addressUnitBits>
<width>32</width>
<size>32</size>
<access>read-write</access>
<resetMask>0xFFFFFFFF</resetMask>
This is a list of devices that, after patching, can be converted to SVD:
cc1310f128, cc1310f32, cc1310f64, cc1312r1f3, cc1350f128, cc1352p1f3, cc1352r1f3, cc2538nf11, cc2538nf23, cc2538nf53, cc2538sf23, cc2538sf53, cc2620f128, cc2630f128, cc2640f128, cc2640r2f, cc2642r1f, cc2650f128, cc2652r1f, CC430F5123, CC430F5125, CC430F5133, CC430F5135, CC430F5137, CC430F5143, CC430F5145, CC430F5147, CC430F6125, CC430F6126, CC430F6127, CC430F6135, CC430F6137, CC430F6143, CC430F6145, CC430F6147, cm2538sf23, cm2538sf53, MSP430AFE221, MSP430AFE222, MSP430AFE223, MSP430AFE231, MSP430AFE232, MSP430AFE233, MSP430AFE251, MSP430AFE252, MSP430AFE253, MSP430BT5190, MSP430C091, MSP430C092, MSP430C1111, MSP430C111, MSP430C1121, MSP430C112, MSP430C1331, MSP430C1351, MSP430C311S, MSP430C312, MSP430C313, MSP430C314, MSP430C315, MSP430C323, MSP430C325, MSP430C336, MSP430C337, MSP430C412, MSP430C413, MSP430CG4616, MSP430CG4617, MSP430CG4618, MSP430CG4619, MSP430E112, MSP430E313, MSP430E315, MSP430E325, MSP430E337, MSP430F1101A, MSP430F1101, MSP430F110, MSP430F1111A, MSP430F1111, MSP430F1121A, MSP430F1121, MSP430F1122, MSP430F112, MSP430F1132, MSP430F1222, MSP430F122, MSP430F1232, MSP430F123, MSP430F133, MSP430F135, MSP430F1471, MSP430F147, MSP430F1481, MSP430F148, MSP430F1491, MSP430F149, MSP430F155, MSP430F156, MSP430F157, MSP430F1610, MSP430F1611, MSP430F1612, MSP430F167, MSP430F168, MSP430F169, MSP430F2001, MSP430F2002, MSP430F2003, MSP430F2011, MSP430F2012, MSP430F2013, MSP430F2101, MSP430F2111, MSP430F2112, MSP430F2121, MSP430F2122, MSP430F2131, MSP430F2132, MSP430F2232, MSP430F2234, MSP430F2252, MSP430F2254, MSP430F2272, MSP430F2274, MSP430F2330, MSP430F233, MSP430F2350, MSP430F235, MSP430F2370, MSP430F2410, MSP430F2416, MSP430F2417, MSP430F2418, MSP430F2419, MSP430F2471, MSP430F247, MSP430F2481, MSP430F248, MSP430F2491, MSP430F249, MSP430F2616, MSP430F2617, MSP430F2618, MSP430F2619, MSP430F412, MSP430F4132, MSP430F413, MSP430F4152, MSP430F415, MSP430F417, MSP430F423A, MSP430F423, MSP430F4250, MSP430F425A, MSP430F425, MSP430F4260, MSP430F4270, MSP430F427A, MSP430F427, MSP430F4351, MSP430F435, MSP430F4361, MSP430F436, MSP430F4371, MSP430F437, MSP430F438, MSP430F439, MSP430F447, MSP430F4481, MSP430F448, MSP430F4491, MSP430F449, MSP430F46161, MSP430F4616, MSP430F46171, MSP430F4617, MSP430F46181, MSP430F4618, MSP430F46191, MSP430F4619, MSP430F47126, MSP430F47127, MSP430F47163, MSP430F47166, MSP430F47167, MSP430F47173, MSP430F47176, MSP430F47177, MSP430F47183, MSP430F47186, MSP430F47187, MSP430F47193, MSP430F47196, MSP430F47197, MSP430F477, MSP430F4783, MSP430F4784, MSP430F478, MSP430F4793, MSP430F4794, MSP430F479, MSP430F5131, MSP430F5132, MSP430F5151, MSP430F5152, MSP430F5171, MSP430F5172, MSP430F5212, MSP430F5213, MSP430F5214, MSP430F5217, MSP430F5218, MSP430F5219, MSP430F5222, MSP430F5223, MSP430F5224, MSP430F5227, MSP430F5228, MSP430F5229, MSP430F5232, MSP430F5234, MSP430F5237, MSP430F5239, MSP430F5242, MSP430F5244, MSP430F5247, MSP430F5249, MSP430F5252, MSP430F5253, MSP430F5254, MSP430F5255, MSP430F5256, MSP430F5257, MSP430F5258, MSP430F5259, MSP430F5304, MSP430F5308, MSP430F5309, MSP430F5310, MSP430F5324, MSP430F5325, MSP430F5326, MSP430F5327, MSP430F5328, MSP430F5329, MSP430F5333, MSP430F5335, MSP430F5336, MSP430F5338, MSP430F5340, MSP430F5341, MSP430F5342, MSP430F5358, MSP430F5359, MSP430F5418A, MSP430F5418, MSP430F5419A, MSP430F5419, MSP430F5435A, MSP430F5435, MSP430F5436A, MSP430F5436, MSP430F5437A, MSP430F5437, MSP430F5438A, MSP430F5438, MSP430F5500, MSP430F5501, MSP430F5502, MSP430F5503, MSP430F5504, MSP430F5505, MSP430F5506, MSP430F5507, MSP430F5508, MSP430F5509, MSP430F5510, MSP430F5513, MSP430F5514, MSP430F5515, MSP430F5517, MSP430F5519, MSP430F5521, MSP430F5522, MSP430F5524, MSP430F5525, MSP430F5526, MSP430F5527, MSP430F5528, MSP430F5529, MSP430F5630, MSP430F5631, MSP430F5632, MSP430F5633, MSP430F5634, MSP430F5635, MSP430F5636, MSP430F5637, MSP430F5638, MSP430F5658, MSP430F5659, MSP430F6433, MSP430F6435, MSP430F6436, MSP430F6438, MSP430F6458, MSP430F6459, MSP430F6630, MSP430F6631, MSP430F6632, MSP430F6633, MSP430F6634, MSP430F6635, MSP430F6636, MSP430F6637, MSP430F6638, MSP430F6658, MSP430F6659, MSP430F6720A, MSP430F6720, MSP430F6721A, MSP430F6721, MSP430F6723A, MSP430F6723, MSP430F6724A, MSP430F6724, MSP430F6725A, MSP430F6725, MSP430F6726A, MSP430F6726, MSP430F6730A, MSP430F6730, MSP430F6731A, MSP430F6731, MSP430F6733A, MSP430F6733, MSP430F6734A, MSP430F6734, MSP430F6735A, MSP430F6735, MSP430F6736A, MSP430F6736, MSP430F67451A, MSP430F67451, MSP430F6745A, MSP430F6745, MSP430F67461A, MSP430F67461, MSP430F6746A, MSP430F6746, MSP430F67471A, MSP430F67471, MSP430F6747A, MSP430F6747, MSP430F67481A, MSP430F67481, MSP430F6748A, MSP430F6748, MSP430F67491A, MSP430F67491, MSP430F6749A, MSP430F6749, MSP430F67621A, MSP430F67621, MSP430F67641A, MSP430F67641, MSP430F67651A, MSP430F67651, MSP430F6765A, MSP430F6765, MSP430F67661A, MSP430F67661, MSP430F6766A, MSP430F6766, MSP430F67671A, MSP430F67671, MSP430F6767A, MSP430F6767, MSP430F67681A, MSP430F67681, MSP430F6768A, MSP430F6768, MSP430F67691A, MSP430F67691, MSP430F6769A, MSP430F6769, MSP430F67751A, MSP430F67751, MSP430F6775A, MSP430F6775, MSP430F67761A, MSP430F67761, MSP430F6776A, MSP430F6776, MSP430F67771A, MSP430F67771, MSP430F6777A, MSP430F6777, MSP430F67781A, MSP430F67781, MSP430F6778A, MSP430F6778, MSP430F67791A, MSP430F67791, MSP430F6779A, MSP430F6779, MSP430FE4232, MSP430FE423A, MSP430FE423, MSP430FE4242, MSP430FE4252, MSP430FE425A, MSP430FE425, MSP430FE4272, MSP430FE427A, MSP430FE427, MSP430FG4250, MSP430FG4260, MSP430FG4270, MSP430FG437, MSP430FG438, MSP430FG439, MSP430FG4616, MSP430FG4617, MSP430FG4618, MSP430FG4619, MSP430FG477, MSP430FG478, MSP430FG479, MSP430FG6425, MSP430FG6426, MSP430FG6625, MSP430FG6626, MSP430FR2000, MSP430FR2032, MSP430FR2033, MSP430FR2100, MSP430FR2110, MSP430FR2111, msp430fr2310, msp430fr2311, MSP430FR2422, MSP430FR2433, MSP430FR2512, MSP430FR2522, MSP430FR2532, MSP430FR2533, MSP430FR2632, MSP430FR2633, MSP430FR4131, MSP430FR4132, MSP430FR4133, MSP430FR5041, MSP430FR50431, MSP430FR5043, MSP430FR5720, MSP430FR5721, MSP430FR5722, MSP430FR5723, MSP430FR5724, MSP430FR5725, MSP430FR5726, MSP430FR5727, MSP430FR5728, MSP430FR5729, MSP430FR5730, MSP430FR5731, MSP430FR5732, MSP430FR5733, MSP430FR5734, MSP430FR5735, MSP430FR5736, MSP430FR5737, MSP430FR5738, MSP430FR5739, MSP430FR58471, MSP430FR5847, MSP430FR5848, MSP430FR5849, MSP430FR5857, MSP430FR5858, MSP430FR5859, MSP430FR58671, MSP430FR5867, MSP430FR5868, MSP430FR5869, MSP430FR5870, MSP430FR58721, MSP430FR5872, MSP430FR5887, MSP430FR5888, MSP430FR58891, MSP430FR5889, MSP430FR59221, MSP430FR5922, MSP430FR59471, MSP430FR5947, MSP430FR5948, MSP430FR5949, MSP430FR5957, MSP430FR5958, MSP430FR5959, msp430fr5962, msp430fr5964, MSP430FR5967, MSP430FR5968, MSP430FR59691, MSP430FR5969, MSP430FR5970, MSP430FR59721, MSP430FR5972, MSP430FR5986, MSP430FR5987, MSP430FR5988, MSP430FR59891, MSP430FR5989, msp430fr5992, MSP430FR59941, msp430fr5994, MSP430FR6035, MSP430FR60371, MSP430FR6037, MSP430FR6041, MSP430FR60431, MSP430FR6043, MSP430FR6045, MSP430FR60471, MSP430FR6047, MSP430FR6820, MSP430FR68221, MSP430FR6822, MSP430FR6870, MSP430FR68721, MSP430FR6872, MSP430FR6877, MSP430FR68791, MSP430FR6879, MSP430FR6887, MSP430FR6888, MSP430FR68891, MSP430FR6889, MSP430FR6920, MSP430FR69221, MSP430FR6922, MSP430FR69271, MSP430FR6927, MSP430FR6928, MSP430FR6970, MSP430FR69721, MSP430FR6972, MSP430FR6977, MSP430FR69791, MSP430FR6979, MSP430FR6987, MSP430FR6988, MSP430FR69891, MSP430FR6989, MSP430FW423, MSP430FW425, MSP430FW427, MSP430FW428, MSP430FW429, MSP430G2001, MSP430G2101, MSP430G2102, MSP430G2111, MSP430G2112, MSP430G2113, MSP430G2121, MSP430G2131, MSP430G2132, MSP430G2152, MSP430G2153, MSP430G2201, MSP430G2202, MSP430G2203, MSP430G2210, MSP430G2211, MSP430G2212, MSP430G2213, MSP430G2221, MSP430G2230, MSP430G2231, MSP430G2232, MSP430G2233, MSP430G2252, MSP430G2253, MSP430G2302, MSP430G2303, MSP430G2312, MSP430G2313, MSP430G2332, MSP430G2333, MSP430G2352, MSP430G2353, MSP430G2402, MSP430G2403, MSP430G2412, MSP430G2413, MSP430G2432, MSP430G2433, MSP430G2444, MSP430G2452, MSP430G2453, MSP430G2513, MSP430G2533, MSP430G2544, MSP430G2553, MSP430G2744, MSP430G2755, MSP430G2855, MSP430G2955, MSP430i2020, MSP430i2021, MSP430i2030, MSP430i2031, MSP430i2040, MSP430i2041, MSP430L092, MSP430P112, MSP430P313, MSP430P315S, MSP430P315, MSP430P325, MSP430P337, MSP430SL5438A, MSP430TCH5E, msp432e401y, msp432e411y, msp432p4011, msp432p401m, msp432p401r, msp432p401v, msp432p401y, msp432p4111, msp432p411v, msp432p411y, RF430F5144, RF430F5155, RF430F5175, RF430FRL152H, RF430FRL153H, RF430FRL154H