1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676106771067810679106801068110682106831068410685106861068710688106891069010691106921069310694106951069610697106981069910700107011070210703107041070510706107071070810709107101071110712107131071410715107161071710718107191072010721107221072310724107251072610727107281072910730107311073210733107341073510736107371073810739107401074110742107431074410745107461074710748107491075010751107521075310754107551075610757107581075910760107611076210763107641076510766107671076810769107701077110772107731077410775107761077710778107791078010781107821078310784107851078610787107881078910790107911079210793107941079510796107971079810799108001080110802108031080410805108061080710808108091081010811108121081310814108151081610817108181081910820108211082210823108241082510826108271082810829108301083110832108331083410835108361083710838108391084010841108421084310844108451084610847108481084910850108511085210853108541085510856108571085810859108601086110862108631086410865108661086710868108691087010871108721087310874108751087610877108781087910880108811088210883108841088510886108871088810889108901089110892108931089410895108961089710898108991090010901109021090310904109051090610907109081090910910109111091210913109141091510916109171091810919109201092110922109231092410925109261092710928109291093010931109321093310934109351093610937109381093910940109411094210943109441094510946109471094810949109501095110952109531095410955109561095710958109591096010961109621096310964109651096610967109681096910970109711097210973109741097510976109771097810979109801098110982109831098410985109861098710988109891099010991109921099310994109951099610997109981099911000110011100211003110041100511006110071100811009110101101111012110131101411015110161101711018110191102011021110221102311024110251102611027110281102911030110311103211033110341103511036110371103811039110401104111042110431104411045110461104711048110491105011051110521105311054110551105611057110581105911060110611106211063110641106511066110671106811069110701107111072110731107411075110761107711078110791108011081110821108311084110851108611087110881108911090110911109211093110941109511096110971109811099111001110111102111031110411105111061110711108111091111011111111121111311114111151111611117111181111911120111211112211123111241112511126111271112811129111301113111132111331113411135111361113711138111391114011141111421114311144111451114611147111481114911150111511115211153111541115511156111571115811159111601116111162111631116411165111661116711168111691117011171111721117311174111751117611177111781117911180111811118211183111841118511186111871118811189111901119111192111931119411195111961119711198111991120011201112021120311204112051120611207112081120911210112111121211213112141121511216112171121811219112201122111222112231122411225112261122711228112291123011231112321123311234112351123611237112381123911240112411124211243112441124511246112471124811249112501125111252112531125411255112561125711258112591126011261112621126311264112651126611267112681126911270112711127211273112741127511276112771127811279112801128111282112831128411285112861128711288112891129011291112921129311294112951129611297112981129911300113011130211303113041130511306113071130811309113101131111312113131131411315113161131711318113191132011321113221132311324113251132611327113281132911330113311133211333113341133511336113371133811339113401134111342113431134411345113461134711348113491135011351113521135311354113551135611357113581135911360113611136211363113641136511366113671136811369113701137111372113731137411375113761137711378113791138011381113821138311384113851138611387113881138911390113911139211393113941139511396113971139811399114001140111402114031140411405114061140711408114091141011411114121141311414114151141611417114181141911420114211142211423114241142511426114271142811429114301143111432114331143411435114361143711438114391144011441114421144311444114451144611447114481144911450114511145211453114541145511456114571145811459114601146111462114631146411465114661146711468114691147011471114721147311474114751147611477114781147911480114811148211483114841148511486114871148811489114901149111492114931149411495114961149711498114991150011501115021150311504115051150611507115081150911510115111151211513115141151511516115171151811519115201152111522115231152411525115261152711528115291153011531115321153311534115351153611537115381153911540115411154211543115441154511546115471154811549115501155111552115531155411555115561155711558115591156011561115621156311564115651156611567115681156911570115711157211573115741157511576115771157811579115801158111582115831158411585115861158711588115891159011591115921159311594115951159611597115981159911600116011160211603116041160511606116071160811609116101161111612116131161411615116161161711618116191162011621116221162311624116251162611627116281162911630116311163211633116341163511636116371163811639116401164111642116431164411645116461164711648116491165011651116521165311654116551165611657116581165911660116611166211663116641166511666116671166811669116701167111672116731167411675116761167711678116791168011681116821168311684116851168611687116881168911690116911169211693116941169511696116971169811699117001170111702117031170411705117061170711708117091171011711117121171311714117151171611717117181171911720117211172211723117241172511726117271172811729117301173111732117331173411735117361173711738117391174011741117421174311744117451174611747117481174911750117511175211753117541175511756117571175811759117601176111762117631176411765117661176711768117691177011771117721177311774117751177611777117781177911780117811178211783117841178511786117871178811789117901179111792117931179411795117961179711798117991180011801118021180311804118051180611807118081180911810118111181211813118141181511816118171181811819118201182111822118231182411825118261182711828118291183011831118321183311834118351183611837118381183911840118411184211843118441184511846118471184811849118501185111852118531185411855118561185711858118591186011861118621186311864118651186611867118681186911870118711187211873118741187511876118771187811879118801188111882118831188411885118861188711888118891189011891118921189311894118951189611897118981189911900119011190211903119041190511906119071190811909119101191111912119131191411915119161191711918119191192011921119221192311924119251192611927119281192911930119311193211933119341193511936119371193811939119401194111942119431194411945119461194711948119491195011951119521195311954119551195611957119581195911960119611196211963119641196511966119671196811969119701197111972119731197411975119761197711978119791198011981119821198311984119851198611987119881198911990119911199211993119941199511996119971199811999120001200112002120031200412005120061200712008120091201012011120121201312014120151201612017120181201912020120211202212023120241202512026120271202812029120301203112032120331203412035120361203712038120391204012041120421204312044120451204612047120481204912050120511205212053120541205512056120571205812059120601206112062120631206412065120661206712068120691207012071120721207312074120751207612077120781207912080120811208212083120841208512086120871208812089120901209112092120931209412095120961209712098120991210012101121021210312104121051210612107121081210912110121111211212113121141211512116121171211812119121201212112122121231212412125121261212712128121291213012131121321213312134121351213612137121381213912140121411214212143121441214512146121471214812149121501215112152121531215412155121561215712158121591216012161121621216312164121651216612167121681216912170121711217212173121741217512176121771217812179121801218112182121831218412185121861218712188121891219012191121921219312194121951219612197121981219912200122011220212203122041220512206122071220812209122101221112212122131221412215122161221712218122191222012221122221222312224122251222612227122281222912230122311223212233122341223512236122371223812239122401224112242122431224412245122461224712248122491225012251122521225312254122551225612257122581225912260122611226212263122641226512266122671226812269122701227112272122731227412275122761227712278122791228012281122821228312284122851228612287122881228912290122911229212293122941229512296122971229812299123001230112302123031230412305123061230712308123091231012311123121231312314123151231612317123181231912320123211232212323123241232512326123271232812329123301233112332123331233412335123361233712338123391234012341123421234312344123451234612347123481234912350123511235212353123541235512356123571235812359123601236112362123631236412365123661236712368123691237012371123721237312374123751237612377123781237912380123811238212383123841238512386123871238812389123901239112392123931239412395123961239712398123991240012401124021240312404124051240612407124081240912410124111241212413124141241512416124171241812419124201242112422124231242412425124261242712428124291243012431124321243312434124351243612437124381243912440124411244212443124441244512446124471244812449124501245112452124531245412455124561245712458124591246012461124621246312464124651246612467124681246912470124711247212473124741247512476124771247812479124801248112482124831248412485124861248712488124891249012491124921249312494124951249612497124981249912500125011250212503125041250512506125071250812509125101251112512125131251412515125161251712518125191252012521125221252312524125251252612527125281252912530125311253212533125341253512536125371253812539125401254112542125431254412545125461254712548125491255012551125521255312554125551255612557125581255912560125611256212563125641256512566125671256812569125701257112572125731257412575125761257712578125791258012581125821258312584125851258612587125881258912590125911259212593125941259512596125971259812599126001260112602126031260412605126061260712608126091261012611126121261312614126151261612617126181261912620126211262212623126241262512626126271262812629126301263112632126331263412635126361263712638126391264012641126421264312644126451264612647126481264912650126511265212653126541265512656126571265812659126601266112662126631266412665126661266712668126691267012671126721267312674126751267612677126781267912680126811268212683126841268512686126871268812689126901269112692126931269412695126961269712698126991270012701127021270312704127051270612707127081270912710127111271212713127141271512716127171271812719127201272112722127231272412725127261272712728127291273012731127321273312734127351273612737127381273912740127411274212743127441274512746127471274812749127501275112752127531275412755127561275712758127591276012761127621276312764127651276612767127681276912770127711277212773127741277512776127771277812779127801278112782127831278412785127861278712788127891279012791127921279312794127951279612797127981279912800128011280212803128041280512806128071280812809128101281112812128131281412815128161281712818128191282012821128221282312824128251282612827128281282912830128311283212833128341283512836128371283812839128401284112842128431284412845128461284712848128491285012851128521285312854128551285612857128581285912860128611286212863128641286512866128671286812869128701287112872128731287412875128761287712878128791288012881128821288312884128851288612887128881288912890128911289212893128941289512896128971289812899129001290112902129031290412905129061290712908129091291012911129121291312914129151291612917129181291912920129211292212923129241292512926129271292812929129301293112932129331293412935129361293712938129391294012941129421294312944129451294612947129481294912950129511295212953129541295512956129571295812959129601296112962129631296412965129661296712968129691297012971129721297312974129751297612977129781297912980129811298212983129841298512986129871298812989129901299112992129931299412995129961299712998129991300013001130021300313004130051300613007130081300913010130111301213013130141301513016130171301813019130201302113022130231302413025130261302713028130291303013031130321303313034130351303613037130381303913040130411304213043130441304513046130471304813049130501305113052130531305413055130561305713058130591306013061130621306313064130651306613067130681306913070130711307213073130741307513076130771307813079130801308113082130831308413085130861308713088130891309013091130921309313094130951309613097130981309913100131011310213103131041310513106131071310813109131101311113112131131311413115131161311713118131191312013121131221312313124131251312613127131281312913130131311313213133131341313513136131371313813139131401314113142131431314413145131461314713148131491315013151131521315313154131551315613157131581315913160131611316213163131641316513166131671316813169131701317113172131731317413175131761317713178131791318013181131821318313184131851318613187131881318913190131911319213193131941319513196131971319813199132001320113202132031320413205132061320713208132091321013211132121321313214132151321613217132181321913220132211322213223132241322513226132271322813229132301323113232132331323413235132361323713238132391324013241132421324313244132451324613247132481324913250132511325213253132541325513256132571325813259132601326113262132631326413265132661326713268132691327013271132721327313274132751327613277132781327913280132811328213283132841328513286132871328813289132901329113292132931329413295132961329713298132991330013301133021330313304133051330613307133081330913310133111331213313133141331513316133171331813319133201332113322133231332413325133261332713328133291333013331133321333313334133351333613337133381333913340133411334213343133441334513346133471334813349133501335113352133531335413355133561335713358133591336013361133621336313364133651336613367133681336913370133711337213373133741337513376133771337813379133801338113382133831338413385133861338713388133891339013391133921339313394133951339613397133981339913400134011340213403134041340513406134071340813409134101341113412134131341413415134161341713418134191342013421134221342313424134251342613427134281342913430134311343213433134341343513436134371343813439134401344113442134431344413445134461344713448134491345013451134521345313454134551345613457134581345913460134611346213463134641346513466134671346813469134701347113472134731347413475134761347713478134791348013481134821348313484134851348613487134881348913490134911349213493134941349513496134971349813499135001350113502135031350413505135061350713508135091351013511135121351313514135151351613517135181351913520135211352213523135241352513526135271352813529135301353113532135331353413535135361353713538135391354013541135421354313544135451354613547135481354913550135511355213553135541355513556135571355813559135601356113562135631356413565135661356713568135691357013571135721357313574135751357613577135781357913580135811358213583135841358513586135871358813589135901359113592135931359413595135961359713598135991360013601136021360313604136051360613607136081360913610136111361213613136141361513616136171361813619136201362113622136231362413625136261362713628136291363013631136321363313634136351363613637136381363913640136411364213643136441364513646136471364813649136501365113652136531365413655136561365713658136591366013661136621366313664136651366613667136681366913670136711367213673136741367513676136771367813679136801368113682136831368413685136861368713688136891369013691136921369313694136951369613697136981369913700137011370213703137041370513706137071370813709137101371113712137131371413715137161371713718137191372013721137221372313724137251372613727137281372913730137311373213733137341373513736137371373813739137401374113742137431374413745137461374713748137491375013751137521375313754137551375613757137581375913760137611376213763137641376513766137671376813769137701377113772137731377413775137761377713778137791378013781137821378313784137851378613787137881378913790137911379213793137941379513796137971379813799138001380113802138031380413805138061380713808138091381013811138121381313814138151381613817138181381913820138211382213823138241382513826138271382813829138301383113832138331383413835138361383713838138391384013841138421384313844138451384613847138481384913850138511385213853138541385513856138571385813859138601386113862138631386413865138661386713868138691387013871138721387313874138751387613877138781387913880138811388213883138841388513886138871388813889138901389113892138931389413895138961389713898138991390013901139021390313904139051390613907139081390913910139111391213913139141391513916139171391813919139201392113922139231392413925139261392713928139291393013931139321393313934139351393613937139381393913940139411394213943139441394513946139471394813949139501395113952139531395413955139561395713958139591396013961139621396313964139651396613967139681396913970139711397213973139741397513976139771397813979139801398113982139831398413985139861398713988139891399013991139921399313994139951399613997139981399914000140011400214003140041400514006140071400814009140101401114012140131401414015140161401714018140191402014021140221402314024140251402614027140281402914030140311403214033140341403514036140371403814039140401404114042140431404414045140461404714048140491405014051140521405314054140551405614057140581405914060140611406214063140641406514066140671406814069140701407114072140731407414075140761407714078140791408014081140821408314084140851408614087140881408914090140911409214093140941409514096140971409814099141001410114102141031410414105141061410714108141091411014111141121411314114141151411614117141181411914120141211412214123141241412514126141271412814129141301413114132141331413414135141361413714138141391414014141141421414314144141451414614147141481414914150141511415214153141541415514156141571415814159141601416114162141631416414165141661416714168141691417014171141721417314174141751417614177141781417914180141811418214183141841418514186141871418814189141901419114192141931419414195141961419714198141991420014201142021420314204142051420614207142081420914210142111421214213142141421514216142171421814219142201422114222142231422414225142261422714228142291423014231142321423314234142351423614237142381423914240142411424214243142441424514246142471424814249142501425114252142531425414255142561425714258142591426014261142621426314264142651426614267142681426914270142711427214273142741427514276142771427814279142801428114282142831428414285142861428714288142891429014291142921429314294142951429614297142981429914300143011430214303143041430514306143071430814309143101431114312143131431414315143161431714318143191432014321143221432314324143251432614327143281432914330143311433214333143341433514336143371433814339143401434114342143431434414345143461434714348143491435014351143521435314354143551435614357143581435914360143611436214363143641436514366143671436814369143701437114372143731437414375143761437714378143791438014381143821438314384143851438614387143881438914390143911439214393143941439514396143971439814399144001440114402144031440414405144061440714408144091441014411144121441314414144151441614417144181441914420144211442214423144241442514426144271442814429144301443114432144331443414435144361443714438144391444014441144421444314444144451444614447144481444914450144511445214453144541445514456144571445814459144601446114462144631446414465144661446714468144691447014471144721447314474144751447614477144781447914480144811448214483144841448514486144871448814489144901449114492144931449414495144961449714498144991450014501145021450314504145051450614507145081450914510145111451214513145141451514516145171451814519145201452114522145231452414525145261452714528145291453014531145321453314534145351453614537145381453914540145411454214543145441454514546145471454814549145501455114552145531455414555145561455714558145591456014561145621456314564145651456614567145681456914570145711457214573145741457514576145771457814579145801458114582145831458414585145861458714588145891459014591145921459314594145951459614597145981459914600146011460214603146041460514606146071460814609146101461114612146131461414615146161461714618146191462014621146221462314624146251462614627146281462914630146311463214633146341463514636146371463814639146401464114642146431464414645146461464714648146491465014651146521465314654146551465614657146581465914660146611466214663146641466514666146671466814669146701467114672146731467414675146761467714678146791468014681146821468314684146851468614687146881468914690146911469214693146941469514696146971469814699147001470114702147031470414705147061470714708147091471014711147121471314714147151471614717147181471914720147211472214723147241472514726147271472814729147301473114732147331473414735147361473714738147391474014741147421474314744147451474614747147481474914750147511475214753147541475514756147571475814759147601476114762147631476414765147661476714768147691477014771147721477314774147751477614777147781477914780147811478214783147841478514786147871478814789147901479114792147931479414795147961479714798147991480014801148021480314804148051480614807148081480914810148111481214813148141481514816148171481814819148201482114822148231482414825148261482714828148291483014831148321483314834148351483614837148381483914840148411484214843148441484514846148471484814849148501485114852148531485414855148561485714858148591486014861148621486314864148651486614867148681486914870148711487214873148741487514876148771487814879148801488114882148831488414885148861488714888148891489014891148921489314894148951489614897148981489914900149011490214903149041490514906149071490814909149101491114912149131491414915149161491714918149191492014921149221492314924149251492614927149281492914930149311493214933149341493514936149371493814939149401494114942149431494414945149461494714948149491495014951149521495314954149551495614957149581495914960149611496214963149641496514966149671496814969149701497114972149731497414975149761497714978149791498014981149821498314984149851498614987149881498914990149911499214993149941499514996149971499814999150001500115002150031500415005150061500715008150091501015011150121501315014150151501615017150181501915020150211502215023150241502515026150271502815029150301503115032150331503415035150361503715038150391504015041150421504315044150451504615047150481504915050150511505215053150541505515056150571505815059150601506115062150631506415065150661506715068150691507015071150721507315074150751507615077150781507915080150811508215083150841508515086150871508815089150901509115092150931509415095150961509715098150991510015101151021510315104151051510615107151081510915110151111511215113151141511515116151171511815119151201512115122151231512415125151261512715128151291513015131151321513315134151351513615137151381513915140151411514215143151441514515146151471514815149151501515115152151531515415155151561515715158151591516015161151621516315164151651516615167151681516915170151711517215173151741517515176151771517815179151801518115182151831518415185151861518715188151891519015191151921519315194151951519615197151981519915200152011520215203152041520515206152071520815209152101521115212152131521415215152161521715218152191522015221152221522315224152251522615227152281522915230152311523215233152341523515236152371523815239152401524115242152431524415245152461524715248152491525015251152521525315254152551525615257152581525915260152611526215263152641526515266152671526815269152701527115272152731527415275152761527715278152791528015281152821528315284152851528615287152881528915290152911529215293152941529515296152971529815299153001530115302153031530415305153061530715308153091531015311153121531315314153151531615317153181531915320153211532215323153241532515326153271532815329153301533115332153331533415335153361533715338153391534015341153421534315344153451534615347153481534915350153511535215353153541535515356153571535815359153601536115362153631536415365153661536715368153691537015371153721537315374153751537615377153781537915380153811538215383153841538515386153871538815389153901539115392153931539415395153961539715398153991540015401154021540315404154051540615407154081540915410154111541215413154141541515416154171541815419154201542115422154231542415425154261542715428154291543015431154321543315434154351543615437154381543915440154411544215443154441544515446154471544815449154501545115452154531545415455154561545715458154591546015461154621546315464154651546615467154681546915470154711547215473154741547515476154771547815479154801548115482154831548415485154861548715488154891549015491154921549315494154951549615497154981549915500155011550215503155041550515506155071550815509155101551115512155131551415515155161551715518155191552015521155221552315524155251552615527155281552915530155311553215533155341553515536155371553815539155401554115542155431554415545155461554715548155491555015551155521555315554155551555615557155581555915560155611556215563155641556515566155671556815569155701557115572155731557415575155761557715578155791558015581155821558315584155851558615587155881558915590155911559215593155941559515596155971559815599156001560115602156031560415605156061560715608156091561015611156121561315614156151561615617156181561915620156211562215623156241562515626156271562815629156301563115632156331563415635156361563715638156391564015641156421564315644156451564615647156481564915650156511565215653156541565515656156571565815659156601566115662156631566415665156661566715668156691567015671156721567315674156751567615677156781567915680156811568215683156841568515686156871568815689156901569115692156931569415695156961569715698156991570015701157021570315704157051570615707157081570915710157111571215713157141571515716157171571815719157201572115722157231572415725157261572715728157291573015731157321573315734157351573615737157381573915740157411574215743157441574515746157471574815749157501575115752157531575415755157561575715758157591576015761157621576315764157651576615767157681576915770157711577215773157741577515776157771577815779157801578115782157831578415785157861578715788157891579015791157921579315794157951579615797157981579915800158011580215803158041580515806158071580815809158101581115812158131581415815158161581715818158191582015821158221582315824158251582615827158281582915830158311583215833158341583515836158371583815839158401584115842158431584415845158461584715848158491585015851158521585315854158551585615857158581585915860158611586215863158641586515866158671586815869158701587115872158731587415875158761587715878158791588015881158821588315884158851588615887158881588915890158911589215893158941589515896158971589815899159001590115902159031590415905159061590715908159091591015911159121591315914159151591615917159181591915920159211592215923159241592515926159271592815929159301593115932159331593415935159361593715938159391594015941159421594315944159451594615947159481594915950159511595215953159541595515956159571595815959159601596115962159631596415965159661596715968159691597015971159721597315974159751597615977159781597915980159811598215983159841598515986159871598815989159901599115992159931599415995159961599715998159991600016001160021600316004160051600616007160081600916010160111601216013160141601516016160171601816019160201602116022160231602416025160261602716028160291603016031160321603316034160351603616037160381603916040160411604216043160441604516046160471604816049160501605116052160531605416055160561605716058160591606016061160621606316064160651606616067160681606916070160711607216073160741607516076160771607816079160801608116082160831608416085160861608716088160891609016091160921609316094160951609616097160981609916100161011610216103161041610516106161071610816109161101611116112161131611416115161161611716118161191612016121161221612316124161251612616127161281612916130161311613216133161341613516136161371613816139161401614116142161431614416145161461614716148161491615016151161521615316154161551615616157161581615916160161611616216163161641616516166161671616816169161701617116172161731617416175161761617716178161791618016181161821618316184161851618616187161881618916190161911619216193161941619516196161971619816199162001620116202162031620416205162061620716208162091621016211162121621316214162151621616217162181621916220162211622216223162241622516226162271622816229162301623116232162331623416235162361623716238162391624016241162421624316244162451624616247162481624916250162511625216253162541625516256162571625816259162601626116262162631626416265162661626716268162691627016271162721627316274162751627616277162781627916280162811628216283162841628516286162871628816289162901629116292162931629416295162961629716298162991630016301163021630316304163051630616307163081630916310163111631216313163141631516316163171631816319163201632116322163231632416325163261632716328163291633016331163321633316334163351633616337163381633916340163411634216343163441634516346163471634816349163501635116352163531635416355163561635716358163591636016361163621636316364163651636616367163681636916370163711637216373163741637516376163771637816379163801638116382163831638416385163861638716388163891639016391163921639316394163951639616397163981639916400164011640216403164041640516406164071640816409164101641116412164131641416415164161641716418164191642016421164221642316424164251642616427164281642916430164311643216433164341643516436164371643816439164401644116442164431644416445164461644716448164491645016451164521645316454164551645616457164581645916460164611646216463164641646516466164671646816469164701647116472164731647416475164761647716478164791648016481164821648316484164851648616487164881648916490164911649216493164941649516496164971649816499165001650116502165031650416505165061650716508165091651016511165121651316514165151651616517165181651916520165211652216523165241652516526165271652816529165301653116532165331653416535165361653716538165391654016541165421654316544165451654616547165481654916550165511655216553165541655516556165571655816559165601656116562165631656416565165661656716568165691657016571165721657316574165751657616577165781657916580165811658216583165841658516586165871658816589165901659116592165931659416595165961659716598165991660016601166021660316604166051660616607166081660916610166111661216613166141661516616166171661816619166201662116622166231662416625166261662716628166291663016631166321663316634166351663616637166381663916640166411664216643166441664516646166471664816649166501665116652166531665416655166561665716658166591666016661166621666316664166651666616667166681666916670166711667216673166741667516676166771667816679166801668116682166831668416685166861668716688166891669016691166921669316694166951669616697166981669916700167011670216703167041670516706167071670816709167101671116712167131671416715167161671716718167191672016721167221672316724167251672616727167281672916730167311673216733167341673516736167371673816739167401674116742167431674416745167461674716748167491675016751167521675316754167551675616757167581675916760167611676216763167641676516766167671676816769167701677116772167731677416775167761677716778167791678016781167821678316784167851678616787167881678916790167911679216793167941679516796167971679816799168001680116802168031680416805168061680716808168091681016811168121681316814168151681616817168181681916820168211682216823168241682516826168271682816829168301683116832168331683416835168361683716838168391684016841168421684316844168451684616847168481684916850168511685216853168541685516856168571685816859168601686116862168631686416865168661686716868168691687016871168721687316874168751687616877168781687916880168811688216883168841688516886168871688816889168901689116892168931689416895168961689716898168991690016901169021690316904169051690616907169081690916910169111691216913169141691516916169171691816919169201692116922169231692416925169261692716928169291693016931169321693316934169351693616937169381693916940169411694216943169441694516946169471694816949169501695116952169531695416955169561695716958169591696016961169621696316964169651696616967169681696916970169711697216973169741697516976169771697816979169801698116982169831698416985169861698716988169891699016991169921699316994169951699616997169981699917000170011700217003170041700517006170071700817009170101701117012170131701417015170161701717018170191702017021170221702317024170251702617027170281702917030170311703217033170341703517036170371703817039170401704117042170431704417045170461704717048170491705017051170521705317054170551705617057170581705917060170611706217063170641706517066170671706817069170701707117072170731707417075170761707717078170791708017081170821708317084170851708617087170881708917090170911709217093170941709517096170971709817099171001710117102171031710417105171061710717108171091711017111171121711317114171151711617117171181711917120171211712217123171241712517126171271712817129171301713117132171331713417135171361713717138171391714017141171421714317144171451714617147171481714917150171511715217153171541715517156171571715817159171601716117162171631716417165171661716717168171691717017171171721717317174171751717617177171781717917180171811718217183171841718517186171871718817189171901719117192171931719417195171961719717198171991720017201172021720317204172051720617207172081720917210172111721217213172141721517216172171721817219172201722117222172231722417225172261722717228172291723017231172321723317234172351723617237172381723917240172411724217243172441724517246172471724817249172501725117252172531725417255172561725717258172591726017261172621726317264172651726617267172681726917270172711727217273172741727517276172771727817279172801728117282172831728417285172861728717288172891729017291172921729317294172951729617297172981729917300173011730217303173041730517306173071730817309173101731117312173131731417315173161731717318173191732017321173221732317324173251732617327173281732917330173311733217333173341733517336173371733817339173401734117342173431734417345173461734717348173491735017351173521735317354173551735617357173581735917360173611736217363173641736517366173671736817369173701737117372173731737417375173761737717378173791738017381173821738317384173851738617387173881738917390173911739217393173941739517396173971739817399174001740117402174031740417405174061740717408174091741017411174121741317414174151741617417174181741917420174211742217423174241742517426174271742817429174301743117432174331743417435174361743717438174391744017441174421744317444174451744617447174481744917450174511745217453174541745517456174571745817459174601746117462174631746417465174661746717468174691747017471174721747317474174751747617477174781747917480174811748217483174841748517486174871748817489174901749117492174931749417495174961749717498174991750017501175021750317504175051750617507175081750917510175111751217513175141751517516175171751817519175201752117522175231752417525175261752717528175291753017531175321753317534175351753617537175381753917540175411754217543175441754517546175471754817549175501755117552175531755417555175561755717558175591756017561175621756317564175651756617567175681756917570175711757217573175741757517576175771757817579175801758117582175831758417585175861758717588175891759017591175921759317594175951759617597175981759917600176011760217603176041760517606176071760817609176101761117612176131761417615176161761717618176191762017621176221762317624176251762617627176281762917630176311763217633176341763517636176371763817639176401764117642176431764417645176461764717648176491765017651176521765317654176551765617657176581765917660176611766217663176641766517666176671766817669176701767117672176731767417675176761767717678176791768017681176821768317684176851768617687176881768917690176911769217693176941769517696176971769817699177001770117702177031770417705177061770717708177091771017711177121771317714177151771617717177181771917720177211772217723177241772517726177271772817729177301773117732177331773417735177361773717738177391774017741177421774317744177451774617747177481774917750177511775217753177541775517756177571775817759177601776117762177631776417765177661776717768177691777017771177721777317774177751777617777177781777917780177811778217783177841778517786177871778817789177901779117792177931779417795177961779717798177991780017801178021780317804178051780617807178081780917810178111781217813178141781517816178171781817819178201782117822178231782417825178261782717828178291783017831178321783317834178351783617837178381783917840178411784217843178441784517846178471784817849178501785117852178531785417855178561785717858178591786017861178621786317864178651786617867178681786917870178711787217873178741787517876178771787817879178801788117882178831788417885178861788717888178891789017891178921789317894178951789617897178981789917900179011790217903179041790517906179071790817909179101791117912179131791417915179161791717918179191792017921179221792317924179251792617927179281792917930179311793217933179341793517936179371793817939179401794117942179431794417945179461794717948179491795017951179521795317954179551795617957179581795917960179611796217963179641796517966179671796817969179701797117972179731797417975179761797717978179791798017981179821798317984179851798617987179881798917990179911799217993179941799517996179971799817999180001800118002180031800418005180061800718008180091801018011180121801318014180151801618017180181801918020180211802218023180241802518026180271802818029180301803118032180331803418035180361803718038180391804018041180421804318044180451804618047180481804918050180511805218053180541805518056180571805818059180601806118062180631806418065180661806718068180691807018071180721807318074180751807618077180781807918080180811808218083180841808518086180871808818089180901809118092180931809418095180961809718098180991810018101181021810318104181051810618107181081810918110181111811218113181141811518116181171811818119181201812118122181231812418125181261812718128181291813018131181321813318134181351813618137181381813918140181411814218143181441814518146181471814818149181501815118152181531815418155181561815718158181591816018161181621816318164181651816618167181681816918170181711817218173181741817518176181771817818179181801818118182181831818418185181861818718188181891819018191181921819318194181951819618197181981819918200182011820218203182041820518206182071820818209182101821118212182131821418215182161821718218182191822018221182221822318224182251822618227182281822918230182311823218233182341823518236182371823818239182401824118242182431824418245182461824718248182491825018251182521825318254182551825618257182581825918260182611826218263182641826518266182671826818269182701827118272182731827418275182761827718278182791828018281182821828318284182851828618287182881828918290182911829218293182941829518296182971829818299183001830118302183031830418305183061830718308183091831018311183121831318314183151831618317183181831918320183211832218323183241832518326183271832818329183301833118332183331833418335183361833718338183391834018341183421834318344183451834618347183481834918350183511835218353183541835518356183571835818359183601836118362183631836418365183661836718368183691837018371183721837318374183751837618377183781837918380183811838218383183841838518386183871838818389183901839118392183931839418395183961839718398183991840018401184021840318404184051840618407184081840918410184111841218413184141841518416184171841818419184201842118422184231842418425184261842718428184291843018431184321843318434184351843618437184381843918440184411844218443184441844518446184471844818449184501845118452184531845418455184561845718458184591846018461184621846318464184651846618467184681846918470184711847218473184741847518476184771847818479184801848118482184831848418485184861848718488184891849018491184921849318494184951849618497184981849918500185011850218503185041850518506185071850818509185101851118512185131851418515185161851718518185191852018521185221852318524185251852618527185281852918530185311853218533185341853518536185371853818539185401854118542185431854418545185461854718548185491855018551185521855318554185551855618557185581855918560185611856218563185641856518566185671856818569185701857118572185731857418575185761857718578185791858018581185821858318584185851858618587185881858918590185911859218593185941859518596185971859818599186001860118602186031860418605186061860718608186091861018611186121861318614186151861618617186181861918620186211862218623186241862518626186271862818629186301863118632186331863418635186361863718638186391864018641186421864318644186451864618647186481864918650186511865218653186541865518656186571865818659186601866118662186631866418665186661866718668186691867018671186721867318674186751867618677186781867918680186811868218683186841868518686186871868818689186901869118692186931869418695186961869718698186991870018701187021870318704187051870618707187081870918710187111871218713187141871518716187171871818719187201872118722187231872418725187261872718728187291873018731187321873318734187351873618737187381873918740187411874218743187441874518746187471874818749187501875118752187531875418755187561875718758187591876018761187621876318764187651876618767187681876918770187711877218773187741877518776187771877818779187801878118782187831878418785187861878718788187891879018791187921879318794187951879618797187981879918800188011880218803188041880518806188071880818809188101881118812188131881418815188161881718818188191882018821188221882318824188251882618827188281882918830188311883218833188341883518836188371883818839188401884118842188431884418845188461884718848188491885018851188521885318854188551885618857188581885918860188611886218863188641886518866188671886818869188701887118872188731887418875188761887718878188791888018881188821888318884188851888618887188881888918890188911889218893188941889518896188971889818899189001890118902189031890418905189061890718908189091891018911189121891318914189151891618917189181891918920189211892218923189241892518926189271892818929189301893118932189331893418935189361893718938189391894018941189421894318944189451894618947189481894918950189511895218953189541895518956189571895818959189601896118962189631896418965189661896718968189691897018971189721897318974189751897618977189781897918980189811898218983189841898518986189871898818989189901899118992189931899418995189961899718998189991900019001190021900319004190051900619007190081900919010190111901219013190141901519016190171901819019190201902119022190231902419025190261902719028190291903019031190321903319034190351903619037190381903919040190411904219043190441904519046190471904819049190501905119052190531905419055190561905719058190591906019061190621906319064190651906619067190681906919070190711907219073190741907519076190771907819079190801908119082190831908419085190861908719088190891909019091190921909319094190951909619097190981909919100191011910219103191041910519106191071910819109191101911119112191131911419115191161911719118191191912019121191221912319124191251912619127191281912919130191311913219133191341913519136191371913819139191401914119142191431914419145191461914719148191491915019151191521915319154191551915619157191581915919160191611916219163191641916519166191671916819169191701917119172191731917419175191761917719178191791918019181191821918319184191851918619187191881918919190191911919219193191941919519196191971919819199192001920119202192031920419205192061920719208192091921019211192121921319214192151921619217192181921919220192211922219223192241922519226192271922819229192301923119232192331923419235192361923719238192391924019241192421924319244192451924619247192481924919250192511925219253192541925519256192571925819259192601926119262192631926419265192661926719268192691927019271192721927319274192751927619277192781927919280192811928219283192841928519286192871928819289192901929119292192931929419295192961929719298192991930019301193021930319304193051930619307193081930919310193111931219313193141931519316193171931819319193201932119322193231932419325193261932719328193291933019331193321933319334193351933619337193381933919340193411934219343193441934519346193471934819349193501935119352193531935419355193561935719358193591936019361193621936319364193651936619367193681936919370193711937219373193741937519376193771937819379193801938119382193831938419385193861938719388193891939019391193921939319394193951939619397193981939919400194011940219403194041940519406194071940819409194101941119412194131941419415194161941719418194191942019421194221942319424194251942619427194281942919430194311943219433194341943519436194371943819439194401944119442194431944419445194461944719448194491945019451194521945319454194551945619457194581945919460194611946219463194641946519466194671946819469194701947119472194731947419475194761947719478194791948019481194821948319484194851948619487194881948919490194911949219493194941949519496194971949819499195001950119502195031950419505195061950719508195091951019511195121951319514195151951619517195181951919520195211952219523195241952519526195271952819529195301953119532195331953419535195361953719538195391954019541195421954319544195451954619547195481954919550195511955219553195541955519556195571955819559195601956119562195631956419565195661956719568195691957019571195721957319574195751957619577195781957919580195811958219583195841958519586195871958819589195901959119592195931959419595195961959719598195991960019601196021960319604196051960619607196081960919610196111961219613196141961519616196171961819619196201962119622196231962419625196261962719628196291963019631196321963319634196351963619637196381963919640196411964219643196441964519646196471964819649196501965119652196531965419655196561965719658196591966019661196621966319664196651966619667196681966919670196711967219673196741967519676196771967819679196801968119682196831968419685196861968719688196891969019691196921969319694196951969619697196981969919700197011970219703197041970519706197071970819709197101971119712197131971419715197161971719718197191972019721197221972319724197251972619727197281972919730197311973219733197341973519736197371973819739197401974119742197431974419745197461974719748197491975019751197521975319754197551975619757197581975919760197611976219763197641976519766197671976819769197701977119772197731977419775197761977719778197791978019781197821978319784197851978619787197881978919790197911979219793197941979519796197971979819799198001980119802198031980419805198061980719808198091981019811198121981319814198151981619817198181981919820198211982219823198241982519826198271982819829198301983119832198331983419835198361983719838198391984019841198421984319844198451984619847198481984919850198511985219853198541985519856198571985819859198601986119862198631986419865198661986719868198691987019871198721987319874198751987619877198781987919880198811988219883198841988519886198871988819889198901989119892198931989419895198961989719898198991990019901199021990319904199051990619907199081990919910199111991219913199141991519916199171991819919199201992119922199231992419925199261992719928199291993019931199321993319934199351993619937199381993919940199411994219943199441994519946199471994819949199501995119952199531995419955199561995719958199591996019961199621996319964199651996619967199681996919970199711997219973199741997519976199771997819979199801998119982199831998419985199861998719988199891999019991199921999319994199951999619997199981999920000200012000220003200042000520006200072000820009200102001120012200132001420015200162001720018200192002020021200222002320024200252002620027200282002920030200312003220033200342003520036200372003820039200402004120042200432004420045200462004720048200492005020051200522005320054200552005620057200582005920060200612006220063200642006520066200672006820069200702007120072200732007420075200762007720078200792008020081200822008320084200852008620087200882008920090200912009220093200942009520096200972009820099201002010120102201032010420105201062010720108201092011020111201122011320114201152011620117201182011920120201212012220123201242012520126201272012820129201302013120132201332013420135201362013720138201392014020141201422014320144201452014620147201482014920150201512015220153201542015520156201572015820159201602016120162201632016420165201662016720168201692017020171201722017320174201752017620177201782017920180201812018220183201842018520186201872018820189201902019120192201932019420195201962019720198201992020020201202022020320204202052020620207202082020920210202112021220213202142021520216202172021820219202202022120222202232022420225202262022720228202292023020231202322023320234202352023620237202382023920240202412024220243202442024520246202472024820249202502025120252202532025420255202562025720258202592026020261202622026320264202652026620267202682026920270202712027220273202742027520276202772027820279202802028120282202832028420285202862028720288202892029020291202922029320294202952029620297202982029920300203012030220303203042030520306203072030820309203102031120312203132031420315203162031720318203192032020321203222032320324203252032620327203282032920330203312033220333203342033520336203372033820339203402034120342203432034420345203462034720348203492035020351203522035320354203552035620357203582035920360203612036220363203642036520366203672036820369203702037120372203732037420375203762037720378203792038020381203822038320384203852038620387203882038920390203912039220393203942039520396203972039820399204002040120402204032040420405204062040720408204092041020411204122041320414204152041620417204182041920420204212042220423204242042520426204272042820429204302043120432204332043420435204362043720438204392044020441204422044320444204452044620447204482044920450204512045220453204542045520456204572045820459204602046120462204632046420465204662046720468204692047020471204722047320474204752047620477204782047920480204812048220483204842048520486204872048820489204902049120492204932049420495204962049720498204992050020501205022050320504205052050620507205082050920510205112051220513205142051520516205172051820519205202052120522205232052420525205262052720528205292053020531205322053320534205352053620537205382053920540205412054220543205442054520546205472054820549205502055120552205532055420555205562055720558205592056020561205622056320564205652056620567205682056920570205712057220573205742057520576205772057820579205802058120582205832058420585205862058720588205892059020591205922059320594205952059620597205982059920600206012060220603206042060520606206072060820609206102061120612206132061420615206162061720618206192062020621206222062320624206252062620627206282062920630206312063220633206342063520636206372063820639206402064120642206432064420645206462064720648206492065020651206522065320654206552065620657206582065920660206612066220663206642066520666206672066820669206702067120672206732067420675206762067720678206792068020681206822068320684206852068620687206882068920690206912069220693206942069520696206972069820699207002070120702207032070420705207062070720708207092071020711207122071320714207152071620717207182071920720207212072220723207242072520726207272072820729207302073120732207332073420735207362073720738207392074020741207422074320744207452074620747207482074920750207512075220753207542075520756207572075820759207602076120762207632076420765207662076720768207692077020771207722077320774207752077620777207782077920780207812078220783207842078520786207872078820789207902079120792207932079420795207962079720798207992080020801208022080320804208052080620807208082080920810208112081220813208142081520816208172081820819208202082120822208232082420825208262082720828208292083020831208322083320834208352083620837208382083920840208412084220843208442084520846208472084820849208502085120852208532085420855208562085720858208592086020861208622086320864208652086620867208682086920870208712087220873208742087520876208772087820879208802088120882208832088420885208862088720888208892089020891208922089320894208952089620897208982089920900209012090220903209042090520906209072090820909209102091120912209132091420915209162091720918209192092020921209222092320924209252092620927209282092920930209312093220933209342093520936209372093820939209402094120942209432094420945209462094720948209492095020951209522095320954209552095620957209582095920960209612096220963209642096520966209672096820969209702097120972209732097420975209762097720978209792098020981209822098320984209852098620987209882098920990209912099220993209942099520996209972099820999210002100121002210032100421005210062100721008210092101021011210122101321014210152101621017210182101921020210212102221023210242102521026210272102821029210302103121032210332103421035210362103721038210392104021041210422104321044210452104621047210482104921050210512105221053210542105521056210572105821059210602106121062210632106421065210662106721068210692107021071210722107321074210752107621077210782107921080210812108221083210842108521086210872108821089210902109121092210932109421095210962109721098210992110021101211022110321104211052110621107211082110921110211112111221113211142111521116211172111821119211202112121122211232112421125211262112721128211292113021131211322113321134211352113621137211382113921140211412114221143211442114521146211472114821149211502115121152211532115421155211562115721158211592116021161211622116321164211652116621167211682116921170211712117221173211742117521176211772117821179211802118121182211832118421185211862118721188211892119021191211922119321194211952119621197211982119921200212012120221203212042120521206212072120821209212102121121212212132121421215212162121721218212192122021221212222122321224212252122621227212282122921230212312123221233212342123521236212372123821239212402124121242212432124421245212462124721248212492125021251212522125321254212552125621257212582125921260212612126221263212642126521266212672126821269212702127121272212732127421275212762127721278212792128021281212822128321284212852128621287212882128921290212912129221293212942129521296212972129821299213002130121302213032130421305213062130721308213092131021311213122131321314213152131621317213182131921320213212132221323213242132521326213272132821329213302133121332213332133421335213362133721338213392134021341213422134321344213452134621347213482134921350213512135221353213542135521356213572135821359213602136121362213632136421365213662136721368213692137021371213722137321374213752137621377213782137921380213812138221383213842138521386213872138821389213902139121392213932139421395213962139721398213992140021401214022140321404214052140621407214082140921410214112141221413214142141521416214172141821419214202142121422214232142421425214262142721428214292143021431214322143321434214352143621437214382143921440214412144221443214442144521446214472144821449214502145121452214532145421455214562145721458214592146021461214622146321464214652146621467214682146921470214712147221473214742147521476214772147821479214802148121482214832148421485214862148721488214892149021491214922149321494214952149621497214982149921500215012150221503215042150521506215072150821509215102151121512215132151421515215162151721518215192152021521215222152321524215252152621527215282152921530215312153221533215342153521536215372153821539215402154121542215432154421545215462154721548215492155021551215522155321554215552155621557215582155921560215612156221563215642156521566215672156821569215702157121572215732157421575215762157721578215792158021581215822158321584215852158621587215882158921590215912159221593215942159521596215972159821599216002160121602216032160421605216062160721608216092161021611216122161321614216152161621617216182161921620216212162221623216242162521626216272162821629216302163121632216332163421635216362163721638216392164021641216422164321644216452164621647216482164921650216512165221653216542165521656216572165821659216602166121662216632166421665216662166721668216692167021671216722167321674216752167621677216782167921680216812168221683216842168521686216872168821689216902169121692216932169421695216962169721698216992170021701217022170321704217052170621707217082170921710217112171221713217142171521716217172171821719217202172121722217232172421725217262172721728217292173021731217322173321734217352173621737217382173921740217412174221743217442174521746217472174821749217502175121752217532175421755217562175721758217592176021761217622176321764217652176621767217682176921770217712177221773217742177521776217772177821779217802178121782217832178421785217862178721788217892179021791217922179321794217952179621797217982179921800218012180221803218042180521806218072180821809218102181121812218132181421815218162181721818218192182021821218222182321824218252182621827218282182921830218312183221833218342183521836218372183821839218402184121842218432184421845218462184721848218492185021851218522185321854218552185621857218582185921860218612186221863218642186521866218672186821869218702187121872218732187421875218762187721878218792188021881218822188321884218852188621887218882188921890218912189221893218942189521896218972189821899219002190121902219032190421905219062190721908219092191021911219122191321914219152191621917219182191921920219212192221923219242192521926219272192821929219302193121932219332193421935219362193721938219392194021941219422194321944219452194621947219482194921950219512195221953219542195521956219572195821959219602196121962219632196421965219662196721968219692197021971219722197321974219752197621977219782197921980219812198221983219842198521986219872198821989219902199121992219932199421995219962199721998219992200022001220022200322004220052200622007220082200922010220112201222013220142201522016220172201822019220202202122022220232202422025220262202722028220292203022031220322203322034220352203622037220382203922040220412204222043220442204522046220472204822049220502205122052220532205422055220562205722058220592206022061220622206322064220652206622067220682206922070220712207222073220742207522076220772207822079220802208122082220832208422085220862208722088220892209022091220922209322094220952209622097220982209922100221012210222103221042210522106221072210822109221102211122112221132211422115221162211722118221192212022121221222212322124221252212622127221282212922130221312213222133221342213522136221372213822139221402214122142221432214422145221462214722148221492215022151221522215322154221552215622157221582215922160221612216222163221642216522166221672216822169221702217122172221732217422175221762217722178221792218022181221822218322184221852218622187221882218922190221912219222193221942219522196221972219822199222002220122202222032220422205222062220722208222092221022211222122221322214222152221622217222182221922220222212222222223222242222522226222272222822229222302223122232222332223422235222362223722238222392224022241222422224322244222452224622247222482224922250222512225222253222542225522256222572225822259222602226122262222632226422265222662226722268222692227022271222722227322274222752227622277222782227922280222812228222283222842228522286222872228822289222902229122292222932229422295222962229722298222992230022301223022230322304223052230622307223082230922310223112231222313223142231522316223172231822319223202232122322223232232422325223262232722328223292233022331223322233322334223352233622337223382233922340223412234222343223442234522346223472234822349223502235122352223532235422355223562235722358223592236022361223622236322364223652236622367223682236922370223712237222373223742237522376223772237822379223802238122382223832238422385223862238722388223892239022391223922239322394223952239622397223982239922400224012240222403224042240522406224072240822409224102241122412224132241422415224162241722418224192242022421224222242322424224252242622427224282242922430224312243222433224342243522436224372243822439224402244122442224432244422445224462244722448224492245022451224522245322454224552245622457224582245922460224612246222463224642246522466224672246822469224702247122472224732247422475224762247722478224792248022481224822248322484224852248622487224882248922490224912249222493224942249522496224972249822499225002250122502225032250422505225062250722508225092251022511225122251322514225152251622517225182251922520225212252222523225242252522526225272252822529225302253122532225332253422535225362253722538225392254022541225422254322544225452254622547225482254922550225512255222553225542255522556225572255822559225602256122562225632256422565225662256722568225692257022571225722257322574225752257622577225782257922580225812258222583225842258522586225872258822589225902259122592225932259422595225962259722598225992260022601226022260322604226052260622607226082260922610226112261222613226142261522616226172261822619226202262122622226232262422625226262262722628226292263022631226322263322634226352263622637226382263922640226412264222643226442264522646226472264822649226502265122652226532265422655226562265722658226592266022661226622266322664226652266622667226682266922670226712267222673226742267522676226772267822679226802268122682226832268422685226862268722688226892269022691226922269322694226952269622697226982269922700227012270222703227042270522706227072270822709227102271122712227132271422715227162271722718227192272022721227222272322724227252272622727227282272922730227312273222733227342273522736227372273822739227402274122742227432274422745227462274722748227492275022751227522275322754227552275622757227582275922760227612276222763227642276522766227672276822769227702277122772227732277422775227762277722778227792278022781227822278322784227852278622787227882278922790227912279222793227942279522796227972279822799228002280122802228032280422805228062280722808228092281022811228122281322814228152281622817228182281922820228212282222823228242282522826228272282822829228302283122832228332283422835228362283722838228392284022841228422284322844228452284622847228482284922850228512285222853228542285522856228572285822859228602286122862228632286422865228662286722868228692287022871228722287322874228752287622877228782287922880228812288222883228842288522886228872288822889228902289122892228932289422895228962289722898228992290022901229022290322904229052290622907229082290922910229112291222913229142291522916229172291822919229202292122922229232292422925229262292722928229292293022931229322293322934229352293622937229382293922940229412294222943229442294522946229472294822949229502295122952229532295422955229562295722958229592296022961229622296322964229652296622967229682296922970229712297222973229742297522976229772297822979229802298122982229832298422985229862298722988229892299022991229922299322994229952299622997229982299923000230012300223003230042300523006230072300823009230102301123012230132301423015230162301723018230192302023021230222302323024230252302623027230282302923030230312303223033230342303523036230372303823039230402304123042230432304423045230462304723048230492305023051230522305323054230552305623057230582305923060230612306223063230642306523066230672306823069230702307123072230732307423075230762307723078230792308023081230822308323084230852308623087230882308923090230912309223093230942309523096230972309823099231002310123102231032310423105231062310723108231092311023111231122311323114231152311623117231182311923120231212312223123231242312523126231272312823129231302313123132231332313423135231362313723138231392314023141231422314323144231452314623147231482314923150231512315223153231542315523156231572315823159231602316123162231632316423165231662316723168231692317023171231722317323174231752317623177231782317923180231812318223183231842318523186231872318823189231902319123192231932319423195231962319723198231992320023201232022320323204232052320623207232082320923210232112321223213232142321523216232172321823219232202322123222232232322423225232262322723228232292323023231232322323323234232352323623237232382323923240232412324223243232442324523246232472324823249232502325123252232532325423255232562325723258232592326023261232622326323264232652326623267232682326923270232712327223273232742327523276232772327823279232802328123282232832328423285232862328723288232892329023291232922329323294232952329623297232982329923300233012330223303233042330523306233072330823309233102331123312233132331423315233162331723318233192332023321233222332323324233252332623327233282332923330233312333223333233342333523336233372333823339233402334123342233432334423345233462334723348233492335023351233522335323354233552335623357233582335923360233612336223363233642336523366233672336823369233702337123372233732337423375233762337723378233792338023381233822338323384233852338623387233882338923390233912339223393233942339523396233972339823399234002340123402234032340423405234062340723408234092341023411234122341323414234152341623417234182341923420234212342223423234242342523426234272342823429234302343123432234332343423435234362343723438234392344023441234422344323444234452344623447234482344923450234512345223453234542345523456234572345823459234602346123462234632346423465234662346723468234692347023471234722347323474234752347623477234782347923480234812348223483234842348523486234872348823489234902349123492234932349423495234962349723498234992350023501235022350323504235052350623507235082350923510235112351223513235142351523516235172351823519235202352123522235232352423525235262352723528235292353023531235322353323534235352353623537235382353923540235412354223543235442354523546235472354823549235502355123552235532355423555235562355723558235592356023561235622356323564235652356623567235682356923570235712357223573235742357523576235772357823579235802358123582235832358423585235862358723588235892359023591235922359323594235952359623597235982359923600236012360223603236042360523606236072360823609236102361123612236132361423615236162361723618236192362023621236222362323624236252362623627236282362923630236312363223633236342363523636236372363823639236402364123642236432364423645236462364723648236492365023651236522365323654236552365623657236582365923660236612366223663236642366523666236672366823669236702367123672236732367423675236762367723678236792368023681236822368323684236852368623687236882368923690236912369223693236942369523696236972369823699237002370123702237032370423705237062370723708237092371023711237122371323714237152371623717237182371923720237212372223723237242372523726237272372823729237302373123732237332373423735237362373723738237392374023741237422374323744237452374623747237482374923750237512375223753237542375523756237572375823759237602376123762237632376423765237662376723768237692377023771237722377323774237752377623777237782377923780237812378223783237842378523786237872378823789237902379123792237932379423795237962379723798237992380023801238022380323804238052380623807238082380923810238112381223813238142381523816238172381823819238202382123822238232382423825238262382723828238292383023831238322383323834238352383623837238382383923840238412384223843238442384523846238472384823849238502385123852238532385423855238562385723858238592386023861238622386323864238652386623867238682386923870238712387223873238742387523876238772387823879238802388123882238832388423885238862388723888238892389023891238922389323894238952389623897238982389923900239012390223903239042390523906239072390823909239102391123912239132391423915239162391723918239192392023921239222392323924239252392623927239282392923930239312393223933239342393523936239372393823939239402394123942239432394423945239462394723948239492395023951239522395323954239552395623957239582395923960239612396223963239642396523966239672396823969239702397123972239732397423975239762397723978239792398023981239822398323984239852398623987239882398923990239912399223993239942399523996239972399823999240002400124002240032400424005240062400724008240092401024011240122401324014240152401624017240182401924020240212402224023240242402524026240272402824029240302403124032240332403424035240362403724038240392404024041240422404324044240452404624047240482404924050240512405224053240542405524056240572405824059240602406124062240632406424065240662406724068240692407024071240722407324074240752407624077240782407924080240812408224083240842408524086240872408824089240902409124092240932409424095240962409724098240992410024101241022410324104241052410624107241082410924110241112411224113241142411524116241172411824119241202412124122241232412424125241262412724128241292413024131241322413324134241352413624137241382413924140241412414224143241442414524146241472414824149241502415124152241532415424155241562415724158241592416024161241622416324164241652416624167241682416924170241712417224173241742417524176241772417824179241802418124182241832418424185241862418724188241892419024191241922419324194241952419624197241982419924200242012420224203242042420524206242072420824209242102421124212242132421424215242162421724218242192422024221242222422324224242252422624227242282422924230242312423224233242342423524236242372423824239242402424124242242432424424245242462424724248242492425024251242522425324254242552425624257242582425924260242612426224263242642426524266242672426824269242702427124272242732427424275242762427724278242792428024281242822428324284242852428624287242882428924290242912429224293242942429524296242972429824299243002430124302243032430424305243062430724308243092431024311243122431324314243152431624317243182431924320243212432224323243242432524326243272432824329243302433124332243332433424335243362433724338243392434024341243422434324344243452434624347243482434924350243512435224353243542435524356243572435824359243602436124362243632436424365243662436724368243692437024371243722437324374243752437624377243782437924380243812438224383243842438524386243872438824389243902439124392243932439424395243962439724398243992440024401244022440324404244052440624407244082440924410244112441224413244142441524416244172441824419244202442124422244232442424425244262442724428244292443024431244322443324434244352443624437244382443924440244412444224443244442444524446244472444824449244502445124452244532445424455244562445724458244592446024461244622446324464244652446624467244682446924470244712447224473244742447524476244772447824479244802448124482244832448424485244862448724488244892449024491244922449324494244952449624497244982449924500245012450224503245042450524506245072450824509245102451124512245132451424515245162451724518245192452024521245222452324524245252452624527245282452924530245312453224533245342453524536245372453824539245402454124542245432454424545245462454724548245492455024551245522455324554245552455624557245582455924560245612456224563245642456524566245672456824569245702457124572245732457424575245762457724578245792458024581245822458324584245852458624587245882458924590245912459224593245942459524596245972459824599246002460124602246032460424605246062460724608246092461024611246122461324614246152461624617246182461924620246212462224623246242462524626246272462824629246302463124632246332463424635246362463724638246392464024641246422464324644246452464624647246482464924650246512465224653246542465524656246572465824659246602466124662246632466424665246662466724668246692467024671246722467324674246752467624677246782467924680246812468224683246842468524686246872468824689246902469124692246932469424695246962469724698246992470024701247022470324704247052470624707247082470924710247112471224713247142471524716247172471824719247202472124722247232472424725247262472724728247292473024731247322473324734247352473624737247382473924740247412474224743247442474524746247472474824749247502475124752247532475424755247562475724758247592476024761247622476324764247652476624767247682476924770247712477224773247742477524776247772477824779247802478124782247832478424785247862478724788247892479024791247922479324794247952479624797247982479924800248012480224803248042480524806248072480824809248102481124812248132481424815248162481724818248192482024821248222482324824248252482624827248282482924830248312483224833248342483524836248372483824839248402484124842248432484424845248462484724848248492485024851248522485324854248552485624857248582485924860248612486224863248642486524866248672486824869248702487124872248732487424875248762487724878248792488024881248822488324884248852488624887248882488924890248912489224893248942489524896248972489824899249002490124902249032490424905249062490724908249092491024911249122491324914249152491624917249182491924920249212492224923249242492524926249272492824929249302493124932249332493424935249362493724938249392494024941249422494324944249452494624947249482494924950249512495224953249542495524956249572495824959249602496124962249632496424965249662496724968249692497024971249722497324974249752497624977249782497924980249812498224983249842498524986249872498824989249902499124992249932499424995249962499724998249992500025001250022500325004250052500625007250082500925010250112501225013250142501525016250172501825019250202502125022250232502425025250262502725028250292503025031250322503325034250352503625037250382503925040250412504225043250442504525046250472504825049250502505125052250532505425055250562505725058250592506025061250622506325064250652506625067250682506925070250712507225073250742507525076250772507825079250802508125082250832508425085250862508725088250892509025091250922509325094250952509625097250982509925100251012510225103251042510525106251072510825109251102511125112251132511425115251162511725118251192512025121251222512325124251252512625127251282512925130251312513225133251342513525136251372513825139251402514125142251432514425145251462514725148251492515025151251522515325154251552515625157251582515925160251612516225163251642516525166251672516825169251702517125172251732517425175251762517725178251792518025181251822518325184251852518625187251882518925190251912519225193251942519525196251972519825199252002520125202252032520425205252062520725208252092521025211252122521325214252152521625217252182521925220252212522225223252242522525226252272522825229252302523125232252332523425235252362523725238252392524025241252422524325244252452524625247252482524925250252512525225253252542525525256252572525825259252602526125262252632526425265252662526725268252692527025271252722527325274252752527625277252782527925280252812528225283252842528525286252872528825289252902529125292252932529425295252962529725298252992530025301253022530325304253052530625307253082530925310253112531225313253142531525316253172531825319253202532125322253232532425325253262532725328253292533025331253322533325334253352533625337253382533925340253412534225343253442534525346253472534825349253502535125352253532535425355253562535725358253592536025361253622536325364253652536625367253682536925370253712537225373253742537525376253772537825379253802538125382253832538425385253862538725388253892539025391253922539325394253952539625397253982539925400254012540225403254042540525406254072540825409254102541125412254132541425415254162541725418254192542025421254222542325424254252542625427254282542925430254312543225433254342543525436254372543825439254402544125442254432544425445254462544725448254492545025451254522545325454254552545625457254582545925460254612546225463254642546525466254672546825469254702547125472254732547425475254762547725478254792548025481254822548325484254852548625487254882548925490254912549225493254942549525496254972549825499255002550125502255032550425505255062550725508255092551025511255122551325514255152551625517255182551925520255212552225523255242552525526255272552825529255302553125532255332553425535255362553725538255392554025541255422554325544255452554625547255482554925550255512555225553255542555525556255572555825559255602556125562255632556425565255662556725568255692557025571255722557325574255752557625577255782557925580255812558225583255842558525586255872558825589255902559125592255932559425595255962559725598255992560025601256022560325604256052560625607256082560925610256112561225613256142561525616256172561825619256202562125622256232562425625256262562725628256292563025631256322563325634256352563625637256382563925640256412564225643256442564525646256472564825649 |
- NuttX Release Notes
- ===================
- This file contains are the release notes for the NuttX (and apps) packages
- for every release. The text is just as was written at the time of release
- (with perhaps some corrected typos). Over the course of time, NuttX has
- used several different repositories: CVS, two SVN repositories, and
- currently a GIT repository. Therefore, revision information specific to an
- older repository may not be meaningful today.
- To make it easier to track there older versions in the current GIT
- repository, a GIT lightweight tag has been applied for each release. The
- tag name is the release name (for example, the release 6.27 has tag name
- "nuttx-6.27").
- NuttX-0.1.0
- -----------
- This is the initial. This initial includes the complete NuttX RTOS
- with support for the Linux user mode simulation and the TI TMS320C5471
- (Arm7) processor. Partial support for the 87C52 is included.
- This release has been verified on both the Linux user-mode and C5471
- platforms using the test program under examples/ostest. Test results
- for the C5471 can be found in arch/c5471/doc/test-results.txt.
- This tarball contains a complete CVS snapshot from March 9,2007.
- NuttX-0.1.1
- -----------
- This is the second release of NuttX. This release includes the following.
- See the ChangeLog for more detailed description of the changes.
- (1) General OS bugfixes (see the ChangeLog for details),
- (2) bugfixes for the TI TMS320C5471 (Arm7) platform (see
- the ChangeLog)
- (3) Complete support for the 87C52. (However, the 87C52
- release is not stable enough for general usage).
- (4) Added the beginning of a shell call NuttShell (nsh)
- This release has been verified on the Linux user-mode platform, the
- Spectrum Digital TMS320C5471 EVM, and the PJRC 87C52 development board
- using the test program under examples/ostest.
- STATUS: The development status remains as ALPHA until further testing
- is performed.
- This tarball contains a complete CVS snapshot from March 14, 2007.
- NuttX-0.1.2
- -----------
- This is the third release of NuttX. This release is
- primarily a bugfix release with minimal new features. See
- the ChangeLog for a more detailed description of the
- changes.
- (1) Several important OS and ARM7 bugfixes,
- (2) opendir(), closedir(), readdir(), etc. added
- (3) Added C5471 watchdog timer.
- (4) Created a shareable, serial driver.
- (5) Added 'ls' command to NuttShell (nsh)
- (6) Added a test of the round robin scheduler
- This release has been verified on the Linux user-mode
- platform, the Spectrum Digital TMS320C5471 EVM using the
- test program under examples/ostest.
- This tarball contains a CVS snapshot from March 19, 2007.
- NuttX-0.2.1
- -----------
- This is the fourth release of NuttX. This release adds adds
- support for a new platform, restructures many header files,
- and adds a few new features:
- (1) Support for Neuros OSD / DM320
- (2) Restructuring of header files for better POSIX compliance
- (3) Added kill()
- (4) Added POSIX timers
- (5) bugfixes and documentation updates
- This release has been verified on the Linux user-mode
- platform, the Spectrum Digital TMS320C5471 EVM, and the
- Neuros OSD using the test program under examples/ostest. Because
- of the stability of these tests, the project status
- has been upgraded to 'beta.'
- This tarball contains a complete CVS snapshot from March 22, 2007.
- NuttX-0.2.2
- ------------
- This is the fifth release of NuttX. There is no major new
- functionality in this release. This release adds support
- for new pthread barrier APIs, changes the directory
- structure, to better handle different board configurations
- using the same processor architecture, and corrects a few
- defects.
- See the ChangeLog for a complete list of changes.
- This release has been verified on the Linux user-mode
- platform and the Neuros OSD using the test program under
- examples/ostest. There are no known, critical defects but
- the project development status remains at 'beta' status
- pending further test and evaluation.
- This tarball contains a complete CVS snapshot from
- March 26, 2007.
- NuttX-0.2.3
- ------------
- This is the sixth release of NuttX. This release is
- primarily a bugfix release. Numerous problems were fixed
- as detailed in the change log. New functionality includes
- support for timed message queues.
- See the ChangeLog for a complete list of changes.
- This release has been verified on the Linux user-mode
- platform and the Neuros OSD using the test program under
- examples/ostest. The results of the testing is available in
- the source tree under configs/ntosd-dm320/doc/test-results.
- There are no known, critical defects but the project
- development status remains at 'beta' status pending further
- test and evaluation.
- This tarball contains a complete CVS snapshot from March 29,
- 2007.
- NuttX-0.2.4
- ------------
- This is the 7th release of NuttX. This release is only to roll out
- build changes to better support different SoC's that use the same
- processor architecture. In particular, the two existing ARM architectures,
- c5471 and DM320 were combined into a single ARM directory. This was done
- in preparation for an LPC2148 port that is currently in progress. There
- is NO new functionality or significant bugfixes in this release.
- See the ChangeLog for a complete list of changes.
- This release has been verified on the Linux user-mode platform
- and the Neuros OSD using the test program under examples/ostest.
- The results of the testing is available in the source tree under
- configs/ntosd-dm320/doc/test-results and under configs/sim/doc/test-results.
- There are no known, critical defects but the project development status
- remains at 'beta' status pending further test and evaluation.
- This tarball contains a complete CVS snapshot from April 28, 2007.
- NuttX-0.2.5
- ------------
- This is the 8th release of NuttX. This release includes:
- (1) Several bug fixes
- (2) Initial support for FAT filesystems. Testing has not
- been exhaustive and some functionality is missing
- (mkdir, stat, unlink chmod, and rename functionality is
- not yet implemented).
- (3) Support for the NXP lpc2148 processor is included but
- is untested as of this writing. The current
- implementation includes only support for serial console
- and timer interrupt.
- See the ChangeLog for a complete list of changes.
- This release has been verified only on the Linux user-mode
- platform.
- This tarball contains a complete CVS snapshot from May 19,
- 2007.
- NuttX-0.2.6
- -----------
- This is the 9th release of NuttX. This is primarily a
- bugfix release to correct a number of problems introduced
- with the 0.2.5 release. This release does include some FAT
- filesystem extensions including unlink(), mkdir(), rmdir(),
- rename(), opendir(), closedir(), readdir(), seekdir(),
- telldir(), rewindir(). There are some pending FAT changes
- that did not make it into this release including stat(),
- truncate(), and long file names.
- See the ChangeLog for a complete list of changes.
- This release has been verified only on the Linux user-mode platform.
- This tarball contains a complete CVS snapshot from May 26, 2007.
- NuttX-0.2.7
- -----------
- This is the 10th release of NuttX. This is primarily a bugfix
- release to correct a number of problems reported to me (thanks
- Didier!). This release does include the final changes complete the
- FAT filesystem logic including stat(), statfs(), and non-standard
- APIs to manage FAT attributes. At present, FAT long file names and
- file truncate() are still not supported.
- See the ChangeLog for a complete list of changes.
- This release has been verified only on the Linux user-mode platform.
- This tarball contains a complete CVS snapshot from June 9, 2007.
- NuttX-0.2.8
- -----------
- This is the 11th release of NuttX. This release:
- (1) corrects important bugs in opendir() and realloc()
- (2) adds support for environment variables
- (3) adds several new C library interfaces
- (4) extends several example programs
- See the ChangeLog for a complete list of changes.
- This release has been verified only on the Linux user-mode platform.
- This tarball contains a complete CVS snapshot from July 2, 2007.
- NuttX-0.3.0
- -----------
- This is the 12th release of NuttX. This release includes the initial
- integration of a network subsystem and the uIP TCP/IP stack into NuttX
- (see http://www.sics.se/~adam/uip/index.php/Main_Page). Also included
- is a device driver for the Davicom DM90x0 Ethernet controller.
- This integration is very preliminary. Only a small portion of the
- network functionality has been integrated and there are a number of
- open issues (see the TODO file). The network subsystem is pre-alpha
- at this point in time. I expect that it will stabilize and mature
- over the next few releases.
- The baseline functionality of NuttX continues to mature and remains at
- post-beta (as long as the network is not used).
- See the ChangeLog for a complete list of changes.
- This release has been verified only on the Neuros OSD (DM320 ARM9)
- platform using the DM90x0 driver.
- This tarball contains a complete CVS snapshot from November 6, 2007.
- NuttX-0.3.1
- -----------
- This is the 13th release of NuttX and the second release containing
- the integration of a network subsystem and the uIP TCP/IP, UDP, and
- ICMP stacks into NuttX (see http://www.sics.se/~adam/uip/index.php/Main_Page).
- Many network-related problems have been fixed and the implementation
- has matured significantly. However, the level of network reliability
- is probably still at the pre-alpha or early level. It is sufficiently
- complete that you may begin to perform some network integration and
- is expected to achieve beta level of reliability over the next few
- releases.
- The baseline functionality of NuttX continues to mature and remains at
- post-beta (as long as the network is not used).
- See the ChangeLog for a complete list of changes.
- This release has been verified only on the Neuros OSD (DM320 ARM9)
- platform using the DM90x0 driver.
- This tarball contains a complete CVS snapshot from November 19, 2007.
- NuttX-0.3.2
- -----------
- This is the 14th release of NuttX and the 3rd release containing
- the integration of a network subsystem and the uIP TCP/IP, UDP, and
- ICMP stacks into NuttX (see http://www.sics.se/~adam/uip/index.php/Main_Page).
- Many network-related problems have been fixed and the implementation
- has matured significantly. This release consists of:
- o TCP-related bug-fixes
- o TCP performance improvements
- o Initial UDP integration
- o Initial uIP micro webserver integration
- See the ChangeLog for a complete list of changes.
- The level of network reliability is at alpha level is expected to
- achieve beta level of reliability over the next few releases.
- The baseline functionality of NuttX continues to mature and remains at
- post-beta.
- This release has been verified only on the Neuros OSD (DM320 ARM9)
- platform using the DM90x0 driver.
- This tarball contains a complete CVS snapshot from November 23, 2007.
- NuttX-0.3.3
- -----------
- This is the 15th release of NuttX and the 4th release containing
- the integration of a network subsystem and the uIP TCP/IP, UDP, and
- ICMP stacks into NuttX (see http://www.sics.se/~adam/uip/index.php/Main_Page).
- Many network-related problems have been fixed and the implementation
- has matured significantly. This release consists of:
- o TCP-related bug-fixes for disconnecting sockets
- o Correction of some TCP read-ahead logic
- o TCP performance improvements
- o Misc. additions and cleanup (See the ChangeLog for a complete list of
- changes).
- The level of network reliability is at an early beta release level. The
- baseline functionality of NuttX continues to mature and remains at
- post-beta. Open network-related issues include only:
- o Some minor unimplemented BSD socket functionality,
- o Thread safety issues: the same socket cannot be used concurrently on
- different threads.
- o Pending design changes necessary to support multiple network interfaces.
- o IPv6 support is incomplete.
- This release has been verified only on the Neuros OSD (DM320 ARM9)
- platform using the DM90x0 driver. Any feedback for improving the network
- reliability/performance would be greatly appreciated.
- This tarball contains a complete CVS snapshot from November 28, 2007.
- NuttX-0.3.4
- -----------
- This is the 16th release of NuttX and the 5th release containing
- the integration of a network subsystem and the uIP TCP/IP, UDP, and
- ICMP stacks into NuttX (see http://www.sics.se/~adam/uip/index.php/Main_Page).
- This release is primarily a bug-fix release. New features include
- only:
- o TELNET front-end to NSH,
- o DHCPC server functionality, and
- o C5471 Ethernet driver.
- Numerous network related problems were fixed related to DHCPC, UDP
- input processing, UDP broadcast, send timeouts, and bad compilation when
- uIP is compiled at high levels of optimization.
- The level of network reliability is at a strong beta release level. The
- baseline functionality of NuttX continues to mature and remains at
- post-beta or production level.
- Parts of this release were verified only on the Neuros OSD (DM320 ARM9)
- platform using the DM90x0 Ethernet driver and other parts on the Spectrum
- Digital C5471 EVM using the C5471 Ethernet driver. Any feedback about bugs
- or suggestions for improving the network reliability/performance would be
- greatly appreciated.
- This tarball contains a complete CVS snapshot from December 10, 2007.
- NuttX-0.3.5
- -----------
- This is the 17th release of NuttX this release is primarily a bug-fix
- release and intended to synchronize with the current CVS contents. See
- the ChangeLog for a detailed list of changes and fixes.
- This release were verified only on the Spectrum Digital C5471 EVM using
- the C5471 Ethernet driver. Any feedback about bugs or suggestions for
- improvement would be greatly appreciated.
- This tarball contains a complete CVS snapshot from December 18, 2007.
- NuttX-0.3.6
- -----------
- This is the 18th release of NuttX. This release contains on a few
- changes. The primary purpose of this release is to synchronize with
- the release of the pascal-0.1.0 add-on package.
- This release of NuttX includes the following changes:
- * Fixes for use with SDCC compiler
- * Added a simulated z80 target (arch/z80)
- * Fix deadlock errors when using stdio but with no buffering
- * Add support for the add-on Pascal P-Code interpreter (pcode/)
- (see the pascal-0.1.0 package)
- This release were verified only on the simulated Z80 and and host
- simulation targets. As usual, any feedback about bugs or suggestions
- for improvement would be greatly appreciated.
- This tarball contains a complete CVS snapshot from January 6, 2007.
- ====
- There was an error in the initial 0.3.6 release that prevented
- a successful build unless the Pascal add-on was present. The
- tarball was patched to include the fix. Make sure that you download
- the nuttx-0.3.6.1.tar.gz version to avoid this problem.
- NuttX-0.3.7
- -----------
- This is the 19th release of NuttX. This release includes the
- preliminary port of NuttX to the ZiLOG z16f 16-bit microcontroller.
- This port was verified using the ZiLOG z16f2800100zcog Development
- and the ZiLOG ZDS-II toolchain. See http://www.zilog.com for
- further information.
- I emphasize that this is a preliminary release of the z16f port and
- is only alpha or, perhaps, pre-alpha quality as of this writing.
- There are a list of known issues in the TODO file in the root of
- the NuttX directory. The overall quality of NuttX (excluding the
- z16f port) continues to improve beyond the late beta level.
- The z16f port required numerous changes to NuttX to handle:
- * NEAR and FAR addressing, and
- * Use of a Windows native toolchain in a Cygwin build environment.
- In addition to the z16f port, at least one very critical bug was
- found and corrected in NuttX: The thread-specific errno value of one
- task was being randomly trashed when a different thread exited.
- This release were verified on the ZiLOG z16f2800100zcog, Neuros OSD
- (ARM9), and the simulation platforms. As usual, any feedback about bugs
- or suggestions for improvement would be greatly appreciated.
- This tarball contains a complete CVS snapshot from January 31, 2008.
- NuttX-0.3.8
- -----------
- This is the 20th release of NuttX. This is a minor bugfix release.
- It corrects a few minor problems, adds a few minor features, and
- continues the integration of the ZiLOG Z18F and of the Pascal P-Code
- add-on. This release is synchronized with the release of Pascal-0.1.2.
- This tarball contains a complete CVS snapshot from February 10, 2008.
- NuttX-0.3.9
- -----------
- This is the 21st release of NuttX. This is a minor future enhancement
- release. This release includes support for the ZiLOG Z8Encore! micro-
- controller. Also included is the initial framework for support for
- the Z80, XTRS platform (http://www.tim-mann.org/xtrs.html).
- This released has been verified only on the ZiLOG ZDS-II Z8Encore!
- chip simulation.
- This tarball contains a complete CVS snapshot from March 9, 2008.
- NuttX-0.3.10
- ------------
- This is the 22nd release of NuttX. This is an important bug fix
- release. This release incorporates fixes to correct critical list
- handling errors in task shutdown logic: One in timer deletion logic
- (timer_delete.c) and one in stream logic (lib_init.c). This release
- also includes support to ZiLOG EZ80Acclaim microcontroller (EZ80F91
- chip) and configurations for the ZiLOG z8f64200100kit (Z8F6423) and
- ez80f0910200kitg (EZ80F091) development kit.
- NuttX-0.3.11
- ------------
- This is the 23rd release of NuttX. This is another important bugfix
- release. This releases fixes several bugs:
- * Two POSIX timer bugs: a memory leak as well a fatal sequencing error.
- * Several FAT filesystem errors.
- * A deadlock that can occur in opendir()
- A few new features were also added:
- * Support for recursive mutexes
- * Added a RAM disk block driver
- * The host simulator no longer uses direct Linux system calls and
- now also works on Cygwin.
- * The OS test was strengthen and now runs as an endurance test
- These changes were verified only on the Host simulator under Cygwin.
- Please report any errors to me.
- This tarball contains a complete CVS snapshot from June 1, 2008.
- NuttX-0.3.12
- ------------
- This is the 24th release of NuttX. This release includes some minor
- bugfixes as well as a few new features. Bugs fixed include:
- * Corrected an error in recursive mutex implementation.
- * task_create() was only dup()ing the first three file descriptors.
- * Fixed driver open reference counting errors in dup(), dup2(), and exit().
- * Fixed error handling logic in fflush().
- New features were also added:
- * Pipes and pipe() API
- * FIFOs and mkfifo() API
- * mkfatfs() API can be used to format FAT file systems.
- These changes were verified only on the Host simulator under Cygwin.
- Please report any errors to me.
- This tarball contains a complete CVS snapshot from August 10, 2008.
- NuttX-0.3.13
- ------------
- This is the 25th release of NuttX. This release includes some
- important bugfixes as well as a few new features. Bugs fixed
- include:
- * Fixed problems with Cygwin-based console input. NSH now works
- with the Cygwin simulator.
- * sched_get_priority_max/min returned error on SCHED_RR
- * Corrected detection of End-of-File in fgets()
- * Fixed an error in opendir() that could cause an assertion to fail
- inappropriately.
- * Corrected an error in the FAT that caused files opened for writing
- with O_APPEND to fail.
- * Fix error in getopt() when called with argc==1
- * Fix error in stat() when used on the root directory
- * Fixed a critical bug that effects the way that environment variables
- are shared among pthreads.
- * uIP port now supports multi-threaded, concurrent socket access.
- So, for example, one thread can be reading from a socket while
- another is writing to the socket.
- New features were also added:
- * New OS APIs: chdir() and getcwd()
- * The Nuttx shell (NSH) has been extended in many ways.
- - New commands: mkfatfs, mkfifo, sleep, usleep, nice, sh, cd, and pwd
- - New memory inspection commands and heap usage commands
- - New capabilities:
- - Execution of commands in background
- - Execution of simple scripts
- - Redirection of command output
- - Last command status ($?)
- - Now supports if-then[-else]-fi construct
- - Other features as noted in the ChangeLog.
- These changes were verified only on the Host simulator under Cygwin
- and under Linux and also on the Neuros OSD (ARM9). Please report
- any errors to me.
- This tarball contains a complete CVS snapshot from September 1, 2008.
- nutt-0.3.14
- -----------
- This is the 26th release of NuttX. This release includes some
- important bugfixes as well as a few new features. Critical bugs
- fixed include:
- FAT FS:
- * Fixed several critical bugs with regard to fat reading and
- writing and FAT12 accesses. Basically the FAT FS only worked
- with my tiny test files and test cases. A lot of stronger FAT
- tested is still needed!
- * Fixed another FAT bug in implementation of FAT lseek();
- this prohibited correct random access to large files.
- Network:
- * Corrected a critical bug that may prevent recvfrom from receiving
- packets from most remote UDP port numbers.
- * Corrected an error in multi-threaded socket handling in send() and
- sendto(). Outgoing data could overwrite incoming data.
- * Corrected IP checksum calculation in ICMP and UDP message send logic.
- * Corrected an error in send() timeout logic.
- New features were also added:
- Network:
- * Added support for application access to ICMP protocol stacks
- * Added ping request logic (net/uip).
- * Added basic TFTP client logic (netutils/tftpc).
- NuttShell (NSH):
- * New commands: 'test', '[', 'ping', 'mkrd', 'xd', and TFTP 'get' and 'put'
- See the new NuttShell User Guide for additional information.
- Other less critical bugs were also fixed and other less important
- features were were added. See the ChangeLog for details.
- These changes were verified only on the Neuros OSD (ARM9). Please
- report any errors to me.
- This tarball contains a complete CVS snapshot from September 8, 2008.
- nutt-0.3.15
- -----------
- This is the 27th release of NuttX. This release includes some new features:
- * Adds support for the ROMFS filesystem
- * ROMFS supports mmap() to provide eXecute In Place (XIP) capability
- * NuttShell (NSH) can be configured to use ROMFS to provide a tiny read-only
- filesystem with a startup script in /etc.
- * Completed the basic port of the NXP LPC2148 on the mcu123.com board.
- The basic port includes successful booting, timer interrupts,
- serial console, successfully passing the examples/ostest, and a
- NuttShell (NSH) configuration.
- These changes were verified only on the mcu123.com NXP LPC2148
- board. Please report any errors to me.
- This tarball contains a complete CVS snapshot from September 20, 2008.
- nutt-0.3.16
- -----------
- This is the 28th release of NuttX. This release includes the first
- support for USB in NuttX. A set of USB APIs were added to support
- USB device controller drivers and bindings to USB device class
- drivers. The form of the interface was inspired by the Linux Gadget APIs.
- At present USB device controller drivers are included for:
- * The NXP LPC214x. This driver has been verified and is an early alpha
- stage in quality.
- * TI DM320. Coding for this driver is complete but it is completely
- untested as of this release.
- A controller-independent class driver is also included for:
- * USB serial class device driver (emulates the Prolific PL2303
- serial-to-USB adapter). This driver has only been verified with
- the Linux host PL2303 driver.
- Other new features include:
- * Add an option to set aside a separate stack for interrupt
- handling (ARM only). This is useful when memory is constrained,
- there are multiple tasks, and the interrupt stack requirement
- is high (as when USB is enabled).
- A few bugs were also fixed:
- * Fixed the frequency of system timer interrupts in the NXP LPC214x port
- (off by 20x in nuttx-0.3.15)
- * Fixed serial driver bugs related to (1) open counts and (2) recognizing
- O_NONBLOCK on read.
- * Fixed an error in read(); it was not setting the errno on errors returned
- from the driver.
- These changes were verified only on the mcu123.com NXP LPC2148 board
- using with a Linux host. Please report any errors to me.
- This tarball contains a complete CVS snapshot from October 10, 2008.
- UPDATE
- ------
- This release does not build for the ARM target when USB is disabled.
- Here is the fix:
- Index: arch/arm/src/common/up_internal.h
- ===================================================================
- RCS file: /cvsroot/nuttx/nuttx/arch/arm/src/common/up_internal.h,v
- retrieving revision 1.13
- diff -u -r1.13 up_internal.h
- --- arch/arm/src/common/up_internal.h 6 Oct 2008 16:20:52 -0000 1.13
- +++ arch/arm/src/common/up_internal.h 13 Oct 2008 20:48:21 -0000
- @@ -200,7 +200,8 @@
- extern void up_usbinitialize(void);
- extern void up_usbuninitialize(void);
- #else
- -# define up_netinitialize()
- +# define up_usbinitialize()
- +# define up_usbuninitialize()
- #endif
- #endif /* __ASSEMBLY__ */
- NuttX-0.3.17
- ------------
- This is the 29th release of NuttX. This release includes the
- additional support for USB in NuttX. The following new features
- were added:
- * Added support for SPI-based MMC/SD cards (with an SPI driver
- for the NXP LPC214x).
- * Added USB storage class device side driver (BBB)
- * Added an example that demonstrates the USB storage class by
- exporting the SPI based MMC/SD card on the NXP LPC214x.
- This is an early alpha release of these drivers. At present they
- only work with debug features enabled so there are probably some
- race conditions that occur only with debug features disabled.
- (Anyone out there with a USB analyzer? I would love to know what
- is happening.)
- Several important bugs were also fixed in the FAT file system, USB
- serial driver and NXP LPC214x USB controller driver. (See the ChangeLog
- for details.)
- These changes were verified only on the mcu123.com NXP LPC2148 board
- using a Linux development environment. USB testing was performed
- using both a Linux host and a WinXP host. Please report any errors
- to me.
- This tarball contains a complete CVS snapshot from October 28, 2008.
- NuttX-0.3.18
- ------------
- This is the 30th release of NuttX. This release includes two
- partially completed ports, several new features, and a couple of
- important bug fixes. The two partially completed ports are:
- * The STMicro STR71x processor and configuration for the Olimex
- STR-P711 board.
- * The Hitachi SH-1 using the SH1_LCEVB1 (SH-1/US7032EVB1) board
- Progress on these ports is stalled (as detailed in the ChangeLog).
- The new features focus primarily on management of block devices and
- extensions of the NuttShell (NSH). These include:
- * A loop device that converts a file into a block device.
- * A block to character (BCH) driver that allow access a block device as
- if it were character device.
- * Added strcasecmp() and strncasecmp() libc functions.
- * Added the 'dd' and 'losetup' commands to NSH. These commands
- (along with mkfatfs and mount), give good management of filesystems
- on the target.
- Several bugs were fixed, the most important of which are:
- * Fixed a race condition workaround delay in LPC214X SPI logic.
- This was also the cause of some bad MMC/SD performance on that
- platform.
- * Fixed a recently introduced FAT file system problem: It would
- mount a (invalid) FAT file system even if the medium is not formatted!
- * Corrected two other important errors in the FAT lseek() implementation:
- 1 - The sectors-per-cluster value was being reset to "1".
- 2 - Important lseek logic was omitted when the seek position was zero.
- The FAT filesystem has had many bugs fixed in it and, I think, is
- now maturing and becoming stable.
- These changes were verified only on the mcu123.com NXP LPC2148
- board, the Hitachi SH1_LCEVB1 board, and the Linux simulator, all
- using a Linux development environment. Please report any errors
- to me.
- This tarball contains a complete CVS snapshot from November 16, 2008.
- NuttX-0.3.19
- ------------
- This is the 31st release of NuttX. This release includes the
- following new feature:
- * Add poll() and select() APIs that may be used to monitor for
- data availability on character devices or TCP/IP sockets.
- * Implemented support TCP/IP connection backlog. This allows
- select() to wake-up on new connections to a listener socket.
- * Added definition of a framebuffer driver and implement framebuffer
- drivers for the simulated platform and the TI DM320 (untested
- as of the initial check-in).
- * Partially developed a graphics framework based on the framebuffer
- drivers, however, this will not be ready for use for a few more
- releases. Currently this includes only a few color conversion
- routines and some rasterizing functions. A tiny windowing system
- is under development but not ready for check-in yet.
- * Added support for fixed precision math.
- * Added support for outgoing multicast packets.
- Several bugs were fixed, the most important of which are:
- * Fixed an important bug in the TCP/IP buffering logic. When
- TCP/IP read-ahead is enabled and not recv() is in-place when a
- TCP/IP packet is received, the packet is placed into a read-ahead
- buffer. However, the old contents of the read-ahead buffer
- were not being cleared and old data would contaminate the newly
- received buffer.
- * Changed the behavior of the serial driver read. It now returns
- data as it is available rather than waiting for the full requested
- read size. This makes functions like fgetc() work much more
- smoothly.
- These changes were verified only on the Neuros OSD (ARM9) using a
- Linux development environment. Please report any errors to me.
- This tarball contains a complete CVS snapshot from November 26, 2008.
- NuttX-0.4.0
- -----------
- This is the 32nd release of NuttX. This release adds graphics
- support and a tiny windowing subsystem. That new graphics subsystem
- is documented at http://nuttx.sourceforge.net/NXGraphicsSubsystem.html.
- No other substantial changes were made.
- These changes were verified only on the NuttX simulation platform
- with X11 windows simulating a device framebuffer. Please report any
- errors to me.
- The version number was bumped up to 0.4.0 in part to reflect the
- new graphics subsystem, but also to recognize the NuttX is approaching
- complete functionality. In the 0.3.x versions, network support was
- added, Pascal P-code runtime support was added, FAT and ROMFS
- filesystems were added, MMC/SD and USB device support were added.
- There were also numerous extensions to the NuttShell, NuttX APIs,
- and architecture ports.
- This tarball contains a complete CVS snapshot from December 6, 2008.
- NuttX-0.4.1
- -----------
- This is the 33rd release of NuttX. This is a minor bugfix release.
- The primary reason for this release is to correct numerous build
- errors that have accumulated for the ZiLOG ZDS-II based targets.
- All ZDS-II targets now build correctly (but have not been re-tested).
- In addition to platform-specific build failures, this release also
- adds the following features which were not tested as of the time
- of the release:
- * Board support for the ZiLog ez80Acclaim! ez80f910200zco Development Kit
- * ZiLOG eZ80F91 EMAC driver
- These changes were verified only on the NuttX simulation platform.
- Please report any errors to me.
- This tarball contains a complete CVS snapshot from February 6, 2009.
- NuttX-0.4.2
- -----------
- This is the 34th release of NuttX. This release adds no new OS
- features but does include support for two new architectures:
- * ez80Acclaim! Basic support has been integrated and verified
- for the ez80f910200zcog-d board (eZ80F91-based). That basic
- support includes timer interrupts and serial console. Ongoing
- work includes an EMAC driver that should be integrated for the
- next release nuttx-0.4.2. eZ80Acclaim! support has been in the
- code base for some time, but has only just been integrated due
- to toolchain issues.
- * Renesas M16C/20. Support for the Renesas SKP16C20 board has
- been included in the NuttX source tree. However, as the
- eZ80Acclaim!, testing and integration of that port is stalled
- due to toolchain issues.
- These changes were verified only on the ZiLOG eZ80910200zcog-d
- board. Please report any errors to me.
- This tarball contains a complete CVS snapshot from February 28, 2009.
- NuttX-0.4.3
- -----------
- This is the 35th release of NuttX. This release one important new
- OS feature and corrects and extends the eZ80 port:
- * Priority Inheritance. The basic NuttX waiting logic was extended
- to support priority inheritance. See the NuttX User Manual for
- further information:
- http://www.nuttx.org/NuttxUserGuide.html#priorityinheritance.
- * ez80Acclaim! Corrected several critical, show-stopping bugs on that
- platform including:
- - Errors in the serial driver interrupts.
- - An error in the eZ80 table.
- * eZ80Acclaim!: Completed integration of the eZ80F91 EMAC driver.
- These changes were verified only on the ZiLOG eZ80910200zcog-d board
- and on Cygwin-based simulation platform in various configurations.
- Please report any errors to me.
- This tarball contains a complete CVS snapshot from March 13, 2009.
- NuttX-0.4.4
- -----------
- This is the 36th release of NuttX. This release focuses on bugfixes
- and extending and verifying certain networking features.
- * Important bugs were fixed in NSH, UDP checksum calculation, UDP
- bind() behavior for port==0, the eZ80Acclaim! EMAC driver, Z80
- interrupt handling, and in the C libraries.
- * Testing was extended to further verify the tiny webserver,
- DHCPD, wget(), and sendmail.
- See the Changelog for a detailed description of these changes.
- These changes were verified only on the ZiLOG eZ80910200zcog-d board
- using the ZDS-II toolchain in Cygwin-based environment. Please
- report any errors to me.
- This tarball contains a complete CVS snapshot from March 29, 2009.
- NuttX-0.4.5
- -----------
- This is the 37th release of NuttX. This release focuses on a few new features.
- * The basic port for the Freescale ARM920T i.MX1 processor on the
- Freescale MX1ADS board. Coding is complete for this port, but
- it is has not yet fully integrated
- * Extended I2C and SPI interface definitions
- * Add basic support for C++ applications. Very simple C++
- applications can now be built against NuttX without any external
- libraries. At present, only the most primitive C++ programs
- are supported, but it is hoped that this support will be extended
- in future releases.
- See the Changelog for a detailed description of these changes.
- This tarball contains a complete CVS snapshot from April 19, 2009.
- NuttX-0.4.6
- -----------
- This is the 38th release of NuttX. The release features support
- for the Micromint Eagle-100 development board. This board is based
- around, the Luminary LM3S6918 MCU. This is the first ARM Cortex-M3
- architecture supported by Nuttx. This initial, basic port includes
- timer and serial console with configurations to execute the NuttX
- OS test and to run the NuttShell (NSH). Work is still underway on
- this port and current plans are to have I2C, SSI, MMC/SD, and and
- Ethernet driver in the 0.4.7 release.
- Additional work was done on the MXADS i.MX1 port, however, that
- work has been set aside until I complete work on the Eagle-100 (I
- also need to come up with a 3V power supply).
- Other changes in this release include: Extensions to the SPI interface
- definition in order to handle 9-bit interfaces to displays. Several
- bugs were fixed (see the ChangeLog for a complete list of changes).
- This tarball contains a complete CVS snapshot from May 19, 2009.
- NuttX-0.4.7
- -----------
- This is the 39th release of NuttX. This release focuses on cleaning
- up and extending the Eagle100/LM3S6918 port released in nuttx-0.4.6
- and on improved MMC/SD support. New features include:
- * Improved reliably and additional drivers for the Eagle-100 board
- (LM3S6918 ARM Cortex-M3). Additional drivers include Ethernet,
- SSI, and support for the on-board LEDs and microSD cards.
- * The SPI-based MMC/SD driver was extended to support SDHC Version
- 2.xx cards.
- In addition, this release includes several important bugfixes for
- the LM3S6918, the LPC2148, the SPI-based MMC/SD driver, and to
- FAT32. See the ChangeLog for details of these bugfixes.
- This tarball contains a complete CVS snapshot from May 29, 2009.
- NuttX-0.4.8
- -----------
- This is the 40th release of NuttX. This release adds:
- * Support for the Olimex STRP711 board. That board is based on
- the STMicro STR711 MCU (ARM7TDMI). Integration is complete on
- the basic port (boot logic, system time, serial console). Two
- configurations have been verified: (1) The board boots and
- passes the OS test with console output visible on UART0, and
- the NuttShell (NSH) is fully functional with interrupt driven
- serial console. An SPI driver is available but untested (because
- the Olimex card slot appears to accept only MMC cards; I have
- only SD cards). Additional needed: USB and driver, MMC
- integration.
- * Support for the CodeSourcery and devkitARM Windows-native GNU
- toolchains. Makefiles have been modified for the LM3S6918,
- LPC2148, and STR711 to support these toolchains under Cygwin.
- This tarball contains a complete CVS snapshot from June 13, 2009.
- NuttX-0.4.9
- -----------
- This is the 41st release of NuttX. This release adds:
- * Support for a new binary format call NXFLAT that can be used to
- execute separately linked programs in place in a file system.
- See http://www.nuttx.org/NuttXNxFlat.html.
- * Several important bugs were files related to networking and ROMFS.
- See the ChangeLog for a complete list.
- This tarball contains a complete CVS snapshot from June 26, 2009.
- NuttX-0.4.10
- -----------
- This is the 42nd release of NuttX. This released focused on the
- port of Jeff Poskanzer's THTTPD HTTP server (see
- http://acme.com/software/thttpd/). As of the 0.4.10 release, that
- port is still not fully complete and functional. However, numerous
- related bug-fixes and functional additions for THTTPD were added:
- * Several new standard C-library functions (fileno, strstr,
- strpbrk, fcntl).
- * Improved and extended timing APIs (mktime, gmtime, gmtime_r,
- gettimeofday, localtime, localtime_r, and strftime)
- * Networking enhancements: recvfrom() and accept() now work with
- non-blocking sockets.
- * NXFLAT extensions (exec)
- * Pattern matching logic.
- * And miscellaneous bug fixes (see the ChangeLog for details).
- This tarball contains a complete CVS snapshot from August 8, 2009.
- NuttX-0.4.11
- ------------
- This is the 43rd release of NuttX. This release of NuttX incorporates
- the verified port of Jeff Poskanzer's THTTPD HTTP server (see
- http://acme.com/software/thttpd/). Many of the key features of
- THTTPD have been tested on the Micromint Eagle-100 development board
- (Cortex-M3). These tests verify:
- * Serving of files from any file system
- * Execution of CGI executable. This release supports execution
- of NXFLAT executables on a ROMFS file system
- (http://www.nuttx.org/NuttXNxFlat.html)
- A standard CGI interface is used: Information is pasted to the CGI
- program via POST commands and via environment variables. CGI socket
- I/O is redirected to stdin and stdout so that the CGI program only
- need to printf() to send its content back to the HTTP client.
- Another value to this THTTPD integration effort has been that THTTPD
- has provided a very good test bed for finding NuttX networking bugs.
- Several very critical networking bugs have been fixed with this
- 0.4.11 release (see the ChangeLog for details). Networking throughput
- has also been greatly improved. Anyone using NuttX networking
- should consider upgrading to this release.
- This tarball contains a complete CVS snapshot from September 16, 2009
- NuttX-0.4.12
- ------------
- This is the 44th release of NuttX. This release adds basic support
- for the STMicro STM32, Cortex-M3 MCU. The specific port is to the
- STMicro STM3210E-EVAL development board based around the STM32F103ZET6
- MCU. Some highlights of this port:
- * This basic port includes boot-up logic, interrupt driven serial
- console, and system timer interrupts.
- * Includes a basic STMicro RIDE7 project that can be used to
- perform basic STM32 board bring-up (due to RIDE7 size limitations,
- it cannot be used for the full NuttX bring-up).
- * Working, Tested Configurations: the NuttX OS test and the
- NuttShell (NSH) example.
- This basic STM32 port will be extended in the 0.4.13 NuttX release.
- Functionality needed for complete STM32 support includes: USB
- device driver, LCD driver and NX bringup on the development board's
- display and MicroSD support. An SPI driver and a DMA support was
- included in this 0.4.12 release, but is not yet tested.
- This tarball contains a complete CVS snapshot from October 17, 2009
- NuttX-0.4.13
- ------------
- This is the 45th release of NuttX. The release extends the support
- for the STMicro STM32 microcontroller. Minimal support for the
- STM3210E-EVAL development board based around the STM32F103ZET6 MCU
- was released in NuttX-0.4.12. This release adds:
- * A simple interface definition to support some FLASH, EEPROM,
- NVRAM, etc. devices.
- * Verified SPI operation using driver for SPI based FLASH parts
- M25P64 and M25P128.
- * Improved Cortex-M3 context switching. This should improve
- context switching performance be 2x in certain cases.
- * Added a USB device-side driver for the STM32. This is an early
- release of a very complex driver; some bugs are expected.
- * The USB driver has been verified against the USB serial device
- class driver. There is at least one known outstanding issue
- (see the full bug description in the TODO list).
- This release also corrects some important bugs in the early STM32 release:
- * Fixed several errors the prevented operation of NuttX on an
- STM32 development board using USART2 as the serial console.
- * Fixed and optimization-dependent race condition in the clock
- initialization.
- * Fixed a critical bug in the interrupt control logic that could
- cause interrupt operations to failed used for interrupts in a
- certain range.
- This tarball contains a complete CVS snapshot from November 4, 2009
- NuttX-4.14
- ----------
- This is the 46th release of NuttX. The release extends the support
- for the STMicro STM32 microcontroller. Minimal support for the
- STM3210E-EVAL development board based around the STM32F103ZET6 MCU
- was released in NuttX-0.4.12 and extended in Nuttx-0.4.13 to include
- initial USB support. This completes the STM32F103ZET6 and adds:
- New Generic RTOS Features:
- * Added generic support that can be included in any block driver
- to provide read-ahead buffering and write buffering for improved
- driver performance.
- * Added a generic worker thread that can used to defer processing
- from an interrupt to a task.
- * Defined a generic SD/SDIO interface can can be bound to a MMC/SD
- or SDIO driver to provide SDIO support.
- * Implemented a an SDIO-based MMC/SD driver using this new SDIO
- interface.
- New STM32 Features:
- * Add support to configure an STM32 input GPIO to generate an
- EXTI interrupt.
- * Added support for buttons on the STM3210E-EVAL board.
- * Implemented an STM32 version of the common the SDIO interface.
- * Added a configuration to exercise the STM32 with the USB mass
- storage device class example.
- This release also corrects some important bugs in the early STM32 release:
- * Correct error handling in the mount() logic.
- * Fixed several STM32 DMA-related issues. Integrated and debugged
- STM32 DMA functionality that was added in 0.4.12.
- * Fixed several bugs in the STM32 USB device-side driver.
- NOTE: This version, 4.14, is equivalent to what would have been
- called 0.4.14 to follow 0.4.13. The zero has been eliminated from
- the front of the version number to avoid confusion about the state
- of development: Some have interpreted the leading zero to mean
- that the code is in some way unstable. That was not the intent.
- Beginning in January 2010, I will switch to the 2010.nn versioning
- as many others have done to avoid such confusion.
- This tarball contains a complete CVS snapshot from December 2, 2009
- NuttX-5.0
- ---------
- This is 47th release of NuttX and the successor to nuttx-4.14. This
- major revision number has been incremented to indicate that an
- incompatibility with previous nuttx releases has been introduced.
- This version adopts standard fixed width integer names as specified
- by the ANSI C99 standard. The core logic of NuttX is older than
- that standard and did not conform to it.
- If you have applications running on NuttX-4.14, those applications
- should continue to build and execute without problem on NuttX-5.0.
- However, if you have device drivers or other OS-internal logic, you
- will probably have to make some minor changes to your code to use
- this version. Below is a summary of those changes:
- * If you include sys/types.h to get the non-standard, fixed width
- integer types (uint32, uint16, ubyte, etc.), that is no longer
- necessary.
- * Instead, you will need to include stdint.h where the new fixed
- width integer types are defined (uint32_t, uint16_t, uint8_t, etc).
- * You will have to change all occurrences of the following types:
- uint32 -> uint32_t
- uint16 -> uint16_t
- ubyte -> uint8_t
- uint8 -> uint8_t
- sint32 -> int32_t
- sint16 -> int16_t
- sint8 -> int8_t
- * In addition, the non-standard type 'boolean' must replaced with
- the standard type 'bool'. The type definition for 'bool' is in
- stdbool.h
- This change in typing caused small changes to many, many files. It
- was verified that all configurations in the release still build
- correctly (other than the SDCC-based configurations). Regression
- testing was performed on a few configurations, but it is possible
- that minor build issues still exist. (If you encounter any, please
- let me know and I will help you to fix them.)
- In the course of the regression testing, several important bugs
- unrelated to the type changes were found and corrected.
- * Fixed an important error in the RX FIFO handling logic of the
- LM3S6918 Ethernet driver.
- * Corrected the handling of TCP sequence numbers in the TCP stack.
- * And other less important bugs as detailed in the ChangeLog.
- The primary focus of this release was standards compatibility, but
- a few new features were added including a (1) Flash Translation
- Layer (FTL) that will support filesystems on a FLASH device and (2)
- partial ports for the STM32F107VC and HCS12 C9S12NE64 MCUs. Those
- ports are very incomplete as of this writing.
- This tarball contains a complete CVS snapshot from December 21, 2009
- NuttX-5.1
- ---------
- This is the 48th release of NuttX. This release adds support for
- two new MCU architectures in various states of development:
- * AT91SAM3U (http://www.atmel.com/products/at91/sam3landing.asp?family_id=605)
- This release adds support for the SAM3U-EK development board with
- the AT91SAM3U4E MCU
- (http://www.atmel.com/dyn/products/product_card_mcu.asp?part_id=4562).
- As with most NuttX architecture releases, the release will be
- rolled out in two parts: A basic port and an extended port.
- NuttX-5.1 includes the basic port for the SAM3U-EK board. This
- release passes the NuttX OS test and is proven to have a valid
- OS implementation. It supports the basic boot-up, serial console
- and timer interrupts. A configuration to support the NuttShell
- is also included.
- The extended port will also include support for SDIO-based SD
- cards and USB device (and possible LCD support). These extensions
- may or may not happen by the Nuttx 5.2 release as my plate is
- kind of full now.
- * LPC3131 (http://ics.nxp.com/products/lpc3000/lpc313x.lpc314x.lpc315x/)
- This release also adds the complete implementation of the basic
- port for the NXP LPC3131 MCU on the Embedded Artists EA3131 board
- (http://www.embeddedartists.com/products/kits/lpc3131_kit.php).
- That port, unfortunately has stalled due to tools issues. Those
- tool issues have been resolved and I am confident that the verified
- basic port will be available in NuttX-5.2.
- The extended release will follow and should include SDIO-based
- SD card support and device USB.
- A few additional features and bugfixes of a minor nature were also
- incorporated as detailed in the ChangeLog.
- NuttX-5.2
- ---------
- This is the 49th release of NuttX. This release completes the
- verification of the basic port for the NXP LPC3131 MCU on the
- Embedded Artists EA3131 board
- (http://www.embeddedartists.com/products/kits/lpc3131_kit.php).
- This basic port includes basic boot-up, serial console, and timer
- interrupts. This port has been verified on the using the NuttX OS
- test and includes a working implementation of the NuttShell (NSH).
- An extended release will follow and should include SDIO-based SD
- card support and device USB.
- NuttX-5.3
- ---------
- This is the 50th release of NuttX. This release support for one new
- architecture:
- * A basic port for the NXP LPC2378 MCU on the Olimex-LPC2378
- development board was contributed by Rommel Marcelo.
- And extensions to two existing architectures:
- * David Hewson contributed a dual-speed (full/high) USB device-side
- driver for the NXP LPC3131 on the Embedded Artists EA3131
- development board.
- * A DMA driver and a high speed MCI driver for the Atmel AT91SAM3U
- are included (but not fully tested in this release).
- Two important bugfix was also included:
- * An important fix to the USB mass storage driver was contributed
- by David Hewson.
- * A serious error in the AT91SAM3U PIO handling was fixed.
- NuttX-5.4
- ---------
- This is the 51st release of NuttX. This release includes one new,
- important extension to th NX graphics system (See
- http://www.nuttx.org/NXGraphicsSubsystem.html).
- NX was develop a couple years back on hardware that supported only
- framebuffer devices, that is, video hardware with video memory
- directly converts the memory content to video. However, most MCUs
- that NuttX focuses on do not support such video memory; rather,
- that typically only support LCDs via parallel or serial interfaces.
- This release of NuttX extends NX so that now renders directly to
- the LCD device via its serial or parallel interface. No in-memory
- copy of the screen memory need be maintained so this solution should
- also work in MCUs with very limited SRAM.
- This initial release of this feature includes the verified NX
- extensions plus a driver for the HX8347, 16-bit parallel LCD. This
- LCD supports 16-bit RGB (5:6:5).
- NuttX-5.5
- ---------
- This is the 52nd release of NuttX. This release includes one new
- port, some new drivers and some important bugfixes:
- * NuttX was ported to the Luminary/TI LM3S6965 Ethernet Evaluation
- Kit. At present, that port includes an OS test configuration
- and a NuttShell (NSH) configuration with Telnet support.
- MMC/SD and Networking support are provided but not thoroughly
- verified in this release: Current development efforts are focused
- on porting the NuttX window system (NX) to work with the
- Evaluation Kits OLED display.
- * A NuttX Ethernet driver for the Microchip ENC28J60 SPI Ethernet
- chip is available in the source tree (but has not yet been fully
- verified because I haven't properly connected it to hardware
- yet).
- * The Olimex STR-P711 NuttX port was extended to support the
- ENC28J60 and some new networking configurations were added.
- The ENC28J60 has not been tested on the STR-P711, however,
- because of hardware issues (I don't think the USB powered board
- provides enough power for the ENC28J60 and I don't have the
- right wall wart yet).
- Along the way, external interrupt support (XTI) was added to
- the STMicro STR-P711 port and some important bugs were fixed
- in the STR-P711 SPI driver.
- * Added (optional) floating point support for printf().
- (Contributed by Yolande Cates.)
- * Corrected an important UDP reference counting error. It was
- not a serious error, but it trigger an assertion was IS a serious
- error.
- NuttX-5.6
- ---------
- This is the 53rd release of NuttX. This release includes one several
- new drivers for existing NuttX ports:
- * This port adds support for the RiT displays P14201 4-bpp,
- greyscale OLED. 4-bpp greyscale support was integrated into
- the NX graphics sub-system and verified using the TI/Luminary
- LP3S6965 Ethernet Evaluation Kit.
- * The M25Px driver was extended for the M24P1 FLASH part (see NOTE).
- * An I2C driver and (basic) SPI driver were added for the NXP
- LPC313x port. The I2C interface definition was extended to
- efficiently handle multiple I2C transfers.
- (Contributed by David Hewson.)
- As well as a few, important USB-related bugfixes (See the ChangeLog
- for details).
- This release also includes the beginnings of a port for the NXP
- LPC1768 MCU. However, it is too early for that port to be useful
- (stay tuned for a future announce of the availability of the LPC1768
- port).
- NuttX-5.7
- ---------
- This is the 54th release of NuttX. This release adds basic support
- for one new ARM Cortex-M3 architecture:
- * Added support for NXP LPC1768 MCU as provided on the Nucleus
- 2G board from 2G Engineering (http://www.2g-eng.com).
- * Some initial files for the LPC17xx family were released in NuttX
- 5.6, but the first functional release for the NXP LPC1768/Nucleus2G
- occurred with NuttX 5.7.
- * That initial basic release included timer interrupts and a
- serial console and was verified using the NuttX OS test.
- * That release includes a verified NuttShell (NSH) configuration
- (see the http://www.nuttx.org/NuttShell.html).
- * Also included are unverified SPI and USB device drivers.
- Further efforts include:
- (1) development of a DMA support library
- (2) SPI-based MMC/SD support
- (3) verification of the USB driver
- Watch for announcement of the completed LPC1768 port expected in
- NuttX-5.8.
- NuttX-5.8
- ---------
- This is the 55th release of NuttX. This includes several important
- bugfixes:
- * Corrects some interrupt vectoring for the TI/Stellarix LM3S
- port
- * Correct initialization logic for NXP LPC17xxx NuttX ports:
- Power was not being provided to the GPIO module!
- * Corrected (but did not verify) implementation of the optional
- interrupt stack feature (all Cortex M3 architectures).
- * Correct a HardFault in the LPC17xx SSP driver.
- Additional minor fixes are also included as detailed in the ChangeLog.
- Several new features have been fully developed and included in this
- release, but full verification of most of these new features has
- been blocked for a variety of issues:
- * Added microSD support for the NuttShell (NSH) configuration in
- the Nucleus2G LPC1768 port. For reasons that have not yet been
- determined, I have not successfully accessed the microSD card
- as of this writing.
- * Two USB configurations were also added for the Nucleus2G board:
- One to support the USB serial device and one for the USB mass
- storage device. Some testing of the USB driver was performed,
- but full verification is stalled for an OTG style USB cable.
- * LEDs now work correctly on the Nucleus2G LPC1768 board.
- * The NuttX/uIP networking subsystem now supports IGMPv2 client.
- IGMP (Internet Group Multicast Protocol) network "appliances"
- to join into multicast groups. Outbound traffic to enter and
- leave multicast groups has been verified, but full verification
- will require a switch capable of multicast. Issues associated
- with the receipt of multicast packets are likely.
- NuttX-5.9
- ---------
- This is the 56th release of NuttX. This release is difficult to
- categorize; NuttX-5.9 was really released because there were too
- many changes accumulating in CVS -- a few important, some unfinished
- implementations, and a couple of important bugfixes.
- * By far biggest change in this release is the complete implementation
- of on-demand paging support. This feature will allow you to
- execute large programs on a mass storage device (such as SPI
- FLASH) in a small RAM. All of the core on-demand paging logic
- was completed (see http://www.nuttx.org/NuttXDemandPaging.html)
- and support was implemented for the ARM-9 family. A test
- configuration is in place for the NXP LPC3131. It has been
- verified that this new logic does not interfere with normal
- fixed-page ARM9 operation, but otherwise this new on-demand
- paging feature is untested.
- * Add support for the CodeSourcery toolchain to the Olimex-lpc2378
- port and for the Neuros OSD port.
- * The Neuros OSD port has been updated to work with the production
- v1.0 OSD (previously it only worked with the development board).
- * And some miscellaneous feature enhancements as detailed in the
- ChangeLog.
- This includes several important bugfixes:
- * NXP LPC17xx - Fixed a critical bug in the GPIO configuration
- logic: When attempting to set no pull-up or pull-down (floating),
- it would, instead, select pull-down.
- * TI/Luminary LM3Sxxxx - Fixed:
- (1) A logic error in an address table lookup.
- (2) GPIO port encoding the limited support to only 8 GPIO ports.
- * Corrected the lease time in the DHCPC implementation: It was
- not in host byte order.
- * And several other less important bugs as documented in the
- ChangeLog: Warnings, cornercase compilation problems, etc.
- NuttX-5.10
- ----------
- This is the 57th release of NuttX. This release includes a combination
- of some new features as well as several bugfixes. New features
- include:
- * TI/Luminary Stellaris LM3S9B96:
- Header file changes contributed by Tiago Maluta.
- * TI/Luminary Stellaris LM3S8962:
- Header file changes and support for the Stellaris LM3S8962
- Ethernet+CAN Evaluation Board contributed by Larry Arnold.
- * On-Demand Paging Support:
- The basic logic for the On-Demand Paging feature is complete,
- implemented for the NXP LPC3131, and partially tested. See
- http://www.nuttx.org/NuttXDemandPaging.html. Some additional
- test infrastructure will be needed in order to complete the
- verification. See configs/ea3131/README.txt for details.
- * Two Pass Build Support:
- The make system now supports a two pass build where a relocatable,
- partially linked object is created on the first pass and that
- object is linked with the NuttX libraries to produce the final
- executable on the second pass. This two pass build is currently
- only used to support the On-Demand paging feature: The first
- pass link forces critical logic into the locked text region;
- the second pass builds the NuttX executable more-or-less as
- normal.
- * CONFIG_APP_DIR:
- Generalized the way in which applications are built and linked
- with NuttX. The new configuration CONFIG_APP_DIR replaces
- CONFIG_EXAMPLE. CONFIG_EXAMPLE used to identify the sub-directory
- within the NuttX examples/ directory that held the example
- application to be built. That made it awkward to configure to
- build an application that resides outside of the NuttX examples/
- directory. CONFIG_APP_DIR is more general; it can be used to
- refer to any directory containing the application to be built.
- For people who have their own configurations and/or Makefiles,
- you will need to make a couple of changes:
- - Replace all occurrences of CONFIG_EXAMPLE=foobar with
- CONFIG_APP_DIR=examples/foobar in all of the configuration
- files.
- - Replace any occurrences of examples/$(CONFIG_EXAMPLE) with
- $(CONFIG_APP_DIR)
- - Replace any occurrences of lib$(CONFIG_EXAMPLE)$(LIBEXT)
- with libapp$(LIBEXT) in your Makefiles.
- - Check any other occurrences of CONFIG_EXAMPLE.
- * Several bugfixes are included as well as code changes to eliminate
- some warnings. See the ChangeLog for details.
- NuttX-5.11
- ----------
- This is the 58th release of NuttX. This is a bugfix release.
- * One very important bug fixes a race condition that can occur
- using semaphores that can be awakened by signals. Under this
- particular race condition, a task could hang waiting for a
- semaphore.
- * Corrections to lm3s8962 port contributed by Larry Arnold. That
- port is purported to work correctly with these changes in place.
- Plus less critical bugfixes as detailed in the ChangeLog. New features
- include:
- * A new configuration to support the mbed.org LPC1768 board.
- (Contributed by Dave Marples.)
- * A driver for the Atmel AT45DB161D 4Mbit SPI FLASH part
- NuttX-5.12
- ----------
- This is the 59th release of NuttX. This is a critical bugfix release.
- * Fixed an important error in the signal trampoline logic.
- Essentially, interrupts are re-enabled while the signal handler
- executes, but the logic to re-disable the interrupts before
- returning from the signal handler trampoline was missing. Under
- certain circumstances, this can cause stack corruption. This
- was discovered by David Hewson on an ARM9 platform, but since
- the code has been leveraged, the bug has been propagated from
- ARM to Cortex-M3, AVR32, M16C, SH1, ZNEO, eZ80, Z8, and Z80 --
- almost every architecture. The correction has been incorporated
- for all architectures but only verified on a few.
- Other notable changes in NuttX-5.12:
- * A complete port for the AVR32 (AT32UC3B0256) is incorporated
- in the source tree. Testing of this port is underway now. This
- release was made before verifying this port in order to get the
- important bugfix in place.
- * Other miscellaneous bugfix and enhancements as noted in the
- ChangeLog.
- NuttX-5.13
- ----------
- This is the 60th release of NuttX. Headlines for this release
- include:
- * AVR32, www.mcuzone.com AVR32DEV1
- The port for the www.mcuzone.com AVRDEV1 board based on the
- Atmel AT32UC3B0256 MCU was (almost) fully integrated. The port
- now successfully passes the NuttX OS test (examples/ostest).
- A NuttShell (NSH) configuration is in place (see the NSH User
- Guide at http://www.nuttx.org/NuttShell.html). Testing of that
- NSH configuration, however, has been postponed (because it got
- bumped by the Olimex LPC1766-STK port -- see below)
- Current Status: I think I have a hardware problem with my serial
- port setup. There is a good chance that the NSH port is complete
- and functional, but I am not yet able to demonstrate that. At
- present, I get nothing coming in the serial RXD line (probably
- because the pins are configured wrong or I have the MAX232
- connected wrong).
- A complete port will include drivers for additional AVR32 UC3
- devices -- like SPI and USB --- and will be available in a
- later release, time permitting.
- * LPC1766, Olimex LPC1766-STK
- Support for the Olimex-LPC1766 is newly added to NuttX and is
- still undergoing development, test, and integration. Verified
- configurations for the NuttX OS test and for the NuttShell (NSH,
- see the NSH User Guide at http://www.nuttx.org/NuttShell.html.
- Additional USB configurations are in the release as well, but
- they have not yet been verified. Goals for NuttX-5.14 include:
- (1) An Ethernet driver, (2) Verified USB support, and (3) SD
- card support.
- * Additional changes and bugfixes as detailed in the ChangeLog.
- NuttX-5.14
- ----------
- The 61st release of NuttX, NuttX-5.14, was made on November 27,
- 2010. This release includes multiple, important bugfixes as well
- as a new driver for the NXP LPC1766.
- This release corresponds with SVN release number: r3137
- Important bugfixes include:
- * Cortex-M3 Hard Fault. Fixed a hard fault problem that can occur
- if certain types of interrupts are pending at the time another
- interrupt returns. This problem has only been observed on the
- LPC1766 (returning from a SYSTICK interrupt with a pending
- Ethernet interrupt). However, it is assumed that all Cortex-M3
- ports could have this as a latent bug.
- * TCP/IP Sequence Number Bug. Corrected errors some important
- logic in the way that sequence numbers are managed when send()
- sends out packets before a previous packet has been acknowledged.
- Some of that send() logic was incompatible with logic in the
- uIP layer. Errors seen include: (1) The final final packet in
- a sequence of packets might be too large! In the THTTPD example,
- this might leave some garbage at the bottom of the display. Or
- (2) send() might hang with outstanding, unacknowledged data
- (and with no re-transmission requests). This was due to
- differences in sequence number handling in send() and in
- uip_tcpinput.c; uip_tcpinput.c thought (incorrectly) that all
- of the bytes were acknowledged; send.c knew that they were not.
- * One-Shot POSIX Timer Bug. Fixed an error in set-up of a one-shot
- POSIX timer. It was using the repetitive timer value (which
- is zero in the one-shot case), always resulting in a 10Ms timer!
- Found and fixed by Wilton Tong.
- Additional support has been included for the Olimex-LPC1766. Support
- for that board was added to NuttX 5.13. This release extends that
- support with an Ethernet driver. Verified configurations are now
- available for the NuttX OS test, for the NuttShell (NSH, see
- http://www.nuttx.org/NuttShell.html), for the NuttX network test,
- and for the THTTPD webserver. (Additional USB configurations are
- in the release as well, but those have not yet been verified. Goals
- for NuttX-5.15 (and beyond) include: (1) Verified USB support, (2)
- SD card support, and (3) LCD support.
- NuttX-5.15
- ----------
- The 62nd release of NuttX, NuttX-5.15, was made on December 12,
- 2010. This release includes several bugfixes as well as feature
- enhancements, primarily for the Olimex LPC1766-STK board.
- Important bugfixes included:
- * Additional fixes needed with the TCP sequence number problem
- "fixed" in NuttX-5.14.
- * In the send() logic, now checks if the destination IP address
- is in the ARP table before sending the packet; an ARP request
- will go out instead. This improves behavior, for example, on
- the first on the first GET request from a browser
- * All USB class drivers need to call DEV_CONNECT() when they are
- ready to be enumerated. That is, (1) initially when bound to
- the USB driver, and (2) after a USB reset.
- * The SPI_SETBITS macro was calling the SPI setmode method.
- * And several other bug fixes of lower importance (see the
- ChangeLog for details).
- And feature enhancements:
- * The LPC176x Ethernet driver was using all of AHB SRAM Bank0 for
- Ethernet packet buffers (16K). An option was added to limit
- the amount of SRAM used for packet buffering and to re-use any
- extra Bank0 memory for heap.
- * Enabled networking and SD/MMC card support in the Olimex
- LPC1766-STK NuttShell (NSH) configuration.
- * The LPC176x USB driver is now fully fully functional.
- * Added an optional cmddata() method to the SPI interface. Some
- devices require an additional out-of-band bit to specify if the
- next word sent to the device is a command or data. The cmddata
- method provides selection of command or data.
- * A driver for the Nokia 6100 LCD (with either the Phillips PCF8833
- LCD controller and for the Epson S1D15G10 LCD controller) and
- an NX graphics configuration for the Olimex LPC1766-STK have
- been added. However, neither the LCD driver nor the NX
- configuration have been verified as of the this release.
- NuttX-5.16
- ----------
- The 63rd release of NuttX, Version 5.16, was made on January 10,
- 2010 and is available for download from the SourceForge website.
- This release includes initial support for USB host in NuttX. The
- USB host infrastructure is new to NuttX. This initial USB host release
- is probably only beta quality; it is expected the some bugs remain
- in the logic and that the functionality requires extension.
- Below is a summary of the NuttX USB host implementation as extracted
- from the NuttX Porting Guide:
- 6.3.9 USB Host-Side Drivers
- * include/nuttx/usb/usbhost.h. All structures and APIs needed to
- work with USB host-side drivers are provided in this header
- file.
- * struct usbhost_driver_s. Each USB host controller driver must
- implement an instance of struct usbhost_driver_s. This structure
- is defined in include/nuttx/usb/usbhost.h. Examples:
- arch/arm/src/lpc17xx/lpc17_usbhost.c.
- * struct usbhost_class_s. Each USB host class driver must implement
- an instance of struct usbhost_class_s. This structure is also
- defined in include/nuttx/usb/usbhost.h. Examples:
- drivers/usbhost/usbhost_storage.c
- * USB Host Class Driver Registry. The NuttX USB host infrastructure
- includes a registry. During its initialization, each USB host
- class driver must call the interface, usbhost_registerclass()
- in order add its interface to the registry. Later, when a USB
- device is connected, the USB host controller will look up the
- USB host class driver that is needed to support the connected
- device in this registry. Examples: drivers/usbhost/usbhost_registry.c,
- drivers/usbhost/usbhost_registerclass.c, and
- drivers/usbhost/usbhost_findclass.c,
- * Detection and Enumeration of Connected Devices. Each USB host
- device controller supports two methods that are used to detect
- and enumeration newly connected devices (and also detect
- disconnected devices):
- + int (*wait)(FAR struct usbhost_driver_s *drvr, bool connected);
- Wait for a device to be connected or disconnected.
- + int (*enumerate)(FAR struct usbhost_driver_s *drvr);
- Enumerate the connected device. As part of this enumeration
- process, the driver will (1) get the device's configuration
- descriptor, (2) extract the class ID info from the configuration
- descriptor, (3) call usbhost_findclass() to find the class
- that supports this device, (4) call the create() method on
- the struct usbhost_registry_s interface to get a class instance,
- and finally (5) call the connect() method of the struct
- usbhost_class_s interface. After that, the class is in charge
- of the sequence of operations.
- * Binding USB Host-Side Drivers. USB host-side controller drivers
- are not normally directly accessed by user code, but are usually
- bound to another, higher level USB host class driver. The class
- driver exports the standard NuttX device interface so that the
- connected USB device can be accessed just as with other, similar,
- on-board devices. For example, the USB host mass storage class
- driver (drivers/usbhost/usbhost_storage.c) will register a
- standard, NuttX block driver interface (like /dev/sda) that can
- be used to mount a file system just as with any other other
- block driver instance. In general, the binding sequence is:
- 1. Each USB host class driver includes an initialization entry
- point that is called from the application at initialization
- time. This driver calls usbhost_registerclass() during this
- initialization in order to makes itself available in the
- event that the device that it supports is connected. Examples:
- The function usbhost_storageinit() in the file
- drivers/usbhost/usbhost_storage.c
- 2. Each application must include a waiter thread thread that
- (1) calls the USB host controller driver's wait() to detect
- the connection of a device, and then (2) call the USB host
- controller driver's enumerate method to bind the registered
- USB host class driver to the USB host controller driver.
- Examples: The function nsh_waiter() in the file
- configs/nucleus2g/src/up_nsh.c and the function nsh_waiter()
- in the file configs/olimex-lpc1766stk/src/up_nsh.c.
- 3. As part of its operation during the binding operation, the
- USB host class driver will register an instances of a standard
- NuttX driver under the /dev directory. To repeat the above
- example, the USB host mass storage class driver
- (drivers/usbhost/usbhost_storage.c) will register a standard,
- NuttX block driver interface (like /dev/sda) that can be
- used to mount a file system just as with any other other
- block driver instance. Examples: See the call to
- register_blockdriver() in the function usbhost_initvolume()
- in the file drivers/usbhost/usbhost_storage.c.
- NuttX-5.17
- ----------
- The 64th release of NuttX, Version 5.17, was made on January 19,
- 2011 and is available for download from the SourceForge website.
- This release follows close on the heels of the 5.16 release and
- extends the USB host capabilities first introduced in that version.
- * The LPC17xx USB host controller driver was extended to (1) add
- support for low-speed devices, (2) handle multiple concurrent
- transfers on different endpoints (still only one TD per endpoint),
- and (3) handle periodic interrupt endpoint types.
- * Add a USB host HID keyboard class driver. Now you can connect
- a standard USB keyboard to NuttX and receive keyboard input for
- an application.
- And other changes as detailed in the ChangeLog.
- NuttX-5.18
- ----------
- The 65th release of NuttX, Version 5.18, was made on February 27,
- 2011 and is available for download from the SourceForge website.
- This is first release from the new NuttX SVN repository. This
- release is made primarily to keep the release tarball in synchronization
- with SVN. Many smaller changes have been made as identified in the
- ChangeLog. Headlines include:
- * Incorporate several important uIP patches -- including the well
- known patch to handle missing SYNACK.
- * The Freescale mc8s12ne64 port is code complete but testing has
- not yet begun due to toolchain issues. Added support for the
- Future Electronics Group NE64 Badge board.
- * Added support for a new STM32 board, the ISOTEL NetClamps VSN
- V1.2 ready2go sensor network platform. This board is based on
- a STM32F103RET6 and includes some interesting power saving/clock
- control extensions.
- * USB host support expanded to handle vendor specific USB devices.
- * Incorporated the LUFA HID parser.
- * Various bugfix as detailed in the ChangeLog
- NuttX-5.19
- ----------
- The 66th release of NuttX, Version 5.19, was made on March 12, 2011
- and is available for download from the SourceForge website. This
- release includes several new features in various states of integration
- and maturity:
- * 486SX QEMU port. This port supports the Intel 486SX architecture
- using the QEMU simulator. Initial functionality is in place a
- partially tested. There are still some outstanding issues with
- timer interrupts.
- * Platform specific application support. A new apps/ directory
- appears in this port. This apps/ directory provides a mechanism
- for applications using NuttX to have a highly customized
- initialization process. It supports a set of end-user applications
- than can be executed (1) standalone so you can have a fully
- customized application startup, or (2) on top of NSH. Think
- of it this way: In a buckled-up embedded application, your
- end-user programs will probably have their own dedicated start-up
- logic. But, during development, you might want to have you
- applications available and executable from the NSH command line.
- This apps/ add-on (and NSH hooks) was contributed by Uros to
- accomplish just that.
- * NSH was also extended to support application specific ROMFS
- /etc/init.d/rcS start-up scripts. This feature, as well, as
- all of the above-mentioned apps/ directory support was contributed
- by Uros Platise
- * Additional NSH improvements and bug fixes. See the Changelog
- for details.
- * This release also provides a new SLIP network driver. This
- driver should support point-to-point network communications to
- a host using TCP/IP or UDP. This driver is code complete, but
- not tested in this release.
- * New RAMTRON FRAM driver (contributed by Uros Platise)
- * New generic 16550 UART driver.
- * Cortex-M3 Power improvements: Waits for Interrupt (WFI) in idle
- loop for reduced power consumption (LPC17xx and STM32 only -
- contributed by Uros Platise))
- * New waitpid() system interface.
- * Additional bugfixes: pipes, stdint.h, STM32 SDIO and SPI drivers
- NuttX-6.0
- ---------
- The 67th release of NuttX, Version 6.0, was made on March 21, 2011
- and is available for download from the SourceForge website. The
- version number of this release was bumped from 5.19 to 6.0. A
- change in the major revision number is used to reflect an incompatibility
- with previous versions. In this release, the NuttX core OS
- functionality has been separated from NuttX application-related
- functionality. These are provided as separate tarballs:
- * nuttx-6.0.tar.gz, and
- * apps-6.0.tar.gz
- The purpose of this separation is both to better organize and
- modularize the NuttX source tree, but also to provide better support
- for incorporation of end-user applications with Nuttx.
- The incompatibility results from the changes to the board configuration
- logic needed to supported the separable application. The major
- changes to the configuration include:
- * CONFIG_APPS_DIR - This should not be set. The default is
- ../apps. This should only be set if you have a custom,
- product-specific application directory in some different location.
- * appconfig - Each board configuration now requires a new file
- called 'appconfig.' As its name suggests, this file provides
- new configuration information needed by the logic in ../apps.
- In addition to this major reorganization in the directory structure,
- this release also includes some important extensions to existing
- features and some important bugfixes. These include:
- * The SLIP driver was been well debugged and significantly
- re-designed. Now you can have an Ethernet connection to you
- board even if you have no Ethernet hardware. How cool is that?
- * The QEMU i486 port is now functional. It has also been reported
- to work on the Bifferboard (see http://bifferos.bizhat.com/).
- * And extensions to the uIP driver interface, and
- * Bug fixes to fopen() and STM32 GPIO configuration
- Please see the ChangeLog for details.
- NuttX-6.1
- ---------
- The 68th release of NuttX, Version 6.1, was made on April 10, 2011
- and is available for download from the SourceForge website. The
- 6.0 release introduced a detach-able application environment to
- build applications outside of the NuttX source tree. The primary
- purpose of this release is to correct numerous build problems
- introduced by that architectural change:
- * In many newer environments, NuttX produced strange Makefile
- errors but built correctly in older environments. A fix provided
- by Rafael Noronha was incorporated and is reported to fix those
- build problems.
- * The apps/ directory build system would not handle Windows-native
- toolchains due to obscure path formatting issues.
- * And other problems as detailed in the Changelog.
- Many additional changes were made in the 6.1 release for another
- major architectural change: NuttX will now build as a separately
- linked microkernel. In this build option the RTOS builds as a
- kernel, applications build separately and interface with kernel via
- system calls. Applications run in user mode and kernel logic users
- in kernel-mode. This provides a secure environment for NuttX. This
- feature is fully coded in NuttX-6.1, but has not been tested due
- to higher priority tasks that have arisen.
- Related to this change, support for the Cortex-M3 memory protection
- unit (MPU) has been integrated with the NuttX kernel build to provide
- an even higher level of security.
- NOTE: This kernel build is an option; the default build configuration
- is still the standard, flat, unsecured RTOS as in previous releases.
- Additional new features in this release:
- * Support for LPC17xx GPIO interrupts (with much support from
- Decio Renno).
- * Basic timer support for STM32 (Contributed by Uros Platise)
- * A binfs file system. This is a tiny pseudo file system that
- lets named applications to be viewed and accessed in NSH under
- the /bin directory.
- * An I2C-based driver for the LIS331DL MEMS motion sensor.
- (Contributed by Uros Platise.)
- * A configuration for the Embedded Artists LPCXpresso LPC1768 board.
- * The user_initialize() interface has been removed.
- And several bugfix associated with SD drivers, opendir(), signed
- 8-bit types (int8_t), and USB serial device. See the ChangeLog for
- details.
- NuttX-6.2
- ---------
- The 69th release of NuttX, Version 6.2, was made on May 6, 2011 and
- is available for download from the SourceForge website. The 6.2
- release includes several new features:
- * NXFFS: The obvious new feature is NXFFS, the NuttX wear-leveling
- FLASH file system. This new file system is intended to be
- small for the MCU usage and has some limitations. No formal
- documentation of NXFFS yet exists. See the fs/nxffs/README.txt
- file for details (see
- http://svn.code.sf.net/p/nuttx/code/trunk/nuttx/fs/nxffs/README.txt?view=log)
- * Support for NXP LPCXpresso LPC1768 board on the Embedded
- Artists base board. The Code Red toolchain is supported under
- either Linux or Windows. Verified configurations include
- dhcpd, nsh, nx, ostest, thttpd, and usbstorage.
- * Support for the Univision UG-9664HSWAG01 OLED with Solomon
- Systech SD1305 LCD controller.
- * A new RAM MTD driver with FLASH simulation capability.
- * A version.h file is now automatically generated so that C code
- can now be version aware.
- In addition to these new feature, several important bugfixes are
- included in this release correcting problems with dup2(), LPC17xx
- GPIO interrupts, LPC17xx UART2/3, the FAT file system, build issues,
- and strrch(). See the ChangeLog for more details.
- NuttX-6.3
- ---------
- The 70th release of NuttX follows only a nines days after the release
- of version 6.2. It was released on May 15, 2011. This special
- back-to-back release was made so that the current released version
- of NuttX will correspond to the initial release from the RGMP
- project.
- This release adds architecture support and build configuration for
- RGMP. RGMP is a project for running GPOS and RTOS simultaneously
- on multi-processor platforms. See
- http://rgmp.sourceforge.net/wiki/index.php/Main_Page for further
- information about RGMP.
- This release also includes support for STM32 FLASH, build improvements,
- and initial, incomplete support for the MicroChip PIC32MX MCU. Bug
- fixes are included for some build problems, USB host class driver
- error handling, NX graphics color mapping, and problems with C
- standard I/O buffer flushing. See the ChangeLog for further details.
- NuttX-6.4
- ---------
- The 71st release of NuttX, Version 6.4, was made on June 5, 2011
- and is available for download from the SourceForge website. The
- 6.4 release includes several new features:
- * A new, full-featured FTP client. This client may be used as a library
- for automated FTP or via an FTP client shell. The FTP shell
- supports the following commands: cd, chmod, get, help, idle,
- login, ls, quit, mkdir, noop, put, pwd, rename, rhelp, rm,
- rmdir, size, time, and up. A configuration is available for
- the NXP LPC17xx to demonstrate this functionality.
- * A functional C1101 wireless driver (contributed by Uros Platise)
- * A PCI-based E1000 Ethernet driver (contributed by Yu Qiang)
- * New C library functions: inet_addr() (contributed by Yu Qiang),
- strndup(), asprintf()
- * Reduced memory allocation overhead for MCUs with small heaps (<64K).
- * fdopen() now works with socket descriptors allowing standard
- buffered C functions to be used for network communications.
- * The NSH ifconfig command can now be used to set or change the
- IP address (contributed by Yu Qiang)
- This release also includes some completed but untested functionality.
- * The MicroChip PIC32MX port is now code complete and ready to
- begin testing. Unfortunately, testing will be delayed due to
- tool issues.
- * Support for the NXP LPC315x MCUs.
- Additional miscellaneous enhancements and bug fixes to task_delete(),
- recvfrom(), and other changes as noted in the ChangeLog.
- NuttX-6.5
- ---------
- The 72nd release of NuttX, Version 6.5, was made on June 21, 2011
- and is available for download from the SourceForge website. The
- 6.5 release is all about support for the Atmel 8-bit AVR family.
- I have been interested in the AVR family for some time but because
- of the severe SRAM constraints and because of the availability of
- many tiny schedulers for the AVR, it has not been "on the radar
- screen." However, I have recently become interested because of
- interest expressed by members of the forum and because of the
- availability of newer, larger capacity AVR parts (that I don't have
- yet).
- This release corresponds with SVN release number: r3730
- This release includes support for the following AVR boards. As
- with any initial support for new architectures, there are some
- incomplete areas and a few caveats that need to be stated. Here
- they are, ordered from the least to the most complete:
- * SoC Robotics Amber Web Server (ATMega128).
- This port of NuttX to the Amber Web Server from SoC Robotics
- (http://www.soc-robotics.com/index.htm). Is only partially in
- place. The Amber Web Server is based on an Atmel ATMega128
- (128K FLASH but only 4K of SRAM).
- STATUS: Work on this port has stalled due to toolchain issues. It
- is complete, but untested.
- * Micropendous 3 AT9USB647
- This port of NuttX to the Opendous Micropendous 3 board. The
- Micropendous3 may be populated with an AT90USB646, 647, 1286,
- or 1287. See http://code.google.com/p/opendous/. I have only
- the AT90USB647 version for testing. This version has very
- limited memory resources: 64K of FLASH and 4K of SRAM.
- STATUS: The basic port was released in NuttX-6.5. This basic
- port consists only of a "Hello, World!!" example that demonstrates
- initialization of the OS, creation of a simple task, and serial
- console output. The tiny SRAM limits what you can do with the
- AT90USB647 (see issues below).
- * PJRC Teensy++ 2.0 AT9USB1286
- This is a port of NuttX to the PJRC Teensy++ 2.0 board. This
- board was developed by PJRC (http://pjrc.com/teensy/). The
- Teensy++ 2.0 is based on an Atmel AT90USB1286 MCU with 128K
- of FLASH and 8K of SRAM; a little more room to move than the
- AT90USB647.
- STATUS: The basic port was released in NuttX-6.5. This basic
- port consists of a "Hello, World!!" example and also slightly
- simplified NuttShell (NSH) configuration (see the NSH User Guide
- at http://www.nuttx.org/NuttShell.html).
- An SPI driver and a USB device driver exist for the AT90USB as
- well as a USB mass storage configuration. However, this
- configuration is not fully debugged as of the NuttX-6.5 release.
- AVR-specific issues. The basic AVR port is solid and biggest issue
- for using AVR is its tiny SRAM memory and its Harvard architecture.
- Because of the Harvard architecture, constant data that resides to
- flash is inaccessible using "normal" memory reads and writes (only
- SRAM data can be accessed "normally"). Special AVR instructions
- are available for accessing data in FLASH, but these have not been
- integrated into the normal, general purpose OS.
- Most NuttX test applications are console-oriented with lots of
- strings used for printf and debug output. These strings are all
- stored in SRAM now due to these data accessing issues and even the
- smallest console-oriented applications can quickly fill a 4-8K
- memory. So, in order for the AVR port to be useful, one of two
- things would need to be done:
- 1. Don't use console applications that required lots of strings.
- The basic AVR port is solid and your typical deeply embedded
- application should work fine.
- 2. Create a special version of printf that knows how to access
- strings that reside in FLASH (or EEPROM).
- NuttX-6.6
- ---------
- The 73rd release of NuttX, Version 6.6, was made on July 11, 2011
- and is available for download from the SourceForge website. The
- 6.6 release adds several smaller features but is mostly a bugfix
- release.
- Bugfixes include
- * Fixed several NX Graphics bugs: Rendering fonts at >8 bits-per-pixel,
- graphics move logic, and display artifacts that appear when a
- window is closed.
- * Corrections to the USB host mass storage class driver
- * STM32 bugfixes: serial driver, GPIO interrupt handling
- * LPC17xx: Changes for a success compilation with no console.
- * Corrections to the Teensy AT90USB SD driver
- * Changes for a clean compilation under the ZDS-II toolchain.
- Minor features:
- * Add logic to extract printf strings from FLASH (but there are
- still printf issues for that target)
- * Added a configuration for the Sure Electronics PIC32MX board.
- However, higher priority tasks have stopped work on that
- configuration.
- * Added several new configurations for the STMicro STM3210E-EVAL
- board.
- * Added support for the STM3210E-EVAL board: (1) LCD in either
- landscape or portrait mode, and (2) interrupting buttons.
- * Added a configuration option to use different serial ports for
- debug and for the NSH serial console (there are some issues
- with CR-LF expansion and character echo if NSH is not run on
- the console).
- * Standardized the button press and button interrupt interfaces
- so that they are common across all boards.
- * Added a new graphics example that focuses on placing text on
- the background while pop-up windows occur. Text should continue
- to update normally with or without the popup windows present.
- * Added ARM stack checking logic.
- See the ChangeLog for a detailed description of these changes.
- NuttX-6.7
- ---------
- The 74th release of NuttX, Version 6.7, was made on August 2, 2011
- and is available for download from the SourceForge website. Note
- that release consists of two tarballs: nuttx-6.7.tar.gz and
- apps-6.7.tar.gz. Both may be needed (see the top-level nuttx/README.txt
- file for build information). Changes in this release are summarized
- below:
- * New OS APIs: Add the standard sem_timedwait() interface.
- * FAT File System: Adds (optional) support for VFAT long file
- names.
- * USB: Now the mass storage device can be connected when needed
- and disconnected when not needed (or re-connected as a different
- kind of device).
- * Touchscreen Support: Defined a new NuttX touchscreen interface.
- Added a driver for the TI TSC2007 touchscreen controller chip.
- * NX Fonts: Add support for multiple fonts; developed a tool to
- convert open source fonts into NuttX format; Converted and
- installed nine new, high quality fontsets.
- * NX Graphics: Add new NX APIs to support drawing of wide lines
- in any orientation. Added new low level routines to set
- individual pixel more efficiently.
- * Build system: Added a export target that will bundle up all
- of the NuttX libraries, header files, and the startup object
- into an exportable tarball.
- * LPC17xx: A CAN driver was contributed by Li Zhuoyi (Lzyy).
- * STM32: New NX-related configurations to exercise text and
- graphic image displays.
- * C Library: Added a fixed precision atan2() math function.
- * Bugfixes: Serial RX overrun error, FAT upper/lower NT 8.3 name
- handling fixed. FAT directory allocation and initialization
- bug. STM32 SDIO DMA race condition bug. eZ80 UART1 serial
- driver errors (Paul Osmialowski)
- NuttX-6.8
- ---------
- The 75th release of NuttX, Version 6.8, was made on August 19, 2011
- and is available for download from the SourceForge website. Note
- that release consists of two tarballs: nuttx-6.8.tar.gz and
- apps-6.8.tar.gz. Both may be needed (see the top-level nuttx/README.txt
- file for build information). Changes in this release are summarized
- below:
- * NuttX has been ported to run on the Freescale Cortex-M4 "Kinetis"
- boards. Two board ports are available for (1) the Kinetis
- KwikStik-K40 and (2) the Kinetis TWR-K60N512 tower.
- * Support for RGMP 0.3. This version of RGMP now runs on the
- OMAP4430 (arm) pandaboard
- * LPC17xx CAN driver extended to support both CAN1 and CAN2
- (submitted by Li Zhuoy (Lzzy))
- * Fixed several critical bugs related to signal handling
- initialization and for signals the wake up tasks that are waiting
- to send or receive message queues.Both are important. (submitted
- by hkwilton).
- * drivers/can.c: Fixed a semaphore overflow problem in the CAN
- driver (reported by Li Zhouy (Lzzy)).
- * Added a new ADC driver infrastructure and TI ADS1255 driver
- both developed and submitted by Li Zhouy (Lzzy)).
- See the Changelog for additional changes included in this release.
- NuttX-6.9
- ---------
- The 76th release of NuttX, Version 6.9, was made on September 11, 2011
- and is available for download from the SourceForge website. Note
- that release consists of two tarballs: nuttx-6.9.tar.gz and
- apps-6.9.tar.gz. Both may be needed (see the top-level nuttx/README.txt
- file for build information).
- This release includes a few new features and several important bug fixes.
- The new features (some still incomplete) include:
- * Analog Support/ NXP LPC17xx: New DAC sub-system including ADC and DAC
- drivers for the LPC17xx. Extensions to the ADS1255 driver.
- (Contributed by Li Zhuoyi (Lzyy))
- * Power Management: Added a new NuttX power management sub-system for
- controlling and coordinating reduced power states. At present, only
- verified in a simulation environment.
- * I2C Test Tool: A new application was added that can be used to
- verify and debug I2C interfaces from the NuttShell (NSH) command
- line.
- * NuttShell (NSH): In addition to the I2C test tool, a date command
- is now supported (if CONFIG_RTC is defined) that can be used to
- read and set the RTC.
- * NXP LPC17xx: I2C and DAC driver for the NXP LPC17xx family submitted by Li Zhuoyi
- (Lzyy)
- * Kinetis Cortex-M4: Added a SDHC driver for the Kinetis parts.
- Complete debug of the Kinetis SDHC driver was not completed, however,
- do to some higher priority tasks that forced me to stop work.
- * Other new drivers: Driver for I2C-based at24cxx EEPROM submitted by
- Li Zhuoyi (Lzyy); Driver for the LM-75 temperature sensor. Support
- for the LM-75 temperature sensor integrated into the SM3210E-EVAL
- development board.
- * NuttX Graphics (NX): Added new NX interfaces for drawing circles,
- both circle outlines and filled circles.
- * FLASH: Added a function that accepts the path to a block driver and
- then erases the underlying FLASH memory
- * Build System: The Make export logic now also tries to track down all
- architecture-specific header files and include these in the NuttX
- export bundle as well. Various changes and modifications so that
- NuttX wil build on FreeBSD using the ASH shell (submitted by Kurt Lidl).
- Bugfixes, order roughly on decreasing criticality include:
- * STM32 I2C Driver: Add resets, timeout, and other fixes to work
- reliably with the I2C tool. Corrected a major error introduced in
- NuttX 6.8.
- * BCH Driver. Several important bugs (noted by Li Zhuoyi (Lzyy))
- were fixed.
- * C Library: Fixed errors in gmtime() and gmtime_r() that could lead to
- errors in date calculations.
- * Timing: Correct an error in the tv_nsec calculation that happens
- only config CONFIG_RTC is enabled
- * Build System: Use of -print-libgcc-file-name to get path to
- libgcc.a might select the wrong libgcc.a if a multilib toolchain
- is used
- NuttX-6.10
- ----------
- The 77th release of NuttX, Version 6.10, was made on October 6, 2011
- and is available for download from the SourceForge website. Note
- that release consists of two tarballs: nuttx-6.10.tar.gz and
- apps-6.10.tar.gz. Both may be needed (see the top-level nuttx/README.txt
- file for build information).
- This release corresponds with SVN release number: r4028
- This release includes a few new features and several important bug fixes.
- The new features (some still incomplete) include:
- * CDC ACM serial class device-side driver
- * RTC: Now supports hi-res and lo-res hardware RTC. The lo-res RTC
- runs at 1Hz.
- * STM32 I2C driver. Now supports faster, polled mode of operation.
- Added an I2C trace capability.
- * ADS7843E touchscreen driver. As used on the SAM3U-EK development
- board.
- * AT91SAM3U SPI driver. To support the ADS7843E toucscreen
- * X11 Support on simulation target. Build errors in the X11 windows
- for the simulated target have been correct. Added support for a
- simulated touchscreen on the X11 window (based on mouse inputs).
- * System Timer. Added support for a 64-bit system timer.
- * TIFF Support. Added a TIFF library (currently used for storing
- LCD screen shots).
- * LCD Support. Added a test to verify that we read and write correct
- to LCD GRAM memory.
- * I2C tool. Extended to support to include a verify command and
- repititions and auto-address increment for most commands.
- * USB terminal example. Line oriented serial bridge connects a host
- USB serial terminal to a host UART serial terminal.
- * Build System. apps/ Makefile will now include external directories
- in the application build.
- Bugfixes, order roughly on decreasing criticality include:
- * Message Queues. Correct errors in mq_timedsend() and
- mq_timedreceive().
- * FAT. Writes that cross sector boundaries, stray write into the FAT,
- and a FAT long file name issue
- * NXFFS. Added a missed error check. Files cannot be opened for
- writing if they are already opened for reading.
- * Library: fopen() for append modse was not appending.
- * STM32 I2C driver. Correct another conflict between concurrent FSMC
- and I2C1 accesses. Fixed some bad error detection logic.
- * STM32 SDHC driver. Interrupts were being left disabled.
- NuttX-6.11
- ----------
- The 78th release of NuttX, Version 6.11, was made on November 12, 2011
- and is available for download from the SourceForge website. Note
- that release consists of two tarballs: nuttx-6.11.tar.gz and
- apps-6.11.tar.gz. Both may be needed (see the top-level nuttx/README.txt
- file for build information).
- This release corresponds with SVN release number: r4090
- This release is a maintenance release that includes a few new features
- and some important bugfixes. New features include:
- * NX Graphics: New interfaces to read from graphics memory
- * Drivers: AT24 FLASH driver will now supports clustering of blocks
- to achieve a larger, more usable block size for NXFFS.
- * STM32: LCD color corrections
- * PIC32: Board configuration for the Microchip PIC32 Ethernet Starter kit
- (not yet verified), new GPIO support library, button and LED support
- for the Sure Electronics PIC32MX board. A lot of progress has been
- made on the PIC32 NuttX port, but it is still not ready for prime time.
- * NXP LPC3152: Board configuration for the Embedded Artists EA3152.
- Bugfixes, order roughly on decreasing criticality include:
- * NXFFS: Corrected critical bugs in initialization, some full FLASH handling,
- and errors in certain cases where the FLASH is repacked.
- * ARM EABI: Fix stack aligment required for passing floating point values.
- * Build system: Fix build issues when g++ is used as the compiler.
- * NX Graphics: Bitmap error handling, correct RGB color conversion macros,
- Error when the background window is released.
- * STM32: RTC build fixes, LCD color corrections
- * Simulation target: build fixes
- * C Library: fclose() return value.
- See the change log for more detailed information.
- NuttX-6.12
- ----------
- The 79th release of NuttX, Version 6.12, was made on December 6, 2011
- and is available for download from the SourceForge website. Note
- that release consists of two tarballs: nuttx-6.12.tar.gz and
- apps-6.12.tar.gz. Both may be needed (see the top-level nuttx/README.txt
- file for build information).
- This release corresponds with SVN release number: r4141
- New features in this release include:
- * STM32. Basic support added for the STM32 F4 family. Board support
- verified for the STMicro STM3250G-EVAL board.
- * FAT. Enhanced partition handling.
- * SDIO-Based SD Card support. Add support for large (>4Gb) devices
- * Graphics. Added four new small sans serif fonts.
- * Drivers. Fix a banding problem with the R61580 LCD.
- Bugfixes, order roughly on decreasing criticality include:
- * FAT. Fix errors in how the first entries in the root directory are
- added. Fix errors in FAT date/time handling.
- * Signals. Fix bug in certain sig_timedwait() error handling.
- * Drivers. Fix cloned errors in poll() handling in several drivers.
- * Message Queues. errno was not being set correctly by mq_notify().
- * C Library. wchar_t is a built-in type for C++
- NuttX-6.13
- ----------
- The 80th release of NuttX, Version 6.13, was made on December 26, 2011
- and is available for download from the SourceForge website. Note
- that release consists of two tarballs: nuttx-6.13.tar.gz and
- apps-6.13.tar.gz. Both may be needed (see the top-level nuttx/README.txt
- file for build information).
- This release corresponds with SVN release number: r4231
- New features in this release include:
- * Drivers. New standard interface for PWM drivers and common
- "upper half" PWM driver. Updated the MP25x driver to support
- the Macronix MX25 chips (submitted by Mohammad Elwakeel).
- * STM32 F1/F4. Added an Ethernet driver, ADC drivers, DAC driver,
- PWM driver, CAN driver, F4 RTC driver, F4 DMA support,
- logic for saving/restoring F4 FPU registers in context switches.
- * STM32 Boards. Added STM3240G-EVAL DHPCD and nettest configuration.
- Support for a new STM32 board, the HY-Mini STM32v board, was
- contributed by Laurent Latil
- * PIC32. The port to the Microchip PIC32MX is finally functional and
- reliable. The NuttX PIC32 port has verified configurations for
- the OS test and the NuttShell (NSH) both exist.
- * Tests: New re-usable tests (in apps/examples) for PWM, ADC, and
- CAN loopback. Several existing tests can now be built as NSH built-in
- applicaitons (dhcpd, nettest, and all of the new tests).
- Bugfixes, order roughly on decreasing criticality include:
- * STM32: Correct handling of data overrun conditions. Existing logic
- would hang with infinite interrupts when a data overrun occurred.
- * DHCPD. Fix several problems using host order address where network
- addresses expected (and vice versa).
- And several others. See the ChangeLog for more details.
- NuttX-6.14
- ----------
- The 81st release of NuttX, Version 6.14, was made on January 15, 2012,
- and is available for download from the SourceForge website. Note
- that release consists of two tarballs: nuttx-6.14.tar.gz and
- apps-6.14.tar.gz. Both may be needed (see the top-level nuttx/README.txt
- file for build information).
- This release corresponds with SVN release number: r4301
- New features in this release include:
- * Drivers. The upper-half PWM driver will now support a pulse count (as
- would be needed to control a stepper motor).
- * STM32. The CAN driver has been verified in loopback mode. ADC driver
- support for the STM32 F4. Add support for UART4-5 and USART6
- (Contributed by Mike Smith). The PWM driver now supports a pulse
- count for TIM1 and TIM8. Timer driver now supports the F4's 32-bit
- timers (Contributed by Mikhail Bychek)
- * STM32F4Discovery. Support for the STM32F4-Discovery board contributed
- by Mike Smith.
- * STM3240G-EVAL. Add support for user control of LEDs.
- * LPC17xx. Add support for loopback mode to CAN driver. CAN TX done
- perations are now interrupt driver. Now supports configurable CAN bit
- rate.
- * LPC1766-STK. Add support for on-board buttons. Add support for user
- control of LEDs.
- * LM3S. Add support for the LM3S6432S2E on the TI RDK-S2E (Contributed
- by Mike Smith)
- * PIC32MX. USB device-side driver (needs further testing). A partial
- Ethernet driver is also in place.
- * Library. Support added for fixed floating point fieldwidths in output
- formatting (Contributed by Mikhail Bychek)
- * Build. New targets apps_clean and apps_distclean to simplify working
- with application diretories.
- Bugfixes include:
- * Drivers. Fixed a buffer-full test in the upper-half CAN driver.
- * STM32. GPIO initialize logic (submitted by Mike Smith). Fix the
- debug logic that dumps the GPIO configuration.
- * LPC17xxx. Correct an integer overflow in GPIO interrupt setup
- (prevented pins > 15 from being used as interrupt sources). Correct
- a value used in GPIO interrupt number range test.
- * FAT. Now returns the correct error value when it is unable to
- recognize the file system.
- * Build. MAC OS build fixes (submitted by Mike Smith)
- And several others. See the ChangeLog for more details.
- NuttX-6.15
- ----------
- The 82nd release of NuttX, Version 6.15, was made on February 12, 2012,
- and is available for download from the SourceForge website. Note
- that release consists of two tarballs: nuttx-6.15.tar.gz and
- apps-6.15.tar.gz. Both may be needed (see the top-level nuttx/README.txt
- file for build information).
- This release corresponds with SVN release number: r4387
- New features and extended functionality:
- * General Drivers: Add support for (29-bit) extended CAN IDs. Add an
- infrastructure to support battery drivers. Add a driver for MAX17040x
- battery "fuel gauge". Add support for Composite USB drivers (in
- particular for a CDC/ACM with MSC USB composite driver).
- Added a new RAM logging driver. This will allow debug output into
- a RAM buffer associated with a character driver at /dev/ramlog.
- Added the new command 'dmesg' to NSH that can be used to dump the
- current contents of the log. This is useful for systems that do not
- have the usual serial console (for example, if you only have a
- Telnet console with NSH).
- * Networking: Add a lower level, primitive socket interface. Telnet
- driver:
- A New Telnet daemon was created. It wraps a Telnet session within a
- character driver that can serve as a "controlling terminal." The
- Telnet session will then be inherited by tasks created from the
- Telnet session and the stdin/stdout from the created task will
- still go through the same Telnet connection.
- * STM32 Drivers. PWM driver pulse count was limited to 128; now is
- (essentially) unlimited. Add support for (29-bit) extended CAN IDs.
- Add support for I2C3. The SDIO driver is (mostly) verified on the
- STM32 F4 platforms.
- * LPC17xx Drivers. Extended the CAN driver so that the TSEG1 and TSEG2
- bit times can be set via the NuttX configuration. Add support for
- (29-bit) extended CAN IDs.
- * PIC32 Drivers. The PIC32 Ethernet driver is code complete (but still
- untested).
- * FTPD. Add a new FTP server daemon. This is based loosely on
- the hwport_ftpd library provided by Jaehyuk Cho.
- * Library: Add support for on_exit(). Implemented tcsetattr() and
- tcgetattr(). Moved the old, too-smart fgets() to a new application
- library function called readline(). Dumbed down the original fgets().
- Add strcasestr(), avsprintf(), inet_ntop(), and inet_pton().
- Add support to enable or disable debug output.
- * Build system: Support for building a 32-bit simulation executable on
- a 64-bit Linux machine. Correct a dependency issue in the arch/*/src/board
- directory.
- Bugfixes:
- * System: Correct PTHREAD_MUTEX_INITIALIZER
- * FAT: Fix an error in the FAT statfs() reported by David Sidrane.
- * STM32: Fix clock frequencies for APB2 timers. Correct AFIO register
- offset.
- * PIC32. Correct GPIOs used for LEDs on the Sure PIC32MX board.
- * NSH. Wait for a USB connection if a USB serial class is used to
- interface with the host.
- Additional bugfixes, name changes, and other differences as detailed in the
- ChangeLog.
- NuttX-6.16
- ----------
- The 83rd release of NuttX, Version 6.16, was made on March 10, 2012,
- and is available for download from the SourceForge website. Note
- that release consists of two tarballs: nuttx-6.16.tar.gz and
- apps-6.16.tar.gz. Both may be needed (see the top-level nuttx/README.txt
- file for build information).
- This release corresponds with SVN release number: r4475
- New features and extended functionality:
- * ARMv7M Support: Includes new, streamlined Cortex-M exception
- handling provided by Mike Smith. Context switching support for the
- Cortex-M4 FPU registers is now provided (in both "lazy" and "non-lazy"
- modes)
- * General Drivers: Added a generic "upper half" Quadrature Encoder driver.
- The USB CDC/ACM serial driver can now be dynamically connected or
- disconnected from the host (programmatically or using NSH commands).
- * STM32 Drivers: Added a "lower half" Quadrature Encoder driver.
- Verified the STM32 F4 DMA driver; Added F4 DMA support to the existing
- STM32 SDIO driver.
- * STM32 Board Support. Added support for the STM32 F2 family and
- for the STM3220G-EVAL board (contributed by Gary Teravskis).
- Support is now included for C++ static constructors (verified using
- the Atollic toolchain). Added support for the SRAM available on the
- STM3240G-EVAL board.
- * PIC32 Drivers. PIC32MX USB (device) driver is now functional.
- The PIC32MX Ethernet driver not yet fully verified (and an
- unverified SPI driver is also available).
- * Networking. Added a lower-level, thread-independent socket layer.
- Parts of this layer were created in 6.15 to support the FTPD
- controlling terminal; this support has been extended in order
- to support an NFS file system (not yet released).
- * NuttShell (NSH). NSH will now support a USB serial connection for
- the console (such as CDC/ACM). This is useful in environments
- where there is no physical serial port on the board.
- * Build System. Reorgnaization of networking header files.
- Critical Bugfixes. The following bug fixes are considered critical:
- * Networking: Fixed a "leak" in the TCP/IP read-ahead buffering logic.
- Corrected an error in TCP/IP sequence numbering/ACK logic which
- occurred when read-ahead buffering memory is exhausted.
- * STM32 Drivers: Fixed an buffer sizing error in the STM32 Ethernet
- driver.
- Additional Bugfixes: Other important bug fixes are listed below. See
- the ChangeLog of a complete, detailed list of bug fixes.
- * Networking: Corrected recv()/recvfrom() return value. Added logic to
- monitor for loss of connection after a new connection has been
- established via accept() (Contributed by Max Nekludov). Add
- logic to select() to correctly handle POLLHUP (Contributed by Max
- Nekludov)
- Additional bugfixes, name changes, and other differences as detailed in the
- ChangeLog.
- NuttX-6.17
- ----------
- The 84th release of NuttX, Version 6.17, was made on April 14, 2012,
- and is available for download from the SourceForge website. Note
- that release consists of two tarballs: nuttx-6.17.tar.gz and
- apps-6.17.tar.gz. Both may be needed (see the top-level nuttx/README.txt
- file for build information).
- This release corresponds with SVN release number: r4607
- New features and extended functionality:
- * Networking: Additional low-level, thread-independent socket
- interfaces (for NFS client support).
- * RTC: Added a new interface call clock_synchronize(). This function
- will reload the system time from an RTC and is required when the
- system re-awakens from certain deep-sleep modes.
- * Graphics: Add NxConsole. This is a character device driver that
- wraps an NX window and can be re-directed for stdout. This allows,
- for example, a pop-up graphics window that contains a NuttShell (NSH)
- session. A test of NxConsole is available at apps/examples/nxconsole.
- * Watchdog Drivers: Added an interface definition an "upper half"
- driver to support watchdog timers.
- * Calypso: Support for TI Calypso-based cellphones (as supported by
- the Osmocom-BB project) was contributed by members of the Osmocom-BB
- team. This includes configurations for the Compal e88 and e99 phones.
- * USB Device Interface: Needed to extend the USB device interface
- because there was no mechanism for passing endpoint OUT data that
- may need to accompany a setup request.
- * STM32 drivers: Added some power management controls for entering
- reduced power consumption states. An OTG FS driver was completed
- and partially verified (this driver seems to be functional but since
- it has been test so lightly, it might better be listed in the
- next section "Work in progress").
- * PIC32 drivers: The PIC32 Ethernet driver is now stable. The PIC32
- USB device controller driver is now functional (but not yet stable).
- * PIC32 boards: Added support for the Sure DB-DP11212 PIC32 General
- Purpose Demo Board. There is now a PIC32 Starter Kit that
- provides NSH only through a Telnet connection.
- * Build System: Some header files were moved into include/nuttx.
- The goal is to move any non-standard header files to include/nuttx
- or include/arch. Moved include/math.h to include/nuttx/math.h;
- this file is now only instantiated as the 'system' math.h if
- CONFIG_ARCH_MATH_H=y is defined.
- * Tools: Added tools/cmpconfig.c, a tool for comparing two
- configuration files.
- Work in progress. This release includes some partially completed
- work that is still not ready for prime time.
- * NFS Client: Work is progressing on support for an NFS client
- file system. This is a port of the BSD NFS client file system
- that is being done by Jose Pablo Rojas V.
- * Automated Configuration: Automated configuration based on the
- kconfig-frontends tool is being incorporated into the build
- system. The configuration is still not complete enough for
- general use in this release.
- * STM32 Drivers: Added files that will (eventually) hold an STM32
- OTG FS host driver. This is still a work in progress.
- Bugfixes:
- * Networking: Corrected a deadlock that only occurred when
- executing the NSH 'ifconfig' command over Telnet.
- * File system: Fix incorrect return errno value from read() when
- the file is opened write-only.
- * Graphics: Fix several compilation errors that have crept into the
- multi-user NX server because of lack of use.
- * STM32: In order to use CAN2, both CAN1 and CAN2 clocking must be
- enabled. Fixed a troublesome bug in the STM32 F4 I2C driver that
- resulting in timeouts.
- * LPC17xx: Fixes for errors the crept in the LPC17xx DAC logic
- Contributed by Lzyy).
- * Build System: Reordered the link command line to account for new
- versions of libgcc.a that require symbols from the application
- (abort()).
- NuttX-6.18
- ----------
- The 85th release of NuttX, Version 6.18, was made on May 19, 2012,
- and is available for download from the SourceForge website. Note
- that release consists of two tarballs: nuttx-6.18.tar.gz and
- apps-6.18.tar.gz. Both may be needed (see the top-level nuttx/README.txt
- file for build information).
- The majority of changes in this release are focused on supporting the
- synchronized release of NxWM, the NuttX tiny window manager. That
- window manager is released as part of the NxWidgets package, but depends
- upon many of the changes in this NuttX release.
- This release corresponds with SVN release number: r4751
- New features and extended functionality:
- * Drivers. Added a watchdog timer driver infrastructure. Add general
- support for STMicro STMPE811 I/O Expander/touchscreen device.
- * STM32. Add support for the STM32 IWDG and WWDG watchodog timers. DMA
- now supports cicular buffer mode; serial driver now uses circular
- DMA to improve Rx performance (Contributed by Mike Smith).
- * STM3240G-EVAL Board. Add support for the LCD and for the STMPE811
- I/O Expander as a touchscreen controller.
- * PIC32 Boards. Board support for the Mikroelektronika PIC32MX7
- Multimedia Board (MMB) and for the Sparkfun UBW32 PIC32 board.
- * NX. Framed windows are now draw in three colors instead of just two.
- Numerous other extensions needed to support NxWM (see the ChangeLog
- for details).
- * Library. Add prctl() command that can be used to setting and getting
- the names of threads. This (plus several other improvements and bug
- fixes) are part of a larger effort to improve task monitoring
- capabilities.
- Work in progress. This release includes some partially completed
- work that is still not ready for prime time.
- * NFS Client. Work is progressing on support for an NFS client
- file system. This is a port of the BSD NFS client file system
- that is being done by Jose Pablo Rojas V.
- * Automated Configuration. Automated configuration based on the
- kconfig-frontends tool is being incorporated into the build
- system. The configuration is still not complete enough for
- general use in this release.
- * STM32 Drivers. Added files that will (eventually) hold an STM32
- OTG FS host driver. This is still a work in progress.
- Bugfixes (see the change log for details) :
- * sched_setscheduler() return value (Contributed by Richard Cochran).
- * stdio. Ignore CONFIG_STDIO_LINEBUFFER if the file was opened in binary mode.
- * fopen(). Correct an error in parsing open mode string.
- * serial driver. Improved performance be reducing the amount of time
- that Rx interrupts are disabled.
- * recvfrom(). Fix a compilation problem.
- * CDC/ACM device driver. Fix an infinite loop that occurs when the serial
- device is unregistered.
- * STM32 OTG FS device driver. Numerous fixes and the driver is partially
- functional but there are still some issues that become apparent when
- debug output is disabled.
- * fcntl(). Always returned zero on success; however, some fcntl commands
- need to return non-zero values on success.
- * graphics: Many multi-use mode fixes added to support NxWM (see the
- ChangeLog for details). Auto-raise is temporarily disabled in multi-
- user mode because it causes some problems with NxWM.
- * on_exit(): Fix compilation errors if CONFIG_SCHED_ONEXIT is enabled.
- NuttX-6.19
- ----------
- The 86th release of NuttX, Version 6.19, was made on June 15, 2012,
- and is available for download from the SourceForge website. Note
- that release consists of two tarballs: nuttx-6.19.tar.gz and
- apps-6.19.tar.gz. Both may be needed (see the top-level nuttx/README.txt
- file for build information).
- This release corresponds with SVN release number: r4847
- This release features new support for a Network File System (NFS) client.
- This feature allows a tiny, embedded MCU to mount a remote file system
- exported by an NFS server and then to access the file system as it would
- any local file system. Then the tiny MCU can effectively have terabytes
- of storage!
- This might be useful for data collection, for MCU configuration information,
- for software updates, for providing modular, loadable code modes, controlling
- a "farm" of MCUs, ... there are many possibilities and opportunities for
- innovation!
- The NuttShell (NSH) now supports the following command:
- nfsmount <server-address> <mount-point> <remote-path>
- That command will mount the remote NFS server directory <remote-path> at
- <mount-point> on the target machine. <server-address> is the IP address of
- the remote server.
- The NFS development was the graduation project of Jose Pablo Rojas V. who
- is a student at the Instituto Tecnológico de Costa Rica (ITCR, or TEC).
- A lot of effort went into understanding what a tiny, embedded NFS client should
- do and getting the target resource usage to a bare minimum. Only around a
- kilobyte or so of memory is required to run the NFS client (and most of that
- for I/O buffers). Jose Pablo has spent several months living with NFS and
- should be congratulated.
- Additional new features and extended functionality:
- * Drivers: SSD1289 LCD driver, MIO283QT2 LCD driver
- * LM3S: Additional register definition header files (contributed by Max
- Neklyudov).
- * STM32 Boards: The STM32F4Discovery will now support an SSD1289 LCD,
- The STM3220G-EVAL board support is now equivalent to the STM3240G-EVAL
- board support.
- * PIC32 Boards: The Mikroelektronika PIC32MX7 MMB board port is now
- functional, very complete, and stable.
- * Graphics: The NxConsole will now take keyboard input from the NX graphics
- subsystem. This means that if there are multiple NxConsole windows, only
- the top instance that has focus will receive the keyboard input.
- * apps/: Add the capability to use an arbitrary USB device as the console
- (not necessarily /dev/console). Additional enhancements for USB consoles.
- Added the 'mv' command.
- Work in progress. This release includes some partially completed
- work that is still not ready for prime time.
- * Automated Configuration. Automated configuration based on the
- kconfig-frontends tool is being incorporated into the build
- system. The configuration is still not complete enough for
- general use in this release.
- * STM32 Drivers. Added files that will (eventually) hold an STM32
- OTG FS host driver. This is still a work in progress.
- Bugfixes (see the change log for details) :
- * General: sleep() and usleep() return values, sig_timedwait() errno setting
- on timeout.
- * Drivers: STMPE811 touchscreen driver, USB PLC2303, USB CDC/ACM
- * STM32: Several USB device controller driver fixes, F4 interrupt priorities
- (contributed by Mike Smith).
- * Graphics: Keyboard input, fill trapezoid bug
- As well as other, less critical bugs (see the ChangeLog for details)
- NuttX-6.20
- ----------
- The 87th release of NuttX, Version 6.20, was made on July 12, 2012,
- and is available for download from the SourceForge website. Note
- that release consists of two tarballs: nuttx-6.20.tar.gz and
- apps-6.20.tar.gz. Both may be needed (see the top-level nuttx/README.txt
- file for build information).
- This release corresponds with SVN release number: r4937
- Additional new features and extended functionality:
- * Power Management: An evolving power management example is being
- created by Diego Sanchez. This effort currently involves on the
- STM32 F1 but clearly demonstrates the NuttX power management
- system which will automatically drive the system to lower power
- usage states due to lack of use.
- * Drivers: Added a driver for the SST 25 SPI-based FLASH parts.
- * PIC32: Added support for the PIC32MX1 and PIC32MX2 families.
- Added support for the microchipOpen and Pinguino toolchains.
- * NXP LPC43XX: Added support for the entire LPC43xx family
- * PIC32 boards: Added support for the DTX1-4000L "Mirtoo" module
- from http://www.dimitech.com/ (PIC32MX2).
- * NXP LPC43XX Boards: Added support for NGX LPC4330-Xplorer board.
- * NXP LPC17XX Boards: Added support for Micromint Lincoln60 board
- (LPC1769).
- * LM3S Boards: Add a configuration to support the TI/Stellaris
- EKK-LM3S3B96 development board. Contributed by Jose Pablo Rojas V.
- * Library: NuttX now supports platform-specific stdarg.h header
- files.
- Work in progress. This release includes some partially completed
- work that is still not ready for prime time.
- * Automated Configuration. Automated configuration based on the
- kconfig-frontends tool is being incorporated into the build
- system. The configuration is still not complete enough for
- general use in this release.
- * STM32 Drivers. Added files that will (eventually) hold an STM32
- OTG FS host driver. This is still a work in progress.
- Bugfixes (see the change log for details) :
- * PIC32: GPIO output configuration (critical bug)
- * STM32: Typos in pin mapping files.
- * LM3S: Fixed an optimization related but that caused slow start-up
- times if optimization was disabled.
- * Library: Fixed signed extension but in all limit.h files
- (reported by Lorenz Meier). inet_ntoa compilation failure
- on Z80.
- As well as other, less critical bugs (see the ChangeLog for details)
- NuttX-6.21
- ----------
- The 88th release of NuttX, Version 6.21, was made on August 25, 2012,
- and is available for download from the SourceForge website. Note
- that release consists of two tarballs: nuttx-6.21.tar.gz and
- apps-6.21.tar.gz. Both may be needed (see the top-level nuttx/README.txt
- file for build information).
- This release corresponds with SVN release number: r5052
- Additional new features and extended functionality:
- * Core: Add support for multiple registered atexit() functions. Syslog
- extended: Now any character driver may be used for the debug logging
- device. Mountpoint traversal logic.
- * Drivers: Added support for the TI PGA112-7 amplifier/multiplexor.
- * LPC43xx: Added clock ramp-up logic to run at 204 MHz
- * LPC43xx Drivers: SPIFI block driver, RS-485 support, Minimal termios
- support. Framework for USB0 device controller driver.
- * LPC17xx Drivers: Minimal termios support
- * STM32: Support for STM32 F1 "Value Line" (contributed by Mike Smith).
- Add support for STM32 F107 "Connectivity Line" (contributed by Max
- Holtzberg).
- Clock restart logic needed for recovery from low power modes.
- * STM32 Drivers: RTC alarm support. Usable for wakeup from sleep mode,
- Minimal serial termios support. USB OTG FS host driver (alpha).
- * STM32 Boards: Add power management hooks for the STM32F4Discovery,
- Add support for the Olimex STM32-P107 (contributed by Max Holtzberg).
- * PIC32: Add support for the Pinguino MIPS toolchain.
- * PIC32 Drivers: GPIO driver now supports F1 analog regiaters (ANSEL).
- * PIC32 Boards: Add support for the PGA117 on the Mirtoo module.
- * Calypso: Add support for the SSD1783 LCD on the Compal E99.
- * Library: cfsetispeed(), cfsetospeed(), tcflush(), memchr(), and
- memccpy().
- * Applications: Port of freemodbus-v1.5.0. Add support for testing
- devices with multiple ADC, PWM, and QE devices.
- NSH: NSH 'mount' command (with no arguments) will now show mounted
- volumes. Add new NSH 'df' command. Extended 'help' support. NSH
- now catches the return value from spawned applications (provided
- by Mike Smith).
- * Build System: mkconfig will not define CONFIG_DRAM_END. A lot of
- progress has been made on the automated NuttX configuration logic
- (Thanks go to Richard Cochran).
- * Documentation: Document ways to customize the behavior of NSH.
- Bugfixes (see the change log for details) :
- * Serial drivers (all): Fix ioctl return value. Common "upper half"
- serial driver will now return with EINTR if a serial wait is
- interrupted by a signal.
- * FAT: Fix statfs() file name length.
- * LPC43xx: Clock configuration.
- * STM32: Pinmap fixes, SPI driver re-initialization
- * STM32 Boards: Correct and lower SDIO frequency for F2 and f4 boards.
- * AVR: C++ build issues.
- * PM: Fix a place where interrupts were not be re-enabled.
- * Applications: NSH application start-up race conditions.
- * Library: Fieldwidth and justification for %s format. Fixed several
- issues with presenting floating point numbers. NULL definition
- for C++
- As well as other, less critical bugs (see the ChangeLog for details)
- NuttX-6.22
- ----------
- The 89th release of NuttX, Version 6.22, was made on September 29, 2012,
- and is available for download from the SourceForge website. Note
- that release consists of two tarballs: nuttx-6.22.tar.gz and
- apps-6.22.tar.gz. Both may be needed (see the top-level nuttx/README.txt
- file for build information).
- This release corresponds with SVN release number: r5206
- Note that all SVN information has been stripped from the tarballs. If you
- need the SVN configuration, you should check out directly from SVN. Revision
- r5206 should equivalent to release 6.22 of NuttX 6.22:
- svn checkout -r5206 svn://svn.code.sf.net/p/nuttx/code/trunk nuttx-code
- Or
- svn checkout -r5206 http://svn.code.sf.net/p/nuttx/code/trunk nuttx-code
- Additional new features and extended functionality:
- * RTOS: Application entry point is no longer user_start, but can be
- configured using CONFIG_USER_ENTRYPOINT. NuttX now supports two work
- queues: A lower priority work queue (for extended processing) and a
- higher priority work queue (for quick, high priority operations).
- * Memory Management: Added a new granule-based allocated that can be
- used to manage, aligned and quantized DMA memory.
- * File System: Add hooks to allocate I/O memory with and external
- allocated (need if required by DMA).
- * Networking: ENC28J60 driver is (finally) verified.
- * Drivers: Add hooks USB device drivers to allocate I/O memory with and
- external allocated (need if required by DMA). Driver for the Windbond
- SPI FLASH family (W25x16, W25x32, W25x64, and others). ADS7843E driver
- extended for TSC2046 and XPT2046 and verified.
- * ARMv7-M: Added logic to reset the MCU using the NVIC.
- * STM32: Add support for STM32F103VET6.
- * STM32 Drivers: Add logic to re-initialize UARTs a second time to
- enable DMA (Mike Smith). I2C driver error recovery (Mike Smith).
- * STM32 boards: Support for USB host added add to several configurations
- (or at least explained in README files). Support for the Shenzhou
- STM32F107 board (see www.armjishu.com). Support for M3 Wildfire
- STM32F103 board (v2 and v3).
- * Build System: Kconfig string de-quoting logic. Remove comments from
- defconfig files (Kate). Add tool to create NuttX-style symbol tables.
- Numerous changes to configuration logic as needed for the new mconf-based
- configuration (much of this from Richard Cochran). Refactor common
- Make.defs logic into tools/Config.mk (Richard Cochran).
- * Library: Configurable terse output from strerror(). Added perror() (Kate).
- Add %n format to sscanf() (Kate).
- * Applications: Numerous changes and extensions to the old uIP web server
- (from Kate and Max Holtzberg, see the ChangeLog for specific extensions).
- UDP network discovery utility (Max Holtzberg). Embeddable Lightweight
- XML-RPC Server (http://www.drdobbs.com/web-development/an-embeddable-lightweight-xml-rpc-server/184405364, Max Holtzberg).
- Bugfixes (see the change log for details). Some of these are very important
- (marked *critical*):
- * RTOS: Fixes to priority inheritance logic (*critical*). waitpid()
- critical section. Assertion in work_cancel() (Mike Smith). mmap() (Kate).
- * FAT File System: Improper Boolean expression caused un-necessary writes
- and performance issues (*critical*, Ronen Vainish).
- * Networking: Remove an un-necessary delay from recvfrom(). This greatly
- improves network performance (*critical*, Max Holtzberg).
- * Graphics: NX parameter checking errors.
- * Drivers: Fix double release of memory in SDIO-based, MMC/SD driver
- (Ronen Vainish).
- * LPC17xx: Ethernet driver fixes needed for certain PHYs (Kate).
- * AVR: Fix build error (Richard Cochran).
- * STM32: USB OTG FS host driver NAKing an retries. Power management
- compilation errors (Diego Sanchez). Missing SPI3 remap logic.
- * STM32 Drivers: Fix for Ethernet errata for STM32F107 (*critical*).
- Ethernet buffer alignment check. Add "kludge" to Ethernet driver to
- handle DM9161 PHY which (at least on the Shenzhou board), sometimes
- does not come up correctly.
- * Applications: THTTPD (Kate). NSH ping when IP address is on a different
- network (Darcy Gong).
- * Library: fread(), fflush(), fdopen(): Fix error handling logic (Ronen
- Vainish). Fix some field-width handling issues in sscanf()
- As well as other, less critical bugs (see the ChangeLog for details)
- NuttX-6.23
- ----------
- The 90th release of NuttX, Version 6.23, was made on November 5, 2012,
- and is available for download from the SourceForge website. Note
- that release consists of two tarballs: nuttx-6.23.tar.gz and
- apps-6.23.tar.gz. Both may be needed (see the top-level nuttx/README.txt
- file for build information).
- This release corresponds with SVN release number: r5313
- Note that all SVN information has been stripped from the tarballs. If you
- need the SVN configuration, you should check out directly from SVN. Revision
- r5313 should equivalent to release 6.23 of NuttX 6.23:
- svn checkout -r5313 svn://svn.code.sf.net/p/nuttx/code/trunk nuttx-code
- Or
- svn checkout -r5313 http://svn.code.sf.net/p/nuttx/code/trunk nuttx-code
- Additional new features and extended functionality:
- * RTOS: If both atexit() and on_exit() are enabled, use on_exit() to
- implement atexit(). Updates for RGMP 4.0.
- * Binfmt: Add support for loading and executing ELF binary modules from
- a file system.
- * Drivers: Maxim MAX11802 touchscreen controller (Petteri Aimonen)
- * STM32 Driver: Implementation of /dev/random using the STM32 Random Number
- Generator (RNG).
- * STM32 Boards: ADC support for the Shenzhou IV board. Relay support for
- the Shenzhou IV board.
- * C Library: Support is now included for the add-on uClibc++ C++
- standard library support. This includes support for iostreams, strings,
- STL, RTTI, exceptions -- the complete C++ environment. (uClibc++ is
- provided as a separate add-on package due to licensing issues).
- Optimized generic and ARM-specific memcpy() function. Optimized
- memset() function.
- Add support for ferror(), feof(), and clearerror(). Add support for
- __cxa_atexit().
- Math Library: Port of the math library from Rhombus OS by Nick Johnson
- (Darcy Gong).
- * Applications: New NSH commands: ifup, ifdown, urlencode, urldecode,
- base64enc, bas64dec, md5 (Darcy Gong). Add support for NSH telnet login
- (Darcy Gong). Enancements to NSH ping command to support pinging hosts
- with very long round-trip times. Extensions to the ifconfig command
- Darcy Gong),
- Many extensions to the webclient/wget and DNS resolver logic from Darcy
- Gong. JSON, Base64, URL encoding, and MD5 libraries contributed by Darcy
- Gong.
- New examples: ELF loader, JSON, wgetjson, cxxtest, relays.
- Bugfixes (see the change log for details). Some of these are very important
- (marked *critical*):
- * Drivers: W25 SPI FLASH
- * STM32 Drivers: ADC reset
- * Graphics: Missing implementation of the blocked method (*critical*,
- Petteri Aimonen).
- * C Library: Floating point numbers in printf and related formatting functions
- (Mike Smith), cf[get|set]speed() (Mike Smith)
- As well as other, less critical bugs (see the ChangeLog for details)
- NuttX-6.24
- ----------
- The 91st release of NuttX, Version 6.24, was made on December 20, 2012,
- and is available for download from the SourceForge website. Note
- that release consists of two tarballs: nuttx-6.24.tar.gz and
- apps-6.24.tar.gz. Both may be needed (see the top-level nuttx/README.txt
- file for build information).
- This release corresponds with SVN release number: r5447
- Note that all SVN information has been stripped from the tarballs. If you
- need the SVN configuration information, you should check out directly from
- SVN. Revision r5447 should equivalent to release 6.24 of NuttX 6.24:
- svn checkout -r5447 svn://svn.code.sf.net/p/nuttx/code/trunk nuttx-code
- Or (HTTP):
- svn checkout -r5447 http://svn.code.sf.net/p/nuttx/code/trunk nuttx-code
- Additional new features and extended functionality:
- * RTOS:
- - Implemented the POSIX pause() function (still has some compiance
- issues).
- - Tasking logic is extended to support the notion of address
- environments. An address environment is the key notion underlying
- "process" vs. tasks. If tasks are created with address environments
- (by binfmt), the OS will propogate that environment to child threads
- and will destroy the address environment when the "process" exists.
- - If support for the PATH variable is enabled, the OS start up logic
- will create an initial environment containing the default PATH
- setting (CONFIG_PATH_INITIAL). This initial PATH will then be
- inherited by all tasks.
- * Binfmt
- - The NuttX binary loaders have been updated to support the PATH
- environment variable. Now, if the PATH is properly defined, programs
- can be executed from mass storage using only the file name. This
- feature is added to support more standard behavior (eventually, NSH
- will support execution of programs in file systems by just entering
- the file name, perhaps in 6.25?).
- - The NXFLAT and ELF binary loaders have been extended to create
- address environments for any new tasks executed from the file system.
- This feature requires that the architecture support a memory management
- unit (MMU) and the address environment interfaces declared in
- include/nuttx/arch.h (currently, this is only supported by the z180).
- * Drivers: LCD driver for the Univision UG-2864AMBAG01 OLED
- * STM32: Support for STM32F100 high density chips contributed by Freddie
- Chopin.
- * STM32 Drivers: Added optional RS-485 direction bit control (from
- Freddie Chopin).
- * STM32 Boards:
- - Support for generic STM32F100RC board contributed by Freddie Chopin.
- - stm32f4discovery/nxlines: STM32F4Discovery support for the
- UG-2864AMBAG01 OLED.
- - stm32f4discovery/winbuild: A version of the NuttX OS test
- configured to build natively on Windows.
- - stm32f4discovery/elf: Now uses the PATH variable to find ELF
- executables.
- - configs/cloudctrl: Added for Darcy Gong's CloudController board
- * PIC32 Boards: Update the Mirtool configuration for Release 2 of the
- Mirtoo module.
- * Calypso: Add Calypso keypad driver. From Denis Cariki.
- * ZiLOG:
- - Add support for the z180 chip family and, specifically, for
- the P112 retro hardware (see http://p112.feedle.net/).
- - All ZiLOG configurations updated to use the current ZDS-II
- and/or SDCC toolchains.
- * Graphics:
- - Add a semaphore handshake so that operations on buffers from
- the NXMU client will be blocked until the NX server operates on the
- buffer data (from Petteri Aimonen).
- - nxtk_subwindowmove() and nxtk_getwindow(): Improvements to clipping
- logic from Petteri Aimonen.
- * C Library: lib/ sub-directory renamed libc/ (there is a new lib/ sub-
- directory that is used to hold all archives).
- * C++: Exception stubs from Petteri Aimonen.
- * Applications:
- - Add NSH hexdump command to dump the contents of a file (or character
- device) to the console (contributed by Petteri Aimonen).
- - Extend the NSH ifconfig command plus various DHCPC improvements
- (from Darcy Gong).
- * apps/examples:
- - ostest: Replace large tables with algorithmic prime number
- generation. This allows the roundrobin test to run on platforms
- with minimal SRAM (Freddie Chopin).
- - keypadtest: A new keypad test example contributed by Denis Carikli.
- - elf and nxflat: If CONFIG_BINFMT_EXEPATH is defined, these examples
- will now use a relative path to the program and expect the binfmt/
- logic to find the absolute path to the program using the PATH
- variable.
- * Build system:
- - New top-level Makefiles: Makefile.unix and Makefile.win (along with
- numerous changes to other make-related files). This adds basic
- support for building NuttX natively under Windows from a CMD.exe
- window (rather than in a POSIX-like environment). This build: (1)
- Uses all Windows style paths, (2) Uses primarily Windows batch
- commands from cmd.exe, with (3) a few extensions from GNUWin32.
- This capability should still be considered a work in progress
- because: (1) it has not been verfied on all targets and tools,
- and (2) still lacks some of the creature-comforts of the more
- mature environments (like a function configure.sh script and
- 'make menuconfig' support).
- - Example Windows native builds for STM32F4Discovery, eZ80, z16f, z8,
- Z80, and Z180.
- - Several configurations have been converted to work the kconfig-
- frontends mconf configuration tool: stm32f4discovery/nxlines, and
- all eZ80, z16f, z8, Z80, and Z180 configurations.
- - Architectures now include a common Toolchain.defs file that can be
- used to manage toolchains in a more configurable way (most of this
- contributed by Mike Smith).
- * Build tools:
- - Renamed tools/winlink.sh to tools/copydir.sh.
- - Several new tools/scripts to support the Windows native build:
- tools/mkdeps.bat, tools/mkdeps.c, tools/link.bat, unlink.bat, and
- copydir.bat.
- - tools/incdir.sh and incdir.bat now support an -s option to generate
- system header file paths.
- - tools/b16.c: Fixed precision math conversion utility.
- Bugfixes (see the change log for details). Some of these are very important
- (marked *critical*):
- * RTOS: Fix some backward conditional compilation in the work queue
- logic (Freddie Chopin).
- * File System: Uninitialized variable caused assertions (from Lorenz
- Meier).
- * Drivers: Partial fix for STM32 OTGFS device drivers and fix for short,
- unaligned writes in the flash translation layer (drivers/mtd/ftl.c),
- both from Petteri Aimonen.
- * STM32 Drivers:
- - Qencoder driver and TIM3 driver fixes from Ryan Sundberg.
- - Fix timeout delay calculation in the STM32 OTG FS host driver.
- * LPC17xx Drivers: Resources not being properly released when I2C
- driver is un-initialized.
- * Graphics:
- - Fix logic when the mouse drags outside of the window; fix
- another "blocked message" handling case (both from Petteri Aimonen).
- - nxtk_filltrapwindow(): Correct an offset problem (also from Peterri
- Aimonen).
- - nxglib_splitline(): Correct the "fat flat line" bug.
- * C Library:
- - nrand() changes to prevent coefficients from becoming zero which
- would "lock up" the random number generate.
- - Add rounding functions to the math library (contributed by Petteri
- Aimonen).
- * Build system: Changes to MIN definitions in all limit.h header files
- to avoid integer overflows. For example from (-128) to (-127 - 1)
- (from Petteri Aimonen).
- * Applications: Modbus fixes from Freddie Chopin.
- As well as other, less critical bugs (see the ChangeLog for details)
- NuttX-6.25
- ----------
- The 92nd release of NuttX, Version 6.25, was made on February 1, 2013,
- and is available for download from the SourceForge website. Note
- that release consists of two tarballs: nuttx-6.25.tar.gz and
- apps-6.25.tar.gz. Both may be needed (see the top-level nuttx/README.txt
- file for build information).
- This release corresponds with SVN release number: r5595
- Note that all SVN information has been stripped from the tarballs. If you
- need the SVN configuration information, you should check out directly from
- SVN. Revision r5595 should equivalent to release 6.25 of NuttX:
- svn checkout -r5595 svn://svn.code.sf.net/p/nuttx/code/trunk nuttx-code
- Or (HTTP):
- svn checkout -r5595 http://svn.code.sf.net/p/nuttx/code/trunk nuttx-code
- Additional new features and extended functionality:
- * OS Initialization
- - Removed support for CONFIG_BUILTIN_APP_START. This is not really a
- useful feature and creates a violation of the OS layered
- architecture.
- * Task Creation:
- - Implement a simple vfork(). In NuttX-6.25, this interface is
- available only for ARM7/9, ARMv7-M (Cortext-M3/4), and MIPS32
- (PIC32MX) platforms.
- - exec() now sets the priority of the new task to the same priority as
- the parent task (instead of the arbirtrary value of 50).
- - New, partially complient implementations of execv() and execl().
- These are only partially compliant because they do not overlay any
- existing "process space" but rather create the new task and exit().
- - Add a complete implementation of posix_spawn(). This standard
- interface is a better match for an MMU-less architecture than are
- vfork() plus execv() or execl().
- - Add a task start hook that will be called before the task main
- is started. This can be used, for example, to schedule C++
- static constructors to run automatically in the context of the
- new task.
- * Task Parentage
- - Repartitioned tasking data structures. All shared resources are now
- collected together in a "task group". A task group includes the
- original task plus all of the pthreads created by the task.
- - Added support for remember the parent "task group" when a new task is
- started.
- - Added optional support to record the membership of each thread in
- the "task group".
- - Implement support for retaining child task status in the "task group"
- after the child task exists. This is behavior required by POSIX.
- But in NuttX is only enabled with CONFIG_SCHED_HAVE_PARENT and
- CONFIG_SCHED_CHILD_STATUS
- - Add internal logic to "reparent" a task. This is useful,
- for example, where the child task is created through a trampoline
- task that redirects I/O. Reparenting allows the caller of posix_spawn()
- to be reparented for the eventual child thread.
- - Added support for SIGCHLD. Sent to all members of the parent task
- group when the file member of the child task group exits.
- - If SIGCHLD and retention of child task exist status are enabled, then
- a more spec-compliant version of waitpid() is enabled.
- - New interfaces waitid() and wait() are also enabled when SIGCHLD
- is enabled.
- * File System
- - dup() and dup2() can new be used with opened files in a mounted file
- system. This supports re-direction of output in NSH to files.
- - The binfs file system was moved from apps/builtin to fs/binfs. The
- binfs file system was extended to support execution of "builtin
- applications" using exec(), execv(), execl(), or posix_spawn().
- - Added logic based on SIGCHLD to automatically unload and clean-up
- after running a task that was loaded into memory.
- * Binary Formats
- - Much of the logic for "builtin applications" was moved from
- apps/builtin to nuttx/binfmt/libbuiltin. Includes some extensions
- contributed by Mike Smith.
- - A binary loader was added for builtin applications to support
- execution of "builtin applications" using exec(), execv(),
- execl(), or posix_spawn().
- * Drivers:
- - Added logic to marshal and serialized "out-of-band" keyboard
- commands (such as cursor controls and key release events) intermixed
- with normal ASCII keypress data. The encoding is partially integrated
- in the HID keyboard driver and the decoding full integrated into the
- apps/examples hidkbd and keypadtest (the latter contributed by Denis
- Carlikli).
- - Driver for the UG-2864HSWEG01 OLED contributed by Darcy Gong.
- - Add support for removable serial devices (like USB serial). This
- support is enabled by CONFIG_SERIAL_REMOVABLE.
- * ARMv7-M:
- - Added an option to use the BASEPRI register to disable interrupts
- (instead of the PRIMASK). This eliminates some innocuous hardfaults
- that interfere with some debug tools. You need to switch to the
- BASEPRI method only if you have such tool interference.
- * STM32 Drivers
- - Bring STM32 F1 DMA capabilities up to par with the STM32 F2/F4
- (contributed by Mike Smith).
- - Add support for USART single wire mode (Contributed by the PX4
- team).
- - Updates to support for SPI DMA on the STM32 F1/F2/F4. From
- Petteri Aimonen.
- * STM32 Boards:
- - New configuration to support the UG-2864HSWEG01 OLED on the
- STM32F4Discovery board.
- - Added a posix_spawn() test configuration for the STM32F4Discovery.
- * LM3S/LM4F
- - Files and directories repartitioned to support both LM3S and LM4F
- using the STM32 organization as a model.
- - Partial definitions for the LM4F contributed by Jose Pablo Carballo
- (this is still a work in progress).
- * LM3S Boards
- - Added scripts and documentation to use OpenOCD with the LM3S (from
- Jose Pablo Carballo).
- * LPC176x/LPC178x
- - Files and directories repartitioned to support both LPC175x/LPC176x
- and the LPC177x/LPC178x families using the STM32 organization as a
- model. The LPC1788 port is a work in progress by Rommel Marcelo.
- * LPC176x/LPC178x Boards:
- - Added a configuration to support the Wave Share Open1788 board.
- This is still a work in progress by Rommel Marcelo.
- * LPC2148 Boards:
- - Add basic support for the The0.net ZP213x/4xPA board (with the LPC2148
- and the UG_2864AMBAG01 OLED).
- - Add an nxlines configuration for the ZP213x/4xPA (with the LPC2148
- and the UG_2864AMBAG01).
- * Simulator:
- - Add an nxlines configuration for the simulator.
- * Networking:
- - Add logic to work around delayed ACKs by splitting packets
- (contributed by Yan T.).
- - Split net_poll() to create the internal interface psock_poll().
- * LCDs:
- - Added support for LCD1602 alphanumeric LCD (HD4468OU controller).
- * Graphics:
- - Added 5x8 monospace font. This tiny font is useful for graph
- labels and for small bitmapped display. Contributed by Petteri
- Aimonen.
- * Build System:
- - Add an options to better manage toolchain prefixes.
- - Redesigned how the context targer works in the apps/ directory.
- The old design caused lots of problems when changing configurations
- because there is no easy way to get the system to rebuild the
- context. This change should solve most the problems and eliminate
- questions like "Why don't I see my builtin application in NSH?"
- * Kconfig Files:
- - There are several new configurations that use the kconfig-frontends
- tools and several older configurations that have been converted to
- use these tools. There is still a long way to go before the conversion
- is complete:
- configs/sim/nxwm
- configs/sim/nsh
- configs/stm3220g-eval/nxwm
- configs/stm32f4discovery/posix_spawn
- configs/olimex-lpc1766stk/nsh
- configs/olimex-lpc1766stk/hidkbd
- configs/olimex-lpc1766stk/nettest
- configs/open1788/ostest
- configs/stm32f4discovery/nsh
- configs/stm32f4discovery/usbnsh
- configs/lm326965-ek (all configurations)
- configs/mcu123-214x/nsh
- configs/ubw32/ostest
- * Tools:
- - tools/kconfig.bat: Kludge to run kconfig-frontends from a DOS shell.
- - tools/configure.c: configure.c can be used to build a work-alike
- program as a replacement for configure.sh. This work-alike
- program would be used in environments that do not support Bash
- scripting (such as the Windows native environment).
- - tools/configure.bat: configure.bat is a small Windows batch
- file that can be used as a replacement for configure.sh in a
- Windows native environment. configure.bat is actually just a
- thin layer that executes configure.exe if it is available. If
- configure.exe is not available, then configure.bat will attempt
- to build it first.
- * Applications:
- - New and modified examples:
- apps/examples/wlan: Remove non-functional example.
- apps/examples/ostest: Added a test of vfork(). Extend signal
- handler test to catch death-of-child signals (SIGCHLD). Add a
- test for waitpid(), waitid(), and wait().
- apps/exampes/posix_spawn: Added a test of posix_spawn().
- - NSH:
- NSH now supports re-direction of I/O to files (but still not from).
- The block driver source argument to the mount command is now
- optional for file systems that do not require a block driver.
- NSH can now execute a program from a file system using posix_spawn().
- Added support for a login script. The init.d/rcS script will be
- executed once when NSH starts; the .nshrc script will be executed
- for each session: Once for serial, once for each USB connection,
- once for each Telnet session.
- - Supports a new daemon that can be used to monitor USB trace outpout.
- - Removed non-functional wlan example.
- Bugfixes (see the ChangeLog for details). Some of these are very important:
- * Tasking:
- - Fixed a *critical* task exit bug. Here is the failure scenario:
- (1) sched_lock() is called increments the lockcount on the current
- TCB (i.e., the one at the head of the ready to run list), (2)
- sched_mergepending is called which may change the task at the head
- of the ready-to-run list, then (3) sched_unlock() is called which
- decrements the lockcount on the wrong TCB. The failure case that
- I saw was that pre-emption got disabled in the IDLE thread, locking
- up the whole system.
- * Signals:
- - sigtimedwait() would return a bad signal number if the signal was
- already pending when the function was called.
- * Drivers:
- - Some SD cards will appear busy until switched to SPI mode for
- first time. Having a pull-up resistor on MISO may avoid this
- problem, but this fix from Petteri Aimonen makes it work also
- without pull-up.
- * STM32 Drivers:
- - STM32 FLASH driver counting error (from Freddie Chopin).
- - STM32 F4 maximum SPI frequency was wrong (corrected by Petteri
- Aimonen).
- * STM32 Boards
- - Due to cloning of untested code, the logic to control on-board
- LEDs did not work on any STM32 boards.
- - Serial devices number /dev/ttyS0-5 is there is a serial console,
- but /dev/ttyS1-6 if there is no serial console.
- * Binary Formats
- - C++ static constructors execute now using a start taskhook
- so that they execute in the context of the child task (instead
- of in the context of the parent task).
- * File Systems:
- - Several FAT-related bugs fixed by Petteri Aimonen.
- * Networking:
- - Fix poll/select issure reported by Qiang: poll_interrupt() must call
- net_lostconnection() when a loss of connection is reported. Otherwise,
- the system will not remember that the connection has been lost and will
- hang waiting on a unconnected socket later.
- - Similar issues corrected for recvfrom() and send().
- - Telnetd would hang in a loop if recv() ever returned a value <= 0.
- * Libraries:
- - fread() could hang on certain error conditions.
- - Can't handle SYSLOG output to a character device from the IDLE task
- (because the IDLE task can't block).
- * Build System:
- - Serial was driver was not being built if there is no console
- device. Obviously, the serial driver may be needed even in
- this case.
- * Additional Bugfixes:
- - sig_timedwait() and clock_time2ticks.c: Timing "rounding" logic
- - ARM9 Compilation issue with low vectors.
- - readline() return value
- - Others as detailed in the ChangeLog: HID keyboard, LPC17xx bit
- definitions, strndup(), PL2303, SYSLOG error handling, AT25,
- apps/examples.
- NuttX-6.26
- ----------
- The 93rd release of NuttX, Version 6.26, was made on March 15, 2013,
- and is available for download from the SourceForge website. Note
- that release consists of two tarballs: nuttx-6.26.tar.gz and
- apps-6.26.tar.gz. Both may be needed (see the top-level nuttx/README.txt
- file for build information).
- This release corresponds with SVN release number: r5745
- Note that all SVN information has been stripped from the tarballs. If you
- need the SVN configuration information, you should check out directly from
- SVN. Revision r5745 should equivalent to release 6.26 of NuttX:
- svn checkout -r5745 svn://svn.code.sf.net/p/nuttx/code/trunk nuttx-code
- Or (HTTP):
- svn checkout -r5745 http://svn.code.sf.net/p/nuttx/code/trunk nuttx-code
- Additional new features and extended functionality:
- * OS Initialization:
- - Add an additional call-out to support board-specific driver
- initialization during the boot-up phase (available with
- CONFIG_BOARD_INITIALIZE=y).
- * Tasking:
- - New interface task_spawn() that is like posix_spawn(), but uses
- entry point addresses like task_create().
- - Additional data restructuring as a continuation of the task group
- changes of NuttX 6.25. These data structures were moved from the
- TCB structure into the task group: pthread join data,
- atexit/on_exit callbacks, waitpid data structures, and message
- queues.
- - TCBs for tasks and pthreads are now separate structures. This
- saves a little memory since tasks do not have to carry the overhead
- for threads and vice versa.
- * Kernel Build:
- - Extensive changes were made to support the kernel build mode. In
- this mode, NuttX is built as a monolithic kernel. NuttX is built
- as a separate kernel mode "blob" and the applications are built
- as a separate user mode "blob". The kernel runs in kernel mode and
- the applications run in user mode (with the MPU restricting user
- mode accesses). Access to the kernel from the user blob is only
- via system calls (SVCalls).
- - Extensive changes were made to the syscall, SVCall, and trapping
- logic. Many internal interfaces were renamed.
- - The memory manager was extended to support both kernel- and user-
- mode allocations. Logic within the kernel needs to use the
- correct kernel- or user-space allocator, depending upon the user
- of the allocated memory.
- - The user-space blob now contains a header built in at the beginning
- of the block that provides the same information that was previously
- provided by a kludgy, auto-generated header file (user_map.h).
- - Basic support implemented for the ARMv7-M family with fragments
- also implemetned for the ARMv6-M and MIPS32 families.
- - Kernel build supported added for the LPC17xx Open1788 and for
- the Atmel SAM3U-EK board. All testing is being performed on the
- Open1788 board.
- * Signals:
- - Delivery of signals to threads within a task group is now compatible
- with the way that signals are delivered to threads within a process.
- * Drivers:
- - Add a driver for the SST29VF NOR FLASH parts.
- - USB device trace/debug feature extended to decode device-specific
- trace events to make the trace output more readable (from Petteri
- Aimonen).
- - USB MSC device driver can not support names of differing sizes
- in the USB descriptor and the SCSI fields (from Petteri Aimonen).
- - Locking added to MMC/SD SPI drivers so that MMC/SD can co-exist on
- the same bus as other SPI devices. Frequency is reset each time
- that the MMC/SD SPI has the bus locked. (from Petteri Aimonen).
- * ARMv6-M (Cortex-M0):
- - Added support for the ARM Cortex-M0 family.
- * nuvoTon NUC120:
- - Added support for the nuvoTon NUC120 MCU (Cortex-M0).
- * nuvoTon NUC120 Boards:
- - Added basic support for the nuvoTon NuTiny-SDK-NUC120 board (Cortex-M0).
- * LPC17xx:
- - Added support for the LPC177x and LPC178x families. Most of this is
- the work of Rommel Marcelo.
- * LPC17xx Boards:
- - Added support for Zilogic System's ARM development Kit, ZKIT-ARM-1769.
- From Rashid.
- - The port for the WaveShare Open1788 board is now functional. Basic
- OS test and NuttShell (NSH) configurations are functional. More
- driver development and testing is needed (from Rommel Marcelo).
- * LPC17xx Drivers:
- - Added an SD card MSI driver for the LPC178x. The driver is marginally
- functional but requires DMA capability to be reliable.
- * STM32
- - Support extended to handle the STM32 F3 family (Cortex-M4 with F1-like
- peripherals).
- * STM32 Boards
- - Added support the STMicro STM32F3Discovery board (STM32 F3).
- * Stellaris LM3S/LM4F
- - Basic support for the LM4F120 family is in place, but untested (mostly
- from Jose Pablo Carballo).
- * Stellaris LM4F Boards
- - Add support for the LM4F120 LaunchPad (untested).
- * Networking:
- - select() should now allocate a little less memory.
- * Memory Management:
- - Extended to support multiple heaps. This is used as part of
- the kernel build in order to support separater user- and
- kernel-mode heaps.
- - The stand-alone memory manger test had to be removed. It
- was too entangled and made extension of the memory manager
- nearly impossible. This is a loss.
- * Build System:
- - Several configurations converted to use the kconfig-frontends
- configuration tool. There are still many more that need to
- be converted.
- * C Library:
- - Move the workqueue logic into the C library. There is now a
- special user-space version of the work queue (which will only
- be used with a NuttX kernel build).
- - Implementation of itoa() contributed by Ryan Sundberg.
- * Applications:
- - The NSH builtin task logic now uses task_spawn() to start builtin
- applications.
- - The OS test now includes a test cased to verify task_restart().
- Efforts In Progress. The following are features that are partially
- implemented but present in this release. Most are expected to be fully
- available in NuttX 6.27.
- * LM4F120 LaunchPad port. Code is in place, but nothing has been tested.
- * WaveShare Open1788 port. This port as actually complete and
- functional. However, there is still ongoing development and
- testing of drivers.
- * Kernel Build. Much progress has been made, but there kernel build is
- not yet fully functional due to several user resources that are not yet
- properly disentangled from the kernel blob.
- * Conversion of old configurations to use the kconfig-frontends
- tool is an ongoing effort that will continue for some time.
- Bugfixes (see the ChangeLog for details). Some of these are very important:
- * Tasking:
- - The wrong PID was being signalled with SIGCHILD. It should be
- the PID of the task that create the task group, not the ID of
- the last thread to leave the task group.
- - Added logic so that some internal resources and states are recovered
- when tasks are deleted or restarted. Handle cases where there are
- outstanding timed events pending when tasks are deleted or restarted.
- * ARMv7-M:
- - Several fixes to the MPU control logic.
- * Drivers:
- - Removable serial drivers race conditions fixed.
- - MAX11802 timing bug (from Petteri Aimonen).
- * STM32 Drivers:
- - Handle cases were SPI DMA logic fails if sem_wait is awakened
- by a signal. Need to clear error flags to prevent corruption of
- subsequent transfers. Also, bit count should not be changed while
- the SPI peripheral is enabled (from Petteri Aimonen).
- - Fixes to the OTG FS device driver from Petteri Aimonen.
- - Fix typos in DMA register header file (from Yan T.)
- * Graphics:
- - Correction to the hyphen in the SANS 17x22 font (from Petteri
- Aimonen).
- * Networking:
- - Corrected errors in the socket poll/select logic. Additional
- state logic was needed to detect if the socket is still connected
- before starting the poll wait. (bug reported by Qiang Yu).
- * Memory Management:
- - mallinfo() should hold the memory manager semaphore (from Petteri
- Aimonen.
- * Build System:
- - Resolved several build errors reported by Mike Smith.
- * Applications:
- - Fixed an NSH memory leak: Needed to detach after creating each
- pthread.
- - readline() now returns EOF on any failure (instead of a negated
- errno value). This is because the underlying read is based on
- logic similar to getc. The value zero (meaning end-of-file)
- was being confused with a NUL. So if a NUL was received, the
- NSH session would terminate because it thought it was the end of
- file.
- NuttX-6.27
- ----------
- The 94th release of NuttX, Version 6.27, was made on April 28, 2013,
- and is available for download from the SourceForge website. Note
- that release consists of two tarballs: nuttx-6.27.tar.gz and
- apps-6.27.tar.gz. Both may be needed (see the top-level nuttx/README.txt
- file for build information).
- Additional new features and extended functionality:
- * OS Initialization:
- - Add missing registration of /dev/zero. Registration of /dev/null
- should depend upon conditional compilation. From Ken Pettit.
- * Tasking:
- - Added a new interface to set aside memory on the task's stack. This
- is used (at least in the kernel build) to hold task arguments.
- - Remove up_assert_code(). One assertion routine is enough.
- * Kernel Build:
- - Extensive changes were made to support the kernel build mode. In
- this mode, NuttX is built as a monolithic kernel. NuttX is built
- as a separate kernel mode "blob" and the applications are built
- as a separate user mode "blob". The kernel runs in kernel mode and
- the applications run in user mode (with the MPU restricting user
- mode accesses). Access to the kernel from the user blob is only
- via system calls (SVCalls).
- - Kernel build configurations for the Open1788 board and for the
- STM32F4Discovery now execute correctly.
- - Changes were made to task and thread start-up routines, signal
- handling, data structures, ARMv7-M SVCalls, stack management
- interfaces,
- * Drivers:
- - Driver for the ST7567 LCD Display Module from Univision Technology
- Inc. Contributed by Manikandan.S
- - SPI initialize functions renamed so that multiple SPI blocks can
- be initialized.
- - Extended to support the RAMTRON FM25V01 device. Contributed by
- Lorenz Meier
- - Serial drivers: TIOCSERGSTRUCT ioctls now conditioned on
- CONFIG_SERIAL_TIOCSERGSTRUCT
- * ARMv7-M (Cortex-M3/4):
- - Added support for modifiable interrupt vectors in RAM
- * nuvoTon NUC1xx:
- - Added kernel build support
- * Freescale Kinetis:
- - Add kernel build support
- - Add support for the Kinetis L family of Cortex-M0+ MCUs. Contributed
- by Alan Carvalho de Assis.
- * LPC17xx:
- - Now holds off sleep mode in the IDLE loop is DMA is in progress
- (because sleep mode will disable CPU SRAM).
- * LPC17xx Boards:
- - ZKIT-ARM-1769: Now supports the ST7567 LCD display module. Added
- an nxhello configuration for testing (Manikandan.S).
- - ZKIT-ARM-1769: Add support for both CAN1 and CAN2. Contributed by
- M.Kannan
- - Open1788: Basic support for the WaveShare Open1788 board is complete
- with working OS test, NSH, and graphics configurations.
- - Open1788: Integrated the LPC178x LCD driver with the WaveShare display.
- Touchscreen support is included, howerver, there appears to be an
- issue with the Open1788 touchscreen interrupt signal.
- - Open1788: Now supports SDRAM (used to provide the LCD framebuffer).
- - Open 1788: Reversed sense of the IDLE LCD. It is now off when the
- LPC17 is sleeping and on when awake. That is much a better visual
- indication of the dynamic CPU load
- * LPC17xx Drivers:
- - Added an LCD framebuffer driver for the LPC177x/8x family.
- - Implemented LPC17xx GPDMA support.
- - Integrated the LPC17xx GPDMA support into the SD card driver.
- - SSP driver adapted to work with the LPC178x family.
- - Separate LPC176x and LPC178x GPIO logic; this logic is too different
- to maintain in one file with conditional compilation.
- - Re-design of the GPIO logic for the LPC178x family by Rommel Marcelo.
- * LPC43xx:
- - Added kernel build support
- * STM32:
- - Added support for kernel mode build.
- - Added architecure support for the STM32 F427/F437 chips. Contributed
- by Mike Smith
- * STM32 Boards:
- - Added a configuration to support a kernel mode build of the OS test
- on the STM32F4Discovery
- * Stellaris LM3S/LM4F:
- - Added kernel build support
- - Added support for the 7 UARTs on the LM4F120
- * Stellaris LM4F Boards:
- - Added scripts and instructions to simplify use of OpenOCD with ICDI
- (JP Carballo)
- - The basic for the Stellaris LM4F120 Launchpad is complete. This
- includes support for OS test and NSH configurations. Additional
- driver development is needed.
- * Build System:
- - Directories where the same sources files are used to build different
- objects in the first and second pass kernel builds need to keep those
- objects in separate directories so that they are not constantly
- rebuilt.
- * Applications:
- - apps/system/ramtest: Add a simple memory test that can be built
- as an NSH command.
- * Tools:
- - kconfig2html is a new tool which will replace the hand-generated
- documentation of the NuttX configruation variables with auto-
- generated documentation.
- Efforts In Progress. The following are features that are partially
- implemented but present in this release. Most are expected to be fully
- available in NuttX 6.28.
- * A port to the Freescale Freedom KL25Z is complete but not yet stable
- enough. The KL25Z is a low-cost Cortex-M0+ part with 128KB of FLASH
- and 16KB of SRAM. This is is the effort of Alan Carvalho de Assis.
- * Conversion of old configurations to use the kconfig-frontends
- tool is an ongoing effort that will continue for some time.
- At this time, only 32% of the configurations have been converted
- to use the kconfig-frontends tools.
- Bugfixes (see the ChangeLog for details). Some of these are very important:
- * Tasking:
- - Fixed a critical bug: When there is pending C buffered output
- and the system is very busy, the a pthread may be blocked at
- a critical point when trying to exit. Blocking at this critical
- point would cause crashes. All entire task/thread exit logic
- paths were reviewed and failsafe mechanisms were put in place
- to assure that exitting tasks never block after task teardown
- has been started.
- * ARMv6-M:
- - Fixed parameter passing for all system call inline functions with > 3
- parameters
- - Fixed a major problem: The Cortex-M0 has no BASEPRI register but the
- logic of NuttX-6.26 was using it to manage interrupts. Switch to
- using the PRIMASK instead. This means that hardfaults will (again)
- occur when SVC instructions are executed
- * ARMv7-M:
- - Corrected Correct MPU sub-region settings for unaligned regions.
- - In exception handling with CONFIG_NUTTX_KERNEL, need to explicitly
- set and clear the privilege bit in the CONTROL
- - Fixed parameter passing for all system call inline functions with > 3
- parameters
- * Drivers:
- - Support for O_NONBLOCK was not supported in the "upper half"
- serial driver.
- - PL2303 compilation errors
- * Stellaris LM3S/4F:
- - Corrected typos in alternate function definitions.
- * LPC17xx Drivers:
- - Added a work-around for an ADC errata. From Chris Taglia
- - Only one ADC pin was configured. Need to configure all that
- are in the ADC0 set. From MKannan
- * File Systems:
- - The FAT logic was not making a distinction between directory
- non-existence and file non-existence so when it you try to
- create a file in a non-existent directory, it would create a
- file with the name of the missing directory. Reported by Andrew
- Tridgell
- - Several fixes to the FAT file system from Ronen Vainish. These
- fixes mostly involve the logic to extend directory clusters for
- the case of long file names but also include a few important
- general fixes (such as for storing 32 bit FAT values)
- - mkfatfs was writing the boot code to the wrong location. From
- Petteri Aimonen
- * Networking:
- - Fixed a compilation error when socket options are are disabled.
- Reported by Daniel O'Connor
- * C Library:
- - Corrected an error in sscanf. If %n occurs in the format statement
- after the input data stream has been fully parsed, the %n format
- specifier will not be handled. Reported by Lorenz Meier
- - strchr(str, '\0') should return a pointer to the end of the string,
- not NULL. From Petteri Aimonen
- * Build System:
- - Fix naming of NuttX target if EXEEXT is defined.
- * Applications:
- - OS test: Fix timing error in non-cancelable thread test.
- - NSH: Correct the test of the skip input parameter. Was limiting the
- range to <= count. From Ken Petit.
- NuttX-6.28
- ----------
- The 95th release of NuttX, Version 6.28, was made on June 14, 2013,
- and is available for download from the SourceForge website. Note
- that release consists of two tarballs: nuttx-6.28.tar.gz and
- apps-6.28.tar.gz. Both may be needed (see the top-level nuttx/README.txt
- file for build information).
- Additional new features and extended functionality:
- * File Systems:
- - SMART FLASH file system (contributed by Add Ken Pettit).
- * MTD (FLASH) Drivers:
- - Add support of MTD partitions via a new MTD driver that manages a
- set of MTD devices, each managing a subset of the FLASH region
- managed by the parent MTD driver.
- - Extended the MTD interface to provide an (optional) method to
- perform byte oriented writes if supported by the FLASH part.
- - M25Px driver re-architected to use the byte write capability (when
- possible) and to use 4KB sectors for the erase block size when the
- part supports it (from Ken Pettit).
- * LCD Drivers:
- - New interface definitions to support audio devices (from Ken Pettit)
- and alphanumeric, segment LCDs.
- * Wireless Drivers:
- - Added new driver for the wireless nRF24L01+ transceiver (from
- Laurent Latil).
- * Calypso:
- - Added support for the Pirelli DP-L10 phone (from Craig Comstock via
- Alan Alan Carvalho de Assis)
- * STM32:
- - Added an option to conditionally disable the "wfi" sleep mode. This
- is needed with certain JTAG debuggers to prevent the debug session
- from being disconnected (from Ken Pettit).
- - Added support for the STM32L (STM32L15X/STM32L16x) family.
- - Added STM32F103C4 and F103C8 chip support (from Laurent Latil).
- - Added a new interface function, stm32_dmacapable() that can be used
- to determine if DMA is possible from the specified memory address
- (from Petteri Aimonen)
- * STM32 Drivers:
- - If CONFIG_STM32_DMACAPABLE is defined, the STM32 SPI driver now uses
- stm32_dmacapable() to determine if it is possible to perform DMA
- from the specified address. This change is important for the STM32
- F4 which may have SPI data buffers allocated on the stack in CCM
- memory which cannot support the DMA (from Petteri Aimonen).
- * STM32 Boards:
- - Support added for the MikroElektronika Mikromedia for STM32F4
- development board (from Ken Pettit) with the MIO283QT2 LCD and
- touchscreen. Several graphics configurations are included.
- - The HY-mini STM32v board now uses the common SSD1289 driver
- and supported the card detect interrupt. Several new
- configurations also added and some removed (from Laurent Latil).
- - Support added for the R65105-based LCD that comes with some
- HY-Mini STM32v boards (from Christian Faure).
- - Added basic support for the STM32L-Discovery board. Drivers
- for the on-board segment LCD are included.
- - Added support for the STM32 Tiny development board based on the
- STM32 F103C8T6 MCU. This includes support for the nRF24L01+
- wireless on the board (from Laurent Latil).
- * Stellaris LM3S/LM4F:
- - Support added for a TI/Stellaris internal FLASH MTD driver (from Max
- Holtzberg).
- * Stellaris LM4F Boards:
- - The LM3S6965-EK now has configurations for the UDP discovery tool and
- for the TCP echo server (both from Max Holtzberg)
- * Atmel ATSAM3/4:
- - Reorganized, renamed, and updated directory structure to better
- support additional members of the SAM3/4 family.
- - Added support for both the ATSAM4S and ATSAM4L families. The
- ATSAM4S is similar to the ATSAM3U, but the ATSAM4L is quite a
- different beast, really much more akin to the AVR32s SoCs but
- with a Cortex-M4.
- * Atmel ATSAM3/4 Boards:
- - Added support for the Atmel SAM4L Xplained Pro development board.
- This board features the ATSAM4LC4C MCU (Cortex-M4 with 256KB FLASH +
- 32KB SRAM).
- - Added support for the Atmel SAM4S Xplained developement board. This
- board features the ATSAM4S16C MCU (Cortex-M4 with 1MB FLASH + 128KB
- SRAM).
- * PIC32MX Boards:
- - Added support for the 1602 segment LCD on-board the Sure PIC32MX
- board. This board will now also support a USB NuttX console and
- the USB monitor test program.
- * Build System:
- - Clean-up of almost all .gitignore files: Made scope of ignore to be
- only the current directory; Ignore .dSYM files in directories where
- .exe's may be built. Also, in Makefiles, clean .dSYM files in
- directories where an .exe may be built.
- - Standardize and consolidated all build-as-an-NSH-application
- configuration settings. Now only CONFIG_NSH_BUILTIN_APPS is
- sufficient to build an application, test, or or example as an NSH
- builtin application.
- - Added support for a generic ARM, ARMv6-M and ARMv7-M Windows EABI
- toolchains.
- * Libraries:
- - Added encoder/decoder logic to marshal and serialize special segment
- LCD (SLCD) commands intermixed with normal ASCII data. This is the
- similar to the encoding/decoding logic that is used to marshal
- special commands from a keyboard.
- - Add dprintf() and vdprintf() (the latter from Andrew Tridgell).
- - Add an application that may be built as an NSH builtin command that
- will erase FLASH using a flash_eraseall NSH command (from Ken Pettit).
- * Applications:
- - Added an MTD partition test/examples. Currently used with (1) the a
- simulation configuration to test MTD partitions on a RAM emulation
- of FLASH and (2) with the Mikroe STM32F4 configuration.
- - Added a test/example to verify alphanumeric, segment LCDs.
- - Added a simple single threaded, poll based TCP echo server based
- on W. Richard Stevens UNIX Network Programming Book (from Max
- Holtzberg).
- - Added several tests of the SMART block driver and file system (from
- Ken Pettit).
- - Added a runtime configuration for the UDP discover utility (from
- Max Holtzberg).
- - Added an example application to demo the nRF24L01 driver (from
- Laurent Latil).
- - New and modified NSH commands:
- Added a -h option to the df command to show the volume information
- in human readable form (from Ken Petit).
- Add a new mksmartfs command (from Ken Petit).
- Efforts In Progress. The following are features that are partially
- implemented but present in this release. Most are expected to be fully
- available in NuttX 6.28.
- * Audio System:
- - A complete audio subsystem include CODECs, higher level management,
- interface definitions, and audio drivers was contributed by Ken
- Pettit. This work has not been completely verified as of this
- release and so is categorized as a work-in-progress. At present,
- progress is blocked due to issues interfacing with the VS1053
- audio DAC on the Mikroe STM32F4 board.
- * kconfig-fronted Configuration:
- - Conversion of old configurations to use the kconfig-frontends
- tool is an ongoing effort that will continue for some time.
- At this time, only 43% of the configurations have been converted
- to use the kconfig-frontends tools.
- Bugfixes (see the ChangeLog for details). Some of these are very important:
- * Tasking:
- - Modify assertion in the priority inheritance logic that is reported
- to cause false alarm assertions.
- * Kernel Build:
- - Typo in syscall proxying logic corrected by Ken Pettit.
- * Networking:
- - Poll setup/teardown logic should ignore invalid (i.e., negative)
- file descriptors (from Max Holtzberg).
- - When readahead data is available, the network poll() logic should
- set POLLIN (or POLLRDNORM), not POLLOUT (from Max Holtzberg).
- * LCD Drivers:
- - Correct power controls in the MIO283QT2 LCD driver.
- * USB Device Controller Drivers:
- - Change the default IN request buffer size from 64 to 96. This will
- avoid requests of exactly MAXPACKET size and, hence, avoid so many
- NULL packets. Also, fix the OUT request buffers size to exactly the
- max packet size. It really cannot be any other size.
- * STM32 Drivers:
- - Correct some bad STM32 F1 DMA definitions that crept into the system
- a few months ago a broke STM32 F1 DMA (from Laurent Latil)
- - Fixed an error in NULL packet handling in the STM32 F1 USB device
- controller driver: If the NULL-packet needed flag ever got set,
- then it was not being cleared and infinite NULL packets resulted.
- This only affects the CDC/ACM class and was the cause of the
- failures using the USB CDC/ACM device as a NuttX console. With this
- change the USB works well as an alternative NuttX console device for
- the STM32 F1 family.
- - Correct some bad condition compilation in the RCC logic (CONFIG_
- missing from setting names). This affects some STM32 FLASH pre-
- fetch settings (from Lorenz Meier).
- - Change for hardware flow control support for STM32. The change also
- fixes incorrect operation of USART2 and UART5 in current master
- (from Lorenz Meier and Mike Smith).
- - Fixed a backward conditional in USB OTG FS host controller driver
- that prevented detection of disconnection events (from Scott).
- * LPC17xx Drivers:
- - I2C interrupt control. Also correction for a single byte read
- timeout error (from M. Kannan).
- * Freescale Kinetis:
- - Freedom KL25Z pin multiplexing and LED control corrections (from
- Alan Carvalho de Assis)
- * PIC32MX:
- - Fix NULL packet handling in the PIC32 USB device driver. Without
- this fix the CDC/ACM driver cannot be used reliably with the PIC32
- USB. With this change the USB works well as an alternative NuttX
- console device.
- * Graphics:
- - Default priorities for NxWidget and NxWM threads should be 100,
- not 50, to be consistent with other default priorities.
- * Applications:
- - Remove the CONFIG_EXAMPLES_NXTEXT_NOGETRUN option from the NXTEXT
- example. The test logic was bad for the case where this options is
- not selected. Also, completed the empty Kconfig file.
- - C++ name mangling was occurring when this example is built as an NSH
- built-in application causing the entry to be undefined when called
- from C code.
- - Add some missing NSH library configuration values (from Lorenz
- Meier).
- NuttX-6.29
- ----------
- The 96th release of NuttX, Version 6.29, was made on July 31, 2013,
- and is available for download from the SourceForge website. Note
- that release consists of two tarballs: nuttx-6.29.tar.gz and
- apps-6.29.tar.gz. Both may be needed (see the top-level nuttx/README.txt
- file for build information).
- Additional new features and extended functionality:
- * Drivers:
- - Generalized the SSD1306 driver and added support UG-2832HSWEG04
- which is very similar to the existing support for the
- UG-2864HSWEG01.
- - Added support for a generic bit-bang SPI driver. This includes
- both a common "upper half" driver as well as a platformp-specific
- "lower half" dirvers based on a common "template."
- * ARMv7-A, Cortex-A5
- - Added support for the ARMv7-A architecture and the Cortex-A5 in particular.
- * ARMv7-M, Cortex-M3/4
- - Modified how some registers are copied during a context switch (with
- lazy FPU register saving). This should save some context switching
- time when the context switch is due to interrupt level processing.
- * STM32:
- - Added support for a separate CCM heap. This may be useful for
- segregating allocations for CCM (which cannot be used for DMA)
- from other allocations (that may be used used for DMA).
- * STM32 Drivers:
- - DAC: Added support for DAC DMA (contributed by John Wharington).
- - I2C: An I2C driver for the STM32 F3 family (from John Wharington).
- * Atmel AT91 SAM/4:
- - Add support for SAM3X and SAM3A chips
- * Atmel AT91 SAM/4 Drivers:
- - Re-architect the SAM3/4 SPI driver so that is it compatible with the
- SPI drivers of other MCUs.
- - Added register definition file for the SAM4L LCD peripheral.
- - Added SAM4L PDCA register definition file
- * Atmel AT91 SAM/4 Boards:
- - SAM4L-Xplained: Added support for the SPI-based SD card on the I/O1
- module.
- - SAM4L-Xplained: Added a driver for the LED1 segment LCD module.
- - SAM4L-Xplained: Added support for the UG-2832HSWEG04 OLED on the
- SAM4L Xplained Pro's OLED1 module
- - SAM4S-Xplained: Added support for on-board 1MB SRAM
- - Arduino Due: Basic support for the Arduino Due (SAM3X) is now
- included.
- - SAM3U-EK: The touchscreen is now functional.
- * Atmel AT91 SAMA5D3
- - Added support for the Atmel AT91SAMA5D3 Cortex-A5 chip family.
- * Atmel AT91 SAMA5D3 Boards
- - Added support for the Atmel SAMA5D3x-EK boards which use the AT9
- SAMA5D3x chips (x=1,3,4,5).
- * Freescale KL25Z Drivers
- - Freescale KL25Z TSI register definitions and example TSI driver for
- the Freedom KL25Z board from Alan Carvalho de Assis.
- - Added SPI driver and register definitions for the Freescale KL25Z.
- - Added a framework for controlling SPI-related discrete inputs and
- outputs. Taken from work by Alan Carvalho de Assis
- * Build System:
- - New sub-directories to hold SPI-related files: includes/nuttx/spi.h
- moved to include/nuttx/spi/.; SPI-related Kconfig info moved from
- drivers/Kconfig to drivers/spi/kconfig.
- - Finally... I changed the naming of configuration variables like
- CONFIG_DRAM_ to CONFIG_RAM_. This has bothered me for a long time
- since most boards don't have DRAM. The more generic RAM naming
- should not produce so much cognitive dissonance
- * Libraries:
- - Added CRC16 support.
- * Applications:
- - Added Zmodem file transfer support. This may be used as an embedded
- library or may be built as 'sz' and 'rz' commands that can be
- executed from NSH.
- - C++ initializers should be set once and, preferably, in the context
- of the task that uses any C++ statically initialized classes. This
- only becomes an issue if cxxtest or helloxx are built as NSH builtin
- applications. Then you want the initialization done in cxxtext or
- helloxx and not in NSH (and certainly not twice). Added
- configuration options to control who does the C++ initialization.
- NSH now does not do C++ initialization be default and must be
- configured to do otherwise. Conversely, cxxtest and helloxx
- will always do C++ initialization unless configured do otherwise.
- - examples/cxxtext: Add ostream test as provided by Michael.
- - NSH: Added a 'cmp' command that can be used to compare two files
- for equivalence. Returns an indication if the files differ.
- Contributed by Andrew Tridgell (via Lorenz Meier).
- Efforts In Progress. The following are features that are partially
- implemented but present in this release. They are not likely to be
- completed soon.
- * Audio System:
- - A complete audio subsystem include CODECs, higher level management,
- interface definitions, and audio drivers was contributed by Ken
- Pettit. This work has not been completely verified as of this
- release and so is categorized as a work-in-progress. At present,
- progress is blocked due to issues interfacing with the VS1053
- audio DAC on the Mikroe STM32F4 board.
- * kconfig-fronted Configuration:
- - Conversion of old configurations to use the kconfig-frontends
- tool is an ongoing effort that will continue for some time.
- At this time, only 45% of the configurations have been converted
- to use the kconfig-frontends tools.
- Bugfixes (see the ChangeLog for details). Some of these are very important:
- * File Systems:
- - Fixed compilation error if no file systems are enabled: Change
- error to ERROR.
- - Read-Ahead/Write buffering: Correct typos that can cause failures
- in some configurations (From Chia Cheng Tsao).
- * Drivers
- - Remove the wait for the touchscreen busy bit in the ADS7843E driver.
- From my reading of the ADS7843 spec, it would not be appropriate to
- wait for the BUSY bit to de-asserted anyway (since it is only de-
- asserted when we read the data). Most boards do not even bother to
- provide the BUSY bit.
- - MMC/SD SPI based driver: Driver needs to make sure that the SPI
- mode and data width are correct.
- - ENC28J60: Change buffer ordering to work around Errata. From Dave
- (ziggurat29).
- * USB Device Controller Drivers:
- - Fixed a typo in the composite device driver unitialization logic.
- DEV1 should be DEV2 in one case.
- - usbdev.h: Fix some typos that cause compiler errors when
- CONFIG_USBDEV_DMA and CONFIG_USBDEV_DMAMEMORY are selected (From
- Chia Cheng Tsao).
- * ARM9:
- - Fix a bug (uninitialized register error) that crept in the ARM9
- boot-up code several years ago. Obviously no one has used the
- ARM9 NuttX port for years!
- * STM32 Drivers:
- - Fix STM32 OTF FS endpoint allocation logic. Apparently the same
- endpoint can be allocated as both an IN or an OUT endpoint. The
- existing implementation only supported one allocation, either IN or
- OUT. This resulted in failures to allocate endpoints when used with
- the CDC/ACM + MSC composite driver (From Chia Cheng Tsao).
- - SDIO: Add support for the data block end (DBCKEND) interrupt to
- terminate transfers (From Chia Cheng Tsao).
- - DAC: Fixed numerous DAC driver errors and added support for DAC
- DMA (contributed by John Wharington).
- * SAM3/4:
- - SAM4S: Correct configuration of PIO pins for SAM4S B and C peripherals.
- - Need to disable write protection before configuring PIO pins.
- - GPIO configuration logic must protect against re-entrancy.
- - Clocking must be applied to the SMC module for the 3X and 3A family in
- order for the NFC SRAM to be functional.
- - Fixed some errors for interrupts on ports D-F.
- * SAM3/4 Drivers:
- - Common SPI driver: Fix SPI mode setting. In the SAM3/4 family, the
- clock phase control (CPHA) is inverted (NPHA). Also fixed an
- incorrect pointer test. Was checking if the wrong pointer was NULL.
- * SAM3/4 Boards:
- - SAM3U-EK: Fix polarity of the /PENIRQ signal (it is active low).
- The SAM3U-EK board now runs at 96MHz.
- * Applications:
- - apps/examples/nxhello: Minor fix for compilation error when the
- display resolution is low (< 8bpp) due to a typo that has been there
- for a long time. Also Correct default colors when in Y1 code mode.
- - apps/system/ramtest: The RAM test was not correctly built
- into the configuration and build system.
- - apps/examples/composite: Change to prevent some false alarm debug
- assertions (From Chia Cheng Tao).
- NuttX-6.30
- ----------
- The 97th release of NuttX, Version 6.30, was made on September 14, 2013,
- and is available for download from the SourceForge website. Note
- that release consists of two tarballs: nuttx-6.30.tar.gz and
- apps-6.30.tar.gz. Both may be needed (see the top-level nuttx/README.txt
- file for build information).
- Additional new features and extended functionality:
- * Common Drivers:
- - Extended TERMIOS support for serial and CDC/ACM drivers. From
- Mike Smith, Andrew Tridgell and Lorenz Meier.
- - Added option to disable serial port reordering. From Lorenz Meier.
- - Several changes to the USB host control interface and extensions to
- common USB host logic to handle host controllers with multiple
- downstream ports in the root hub.
- - USB device tracing: Extended decoding and stringifying of USB trace
- output to include trace output from class drivers.
- - USB host tracing: Added support for USB host tracing similar in
- some ways to USB device tracing: Stringification is an inherent
- part of the trace decoding (not an option). Only available in the
- SAMA5 USB host drivers now.
- * Networking / Network Drivers
- - Support for the Microchip ENCX24J600 Ethernet driver from Max
- Holtzberg
- - CC3000 Networking. Initial support for the TI CC3000 network
- module on the Freescale Freedom-KL25Z board from Alan Carvalho
- de Assis. This is still a work in progress.
- * ARMv7-A, Cortex-A5
- - Restructured some MMU-related logic and header files.
- - Hooks added for Cortex-A8, but not yet used.
- * STM32 Drivers:
- - STM32 SPI: nbits() interface extended to control bit order as well
- as bit width (from Teemu Pirinen)
- * STM32 Boards
- - Olimex STM32-P107: Incorporate ENCX24J600 networking for the Olimex
- STM32 P107 board.
- - LeafLabs Maple Board: Add board support for the LeafLabs Maple and
- Maple Mini boards. From Librae.
- * Atmel AT91 SAMA5D3x
- - Added support for the SAMA5 DMAC controllers.
- - DMA-capable drivers for the SAMA5 SPI peripherals.
- - DMA-capable HSCMCI 0/1/2 drivers.
- - Support for PIO interrupts
- - Utilities for intelligent conversions between physical and virtual
- addresses.
- - Added USB host controller drivers for both the OHCI (low- and full-
- speed) peripheral and the ECHI (high-speed) peripheral.
- - Added USB device controller for the SAMA5 UDPHS peripheral (full-
- and high-speed).
- - Added a Two Wire (TWI) driver. This is a variant of I2C.
- * Atmel AT91 SAMA5D3x-EK Development Boards
- - Now supports onboard SDRAM. Modified heap initialization logic
- to include SDRAM if configured.
- - Integrated a FAT file system on the on-board SPI-based AT25 serial
- FLASH
- - Integrated HSMCI0 and HSMCI1 support for the microSD and full file
- SD card slots. Includes PIO interrupts for card detection events.
- - Integrated USB OHCI and ECHI host and high-speed peripheral support.
- File system on AT25 now exported via Mass Storage Class. Includes
- PIO VBUS controls.
- - Integrated the TWI driver and the I2C tool. Added support for an
- external AT24 serial EEPROM.
- * Applications:
- - apps/examples/cc3000. Initial support for the TI CC3000 network
- module on the Freescale Freedom-KL25Z board from Alan Carvalho de
- Assis. Includes the test to verify the CC3000.
- - apps/examples/usbmsc: apps/examples/usbstorage renamed usbmsc for
- consistency. Change submitted by CCTSAO.
- - apps/system/usbmonitor: The USB monitor has been extended so that
- it can be used with USB device or host trace data.
- Efforts In Progress. The following are features that are partially
- implemented but present in this release. They are not likely to be
- completed soon.
- * CC3000 Networking
- - CC3000 Networking. Initial support for the TI CC3000 network
- module on the Freescale Freedom-KL25Z board from Alan Carvalho
- de Assis. This is still a work in progress.
- * kconfig-fronted Configuration:
- - Conversion of old configurations to use the kconfig-frontends
- tool is an ongoing effort that will continue for some time.
- At this time, only 46% of the configurations have been converted
- to use the kconfig-frontends tools.
- Bugfixes (see the ChangeLog for details). Some of these are very important:
- * File Systems:
- - ROMFS: Fix an error where long (>15) file names were read
- incorrectly from a ROMFS file system. From Mike Smith
- - NXFFS: Clean up some compiler warnings.
- * Common Drivers
- - MMC/SD driver: Correction for a bad return value when multiple
- block SDIO transfers are suppressed. By Andrew Tridgell.
- - USB HID keyboard and mass storage host-side class drivers: Fix some
- compilation errors and warnings when pre-allocated data structures
- are used.
- - USB device-side class drivers: Fix some compilations errors when
- DUALSPEED (i.e., full- and high-sped) support is enabled.
- - CDC/ACM and PL2303: Don't use max packetsize assigned to the endpoint
- when allocating request buffers; The default value of the endpoint
- max packetsize may be incorrect because the endpoint has not yet
- been configured. Really only an issue for high-speed endpoints.
- - USB Host Mast Storage Class: Fixed a problem that was causing some
- devices to fail to initialize: If device is returning fatal transfer
- errors while attempting to initialize, don't bother with the startup
- retries; abort immediately so that the device will be reset and we
- can try again with a better ready device.
- - USB Host Mast Storage Class: Correct a reference counting error:
- When an MSC device transfer fails while waiting for UnitTestReady,
- the reference count on the class was not being decremented. The end
- result is a memory leak as can be seen by the USB device numbers
- incrementing: sda, sdb, sdc, ...
- - USB Device CDC/ACM: Fix backward conditional compilation in the
- CDC/ACM driver with regard to remote wakeup and self-powered
- capabilities. From the PX4 team via Lorenz Meier,
- * Networking / Network Drivers
- - ARP IP harvesting: Correct backward condition in netmask task.
- From Max Holtzberg.
- - Network connection monitor: Fixes a race condition where a loss of
- connection may not be detected when the connection is lost before it
- has been accepted (from Max Holtzberg).
- - TCP/IP Backlog: Fix a critical bug in the TCP/IP backlog
- initialization: Only the first backlog buffer was getting added to
- the free list. From Max Holtzberg.
- - ENC28J60: Fixes and improvements back-ported from the ENCX24J600
- to the ENC28J60 by Max Holtzberg.
- * STM32 Drivers:
- - STM32 I2C fixes for the STM32 F3 family from John Wharington.
- - STM32 I2C Correct an error that crept into the STM32 F1 I2C
- driver with some recent changes. From Librae
- - STM32 F4: Added some missing CONFIG_SERIAL_TERMIOS support; Fixed
- some STM32 F4 Timer 8 pin configurations. From CCTSAO.
- - STM32 SDIO: If CONFIG_SDIO_BLOCKSETUP defined, OS would crash. Now
- Generate an error if CONFIG_SDIO_BLOCKSETUP is defined; that
- option is not yet supported by the STM32 SDIO driver. From CCTSAO
- - STM32 I2C Timers: Some CCER bit settings changed. Submitted by
- CCCTSAO.
- - STM32 CAN: Fix access to CAN filter registers. From the PX4 team
- via Lorenz Meier.
- - STM32 Kconfig: Fix STM32 UART7/8 Kconfig names and UART DMA. From
- the PX4 team via Lorenz Meier.
- * LPC17xx Drivers
- - Fix #endif with missing #if in USB host header file. Reported
- by Andrew Bradford,
- * SAM3/4 Boards:
- - Corrected DMA-related problems: Bad register definitions, parameters
- reversed in a function call.
- - Correct a race condition in the HSMCI driver when an interrupt
- occurs before the wait for the interrupt begins.
- - Peripheral clock setup: Correct a typo in a register name.
- * Atmel AT91 SAMA5D3
- - Order of some operations changed in boot-up logic to defer
- enabling of caching of memory regions until SDRAM is initialized.
- - Correct handling of spurious interrupts.
- * Freescale KL25Z Drivers
- - KL25Z SPI: Correct typo in name of a function. From Alan Carvalho
- de Assis.
- * Applications:
- - apps/examples/composite: Fix a typo that can cause a configuration
- error. From CCTSAO.
- - apps/examples/pwm: Clean-up some configuration confusion.
- - apps/netutils/dhcpd/dhcpd.c: Fixed calculation of the next lease
- address. From Paolo Messina.
- - apps/examples/usbmsc: Don't try to control USB trace if we are
- an NSH built-in task. In that case our attempts are inadequate
- and only interfere with with other logic that is attempting to
- to do the same thing (in NSH or in the USB monitor).
- - apps/examples/usbmsc: IMPORTANT bug fix: Change how the msconn
- works. Because of recent changes the msconn command was hanging.
- This was because the USB MSC start-up logic creates a pthread;
- Now waitpid() will wait until all members of the task group
- exit. So NSH was hanging in waitpid when msconn started even
- though msconn returned. The USB MSC logic really should not use
- a pthread, but we are stuck with that for now. The work-around
- is the msconn now daemonizes itself so that it so that the pthread
- is created in a different task group.
- - apps/nshlib: Fix NSH listing output for the case of a single file.
- From the PX4 team; provided by Lorenz Meier.
- NuttX-6.31
- ----------
- The 98th release of NuttX, Version 6.31, was made on October 28, 2013,
- and is available for download from the SourceForge website. Note
- that release consists of two tarballs: nuttx-6.31.tar.gz and
- apps-6.31.tar.gz. Both may be needed (see the top-level nuttx/README.txt
- file for build information).
- Additional new features and extended functionality:
- * General:
- - Standardized stack checking logic so the interfaces can be used
- by common stack monitoring logic.
- * Audio Subsystem and Audio Drivers:
- - Ken Pettit has finally released his long awaited audio subsystem.
- This is a generic audio subsystem that is appropriate for the
- deeply embedded MCU. Current testing has, however, been focused
- on the VS1053 CODEC chip.
- - Ken Pettit's VS1053 audio CODEC driver is now functional.
- * Networking / Network Drivers
- - Add the prefix ETH0 to all PHY configuration selections. This
- will allow us to support to Ethernet MAC drivers with two different
- PHYs (identified with ETH0 and ETH1). Enabled with CONFIG_NETDEV_MULTINIC.
- - Add MII/RMII PHY definitions for the Micrel KSZ8051 PHY.
- - Add GMII/GRMII PHY definitions for the Micrel KSZ9021/31 PHY.
- - New network-optimized, higher-performance sendfile() implementation
- from Max Holtzberg.
- - Added a simple routing table. This table is currenly only used (1)
- when we need to look-up an Ethernet device based on an IP address,
- and (2) in the ARP logic when we need to request the MAC address of
- the router, vs the MAC address of the peer.
- - Make net_close() nonblocking and free unestablished connections if
- no free connections available. From Max Holtzberg.
- - Changed the meaning of the uip_*input functions. They now return
- success when a packet is dropped; This is needed for the ENCX24J600
- driver that must make a decision to return the packet or not: It
- should not retry dropped packets. From Max Holtzberg.
- - David Sidrane has completed integration of the CC3000 networking.
- This is much more than a network driver: It is a complete
- replacement for the NuttX networking with off-chip networking support
- in the CC3000.
- - Numerous enhancements to the ENCX24J600 driver from Max Holtberg.
- * Other Common Drivers:
- - The SST25 serial FLASH MTD driver now includes support for the
- SST25VF016B. From David Sidrane.
- - Add a preflight method to the SDIO interface to support the STM32
- DMA usage model. From Mike Smith.
- - Enhanced the MMC/SD SDIO driver to perform DMA preflight operations
- and fail DMA read/write requests that fail preflighting. From Mike
- Smith.
- - Add an ioctl command that can be used to trigger ADC/DAC conversion
- under application control.
- * File Systems:
- - Enhanced the FAT32 filesystem code to understand DMA preflight
- failures, and to use the file sector buffer as a bounce buffer when
- a user-supplied buffer is not suitable for DMA. From Mike Smith.
- * Atmel AT91 SAMA5D3x
- - Add support so that subsets of the total DRAM (and other external
- memory) can be added to the heap, leaving other memory reserved for
- other purposes (like the LCDC framebuffers).
- * Atmel AT91 SAMA5D3x Drivers:
- - Use more descriptive task names when starting the EHCI and OHCI
- monitor tasks.
- - Added a 10/100Base-T Ethernet (EMAC) driver.
- - Added a 1000Base-T Ethernet (GMAC) driver.
- - Added a Real Time Clock (RTC) driver and integrated with the NuttX
- system time logic.
- - Added support for /dev/random using the SAMA5D3x True Random Number
- Generator (TRNG).
- - Added a Watchdog Timer (WDT) driver.
- - Added a Timer/Counter (TC) library with interface that make be used
- by other drivers that need timer support.
- - Added an ADC driver that can collect multiple samples using the
- sequencer, can be trigger by a timer/counter, and supports DMA data
- transfers.
- - Added a touchscreen driver based on the special features of the
- SAMA5D3 ADC peripheral.
- - Added an LCD controller (LCDC) frame buffer driver.
- - Added a CAN driver. However, testing has been delayed because of
- cabling issues.
- - Basic header file support is available for the Image Sensor
- Interface (ISI) camera interface. Work on the camera driver is
- underway and is expected in the next release.
- * Atmel AT91 SAMA5D3x-EK Development Boards
- - Add OS test support for the FPU test.
- - Enable the task name feature board configuration sto provide
- prettier ps command output.
- - Added NX and NxWM configurations to verify the LCD and touchscreen.
- There are still some outstanding issues with the NxWM configuration
- as of this release.
- - The TRNG and /dev/random are now enabled by default in the demo
- configuration.
- * Atmel AT91 SAM3/4 Boards:
- - Add configuration to select revision 3 of the Arduino Due which has
- some small but important differences. Suggested by gdi@embedders.org.
- * STMicro STM32:
- - Add support for the STM32F207ZE chip. From Martin Lederhilger.
- * STMicro STM32 Boards:
- - Add configuration for the Spark Core. The initial check-in is
- basically the Maple Mini board and subsequent development by David
- Sidrane is his special Spark emulation hardware. The configuration
- should be very mature when actual Spark hardware is available.
- - Support for the Olimex STM32 P207 board added by Martin Lederhilger.
- - Configuration for the Mikroe STM32F4 board configuration updated for
- audio support by Ken Pettit.
- * NXP LPC17xx Boards:
- - zkit-arm-1769: LED1 is now user controllable after booting. From
- Rashid Fatah.
- * Kinetis KL Drivers:
- - PIT and TPM register definitions header files for the from Alan
- Carvalho de Assis.
- - Added low-level getc() function for operation with no file system.
- The KL25Z can now support NSH in a very minimal system that does
- not even have a file system.
- * Kinetis KL Boards
- - A new configuration called minnsh was added is an experiement to
- see how small we can get the NuttX footprint and still support NSH.
- From Alan Carvalho de Assis..
- * TI Calypso Phones:
- - Basic board support for the Motorola C139 (Compal E86) phone. From
- Craig Comstock.
- * Applications:
- - Moved several useful examples from apps/examples to apps/system.
- This includes USB MSC, USB CDC/ACM, and USB Composite.
- - New addroute and delroute commands added to NSH in order to manage
- the network routing table.
- - Numerous enhancements and updates to the CC3000 example from David
- Sidrane.
- - Add a new stack monitor daemon that can be used to constantly
- monitor stack usage by all threads.
- - Numerous changes to get NSH working with no file system. Basically
- this suppresses I/O redirection and replaces file I/O with calls to
- low-level console read/write functions. Suggested by Alan Carvalho
- de Assis.
- - apps/system/nxplayer: A new, command-line media player called
- 'nxplayer' from Ken Pettit.
- - apps/examples/random: Add a simple test that dumps values from
- /dev/random.
- - apps/examples/adc: Add support so that a ADC driven by software
- triggering can be tested.
- * Build System:
- - The MKDEP tools now support a new argument that identifies the
- object file path.
- Efforts In Progress. The following are features that are partially
- implemented but present in this release. They are not likely to be
- completed soon.
- * kconfig-fronted Configuration:
- - Conversion of old configurations to use the kconfig-frontends
- tool is an ongoing effort that will continue for some time.
- At this time, only 48% of the configurations have been converted
- to use the kconfig-frontends tools.
- Bugfixes (see the ChangeLog for details). Some of these are very important:
- * Initialzation and Scheduling:
- - IDLE thread initialization logic should not call group_setupidlefiles()
- if there are no file descriptors (and, hence, no file system).
- - Fix some cornercase error handling logic: If sched_releasetcb() is
- called as part of a failed pthread startup before the flags field in
- the TCB has been initialized, then a crash occurs. Pointed out by
- David Sidrane.
- * Networking / Network Drivers:
- - Look up of a device using subnet will fail if the packet is being
- sent out of our subnet (via a router). The fallback here is just to
- use the only device ("eth0") if the subnet lookup fails (this logic
- was extended to handle multiple Ethernet devices by adding a simple
- routing table).
- - Fix some backward conditional logic in send() that enabled the
- check if the ARP address is in the ARP table. From Max Holtzberg.
- - Notify the socket layer from the network monitor if a connection is
- lost before the monitoring callback has been registered. From Max
- Holtzberg.
- - send(): Reset the send timeout when the data is ACKed, not when the
- data is sent. Remove conditions on checking for timeout. From Max
- Holtzberg.
- - Correct how the TCP/IP initial minimum MSS is calculated. Max
- Holtzberg.
- - TCP state machine: Move tcp connection into SYN_RCVD state after
- aception instead of bypassing and moving directly into ESTABLISHED.
- From Max Holtzberg.
- - Numerous fixes to the ENCX24J600 driver from Max Holtberg.
- * USB Drivers:
- - Change naming of SELFPOWERED and REMOTEWAKEUP to avoid name
- collisions. Prepend the name of the driver (for example
- CDCACM_SELFPOWERED).
- - CDC/ACM class driver: Change the interval for the interrupt
- endpoint from 0xff (invalid) to 10. This is not a critical
- change but will avoid a complaint from the Linux driver when
- it overrides the 0xff value.
- * ARM Cortex-A5:
- - Fix an error in data cache clean and invalidate functions: Fix of
- addresses to cache line boundaries.
- * Atmel AT91 SAMA5D3x Drivers:
- - Correct some inconsistencies in the way that USB configuration
- settings are used. This caused compilation errors in SAMA5 OHCI
- when USB debug was ON but USB host tracing was off.
- - When 480MHz UPLL is used to drive OHCI, it should have a divider
- of 10. However, that does not work. A divider of 5 does. Why?.
- - OHCI HCD: Fix a place where DMA-related data needed to be flushed
- to data cache; Fix another where a virtual address was being used
- in a register where a physical address was required.
- - HSMCI Driver: TX DMA disabled. It is just not reliable. No idea
- why. RX DMA is still used.
- - STM32F103C pinmapping corrections from David Sidrane.
- * Atmel SAMA5D3x-EK Board
- - Increase the number of pre-allocated watchdog timers. The default
- number of 4 was easily being exhausted in the more complex
- configurations.
- * STMicro STM32:
- - STM32 F4 DMA definitions: Typo fixes for UART7 and UART8 DMA
- configs. From Mike Smith.
- - DMA priority configuration corrections from Mike Smith.
- - Changes to the stm32_dmacapable API. In order to correctly
- verify that a buffer can be transferred, the transfer count and
- the CCR value are required. Implemented stm32_dmacapable for
- stm32f1xx devices. Enhanced stm32_dmacapable for stm32f2xx and
- stm32f4xx devices to check for additional conditions that will cause
- DMA to fail or lose data.
- - STM32 F1 DMA fix from David Sidrane: The DMA_CNDTRx register
- cannot be modified if the DMA channel is disabled.
- * STMicro STM32 Drivers:
- - Fix compilation errors from bad bit definitions in ADC and PWM
- register. From Martin Lederhilger.
- - DMA-related fixes to the SPI driver from Ken Pettit.
- * NXP LPC17xx Drivers:
- - Remove undefined spi_select() prototype. This was causing compile
- time warnings.
- * NXP LPC17xx Boards:
- - zkit-arm-1768: MMC/SD is on SPI, not SSP0. From Rashid Fatah.
- * C Library
- - scanf() fixes from kfrolov: 1) sscanf() function hangs in the
- following example: sscanf("2", "%u,%u,%u,%u", ...), 2) sscanf()
- returns incorrect number of parsed numbers if some arguments
- can't be parsed: sscanf("=2", "%u,%u,%u,%u",...)==1 instead of
- 0, and 3) using of char* instead of const char* in vsscanf
- function leads to warnings from GCC.
- * Build System
- - Dependency generation generation was broken for directories that
- keep objects in a sub-directory. The MKDEP tools now support a new
- argument that identifies the object file path.
- - tools/define.sh: 'cut' no longer works as it once did. Script
- adapted to observed behavior.
- * Applications:
- - Remove a warning from the NSH library when DHCP is not enabled.
- - Default NSH IP address should be 0x0a000001 (10.0.0.1), not
- 0xa0000001 (160.0.0.1). Ditto for the gateway.
- - Add some missing options to the OS test Kconfig file
- - Fix some bad conditional compilation in the USB monitor.
- - Fix default I2C frequency used by the I2C tool: 400KHz instead
- of 4MHz. Suggested by Max Kriegleder.
- - Increase stack size for the system/info command. Ken Petit
- reports that this simple command can exceed its 768 stack size
- under certain conditions. The size is marginal and has been
- increased to 1024 by default but is also now configurable.
- - apps/Makefile: Needs to include external/Make.defs if we want
- allow external applications to participate in the NuttX
- configuration. Suggested by gdi@embedders.org.
- - apps/netutils/telnetd: Missing argument to debug statement
- can cause crashes in certain error conditions. From David
- Sidrane.
- - apps/examples/can: Correct an error in a debug statement. From
- Martin Lederhilger.
- NuttX-6.32
- ----------
- The 99th release of NuttX, Version 6.32, was made on December 7, 2013,
- and is available for download from the SourceForge website. Note
- that release consists of two tarballs: nuttx-6.32.tar.gz and
- apps-6.32.tar.gz. Both may be needed (see the top-level nuttx/README.txt
- file for build information).
- Additional new features and extended functionality:
- * General:
- - Extension and standardization of stack debug logic. Now includes
- coloration of the IDLE and interrupt stacks as well as the heap.
- Suggested by David Sidrane.
- * Audio Subsystem and Audio Drivers:
- - I2S interface definition. Integrates with audio sub-system.
- - VS1053 worker thread stack size is now configurable and assigned a
- name via pthread_setname_np(). From Ken Pettit.
- * Networking / Network Drivers
- - Updates and adaptations to support for TI CC3000 wireless module
- from David Sidrane. These updates include multi-threading support
- and interface and header file changes to integrate more seamlessly
- with NuttX applications.
- * File Systems:
- - procfs: Add support for a tiny procfs file system. The initial
- offering is little more that a proof of concept but may be developed
- further in subsequent releases.
- - NXFFS: An initial attempt was made to integrate NXFFS with the NAND
- MTD driver. Changes were made to handle bad blocks. However, I
- later realized that NXFFS cannot handle NAND because the way that
- is re-writes blocks is incompatible with the NAND ECC handling.
- These changes were backed-out so as not to introduce turmoil, but
- can be re-enabled if needed via configuration option.
- - NXFFS: Make the start up scan of the media a configuration option.
- It just takes to long and is not really necessary! Those rare cases
- where the scan was helpful can be fixed using MDIOC_BULKERASE IOCTL
- command.
- * General Drivers:
- - I2S: A simple character driver was added to support I2S accesses.
- This driver in its current state is intended only to support I2C
- testing and would not be appropriate to used for any real driver
- application.
- * MTD Drivers
- - Add a container for an MTD device that can be used to provide a
- simple, lightweight interface to configuration data storage that
- resides on some storage media that is wrapped as an MTD device.
- From Ken Pettit.
- - New interface definition for lower half NAND drivers.
- - MTD Nand: Add MTD NAND driver that will support ONFI devices,
- non-ONFI devices (via table lookup), bad block checking, software
- ECC (Hamming), and will interact with the lower-half, hardware-
- specific, NAND driver. Based on BSD-compatible Atmel sample code.
- - MTD geometry structure is now packed so that it can support larger
- erase block sizes needed by NAND without increasing the size of
- the geometry structure.
- - SST25: Add another SST25 SerialFlash driver, sst25xx.c. This one
- differs from sst25.c in that it supports larger SST25 parts: In
- the larger parts support page write instead of byte/word writes
- like the smaller parts. From Ken Pettit.
- * USB Drivers
- - STM32 F1 USB Device: Add support for decoded USB trace strings.
- From David Sidrane.
- * ARM
- - Add more ARM9 cache management functions to flush and invalidate
- D-Cache for DMA support.
- * Atmel AT91 SAMA5D3x Drivers:
- - Many new drivers including CAN, PWM, SSC/I2S
- - PCK: Add support for programmable clock outputs.
- - NAND: Driver with hardware ECC and DMA support
- * Atmel AT91 SAMA5D3x Boards:
- - SAMA5D3x-EK: Add support for the apps/examples/i2schar test.
- - SAMA5D3x-EK: Provides board-specific memory controller initialize
- for NAND flash.
- - SAMA5D3x-EK: Add support for "auto-mounting" NAND MTD block driver
- or NXFFS file system.
- * Atmel AT91 SAM3/4 Boards:
- - Basic support for the Atmel SAM4E family. From Mitko.
- * STMicro STM32:
- - Added support for the STM32F429. From Ken Pettit.
- - Added support for GPIOK and GPIOJ. From Ken Pettit.
- * STMicro STM32 Drivers
- - STM32 F4 OTG FS/HS Device: OTG FS device and host drivers extended
- so that they can support either the OTG FS peripheral or the OTG HS
- peripheral (in FS mode). This was done as a quick way to get USB
- support on the STM32F429 which has only OTG HS. From Ken Pettit.
- - Added header files and driver framework for the STM32F429 LTDC
- framebuffer driver. From Ken Pettit.
- * STMicro STM32 Boards:
- - Support for the Spark board was completely by Davide Sidrane. The
- Spark configuration includes integrated CC3000 wireless support, FAT
- file system on the SerialFlash and a composite device that can be
- used both to export the FAT file system and to provide a serial
- interface.
- - The Mikroe-stm32f4 now uses /dev/config for configuration data
- storage. From Ken Pettit.
- - Added support for the STM32F429I-Discovery board from Ken Pettit.
- - Added board support for the ViewTool STM32F103/F107 board with the
- STM32F107VCT6 installed.
- * NXP LPC31xx Drivers:
- - USB ECHI HCD: Add a driver for the low-/full-/high-speed variant
- of the EHCI host controller.
- * NXP LPC31xx Boards:
- - Board-specific USB host support for the Emedded Artists EA3131 board.
- (Missing PCA9532 controls).
- - Add support for the Olimex LPC-H3131 board. Including USB host
- support (which does not depend on the PCA8532 interface).
- * Kinetis KL Drivers:
- - PWM driver for the Freescale Kinetis KL family from Alan Carvalho
- de Assis.
- * Kinetis KL Boards
- - Freedom-KL25Z: Add PWM support from Alan Carvalho de Assis.
- * TI Stellaris LM3S
- - Don't initialize .data in start-up logic if not running from FLASH.
- * Applications:
- - apps/platform: A new home for platform-specific application code.
- - Define a common interface that can be used to manage platform-
- specific configuration data. From Ken Pettit.
- - apps/examples/configdata: A unit test for the MTD configuration
- data driver from Ken Pettit.
- - Aapps/platform/mikroe-stm32f4: dd platform-specific storage of
- configuration data for the Mikroe-stm32f4. From Ken Pettit.
- - apps/examples/cc3000: Fine tuning of memory usage from David Sidrane.
- - apps/system/nxplayer: Play thread stack size is now configurable.
- All NxPlayer threads now have names assigned via pthread_setname_np().
- From Ken Pettit.
- - apps/examples/i2schar: The I2S test based on the I2S character
- driver.
- - apps/examples/hidkbd/hidkbd_main.c: Now calls a function named
- arch_usbhost_initialize() that must be provided by the platform-
- specific code.
- - NSH:
- - hexdump: Add skip= and count= options to the hexdump command. From Ken Pettit.
- - Allow USB trace without a USB console. From David Sidrane.
- - Mount command updates from Ken Pettit.
- - Add an option to the mkfatfs command to specify FAT12, FAT16, or FAT32.
- * Tools
- - tools/mkctags.sh: A script for creating ctags from Ken Pettit.
- Efforts In Progress. The following are features that are partially
- implemented but present in this release. They are not likely to be
- completed soon.
- * kconfig-fronted Configuration:
- - Conversion of old configurations to use the kconfig-frontends
- tool is an ongoing effort that will continue for some time.
- At this time, only 50% of the configurations have been converted
- to use the kconfig-frontends tools.
- Bugfixes (see the ChangeLog for details). Some of these are very important:
- * File Systems
- - FAT: In one error return case, the error return value was not being
- set, making the failure look like success. From David Sidrane.
- - mount: SMART FS must be included in the conditional compilation for
- the set of file systems that require block drivers. From Daniel
- Palmer.
- - SmartFS: Fixed a minor bug with SMART partition number reporting
- that would only be seen if both partition support and multi-root
- directory support are enabled at the same time. From Ken Pettit.
- - Deadlock: The inode semaphore must be re-entrant. Here is the re-
- entrant path that I found: (1) USB host connects to FLASH drive and
- creates /dev/sda, (2) /dev/sda is mounted, (3) FLASH drive is
- removed but /dev/sda is not destroyed because there is still a
- reference on the device because of the mount, (4) umount() is
- called, taking the inode semaphore, now the driver tries to destroy
- the block driver by calling unregister_blockdriver(). But (5)
- unregister_blockdriver() also takes the inode semaphore causing a
- deadlock if the inode semaphore is not re-entrant.
- - FAT: Fix a typo in the FAT16 formatting logic. Was this ever able to
- format a FAT16 volume?
- * MTD Drivers
- - MTD Partitions: Fix erase block vs page block confusion. From Ken
- Pettit
- - SST25 Serial Flash: Improved write performance by fixing a bug that
- prevented operation in the faster write mode. From David Sidrane.
- * USB Drivers:
- - USB MSC Device: pthread_join() does not work if called from a
- different task group than the pthread. This is correct behavior,
- but still a problem. The correct solution would be configure the
- USB MSC thread to a task, however, this workaround from David
- Sidrane plugs the hole for now.
- - USB CDC/ACM, USB MSC, and Composite Device Classes: Un-initialization
- logic caused re-use of a stale pointer. Changed to a two pass
- un-initialization for the case of the composite driver: Memory
- resources are not freed until the second un-initialization pass.
- From David Sidrane.
- * STMicro STM32 Drivers:
- - STM32 F1 USB Device: Fix some errors that cause crashes when the USB
- was disconnected. From David Sidrane.
- - STM32 F1 USB Device: Correct EP0 state handling logic when buffers
- larger than the EP0 packet size are sent. From David Sidrane.
- - STM32 F1 USB Device: The long outstanding bug involving the handling
- of OUT SETUP commands has been fixed in the STM32 F1 USB device
- driver by David Sidrane.
- - Kconfig: Add missing setup of CAN TSEG1 and TSEG2 values. From
- Martin Lederhilger.
- * Tools
- - tools/mkconfig.c: SMART FS must be included in the conditional
- compilation for the set of writable file systems. Noted by Daniel
- Palmer.
- * Applications:
- - apps/platform/Makefile: Was not dealing with the bin sub-directory
- correctly.
- - apps/system/composite/composite_main.c: The wrong handle was getting
- nullified. From David Sidrane.
- NuttX-6.33
- ----------
- The 100th release of NuttX, Version 6.33, was made on January 30, 2014,
- and is available for download from the SourceForge website. Note
- that release consists of two tarballs: nuttx-6.33.tar.gz and
- apps-6.33.tar.gz. Both may be needed (see the top-level nuttx/README.txt
- file for build information).
- Additional new features and extended functionality:
- * Core OS Interfaces
- - nanosleep() added. sleep() and usleep() are no longer core OS
- interfaces. These have been moved into the library and re-implemented
- as simple wrappers around nanosleep().
- * File Systems
- - procfs restructured by Ken Pettit. Added files for MTD status.
- - procfs extended to show uptime and task group status.
- - procfs now shows stack information.
- * Networking
- - Add support for the SO_LINGER socket option. Extended from logic
- provided by Jason Jiang. Enabled with CONFIG_NET_SOLINGER.
- - TCP write buffering support added. From Jason Jiang.
- - Changes from Max Holtzberg to improve how network status is
- reported. New controls to manage carrier detect.
- * Graphics
- - Massive reshuffling of files with little or no logic changes. This
- reshuffling was necessary to build graphics applications with the
- kernel builds where the graphics application lie in user space and
- the core graphic server likes in kernel space. Moved much logic out
- of nuttx/graphics to a new user library, libnx.
- * Cortex-A5/A8/A9
- - Existing Cortex-A5 support updated to include Cortex-A8/9.
- - Add the syscall.h header file needed for the Cortex-A architecture.
- - Start-up logic now supports execution from FLASH with .data and
- .bss in SDRAM. This was not possible prior to this because .bss
- and .data were initialized before SDRAM was configured.
- * Allwinner A10:
- - Basic support for the Allwinner A10 (Cortex-A8) is in place.
- * Allwinner A10 boards
- - Support for the pcDuino v1 board has been added. This support
- is not yet very mature and still lacks many drivers. It is a
- good starting point, however, if anyone wants to develop A10
- support.
- * Atmel SAMA5D3X
- - Start-up logic now supports execution from FLASH with .data and
- .bss in SDRAM. This was not possible prior to this because .bss
- and .data were initialized before SDRAM was configured.
- * Atmel SAMA5D3X Boards
- - Partial logic in place to support the OV2640 camera. Still needs
- quite a bit of additional logic to be useful.
- * ARMv7-M
- - Add support for high priority, nested interrupts. This change
- effects not only core ARMv-7M logic, but all ARMv7-M MCU logic:
- LM3S, LM4F, LPC17xx, LPC43xx, SAM3, SAM4, and STM32. See
- http://www.nuttx.org/doku.php?id=wiki:nxinternal:highperfints
- * STMicro STM32
- - Add clocking support for STM32F107 USB OTG FS (which does not yet
- work)
- - Single-wire UART support for the F1 series from Thomas Grubler.
- * STMicro STM32 Boards
- - The Viewtool board can now be configured to support either the
- STM32F103VCT6 or the STM32F107VCT6.
- - The Viewtool STM32F107VCT6 now supports networking with the
- DP83848C module installed.
- - Add support for Viewtool SSD1289-based LCD on the Viewtool
- STM32F103VCT6 board (untested)
- - Add support for the XPT2046 touchscreen controller on the Viewtool
- LCD module connected to the Viewtool STM32F103 board.
- - Added kernel mode build support for the STM3240G-EVAL board. Added
- a new kernel mode NxWM build configuration
- - C++ static constructor logic from the nuttx/configs/stm3240g-eval/
- directory to the apps/platform/stm3240g-eval/up_cxxinitialize.c
- where is belongs so that it is available in user-space in the kernel
- mode build.
- - Add native Windows build support for the Olimex STM32 P107. From
- Max Holtzberg
- - Support for the STM32VL-Discovery board. Contributed by Alan
- Carvalho de Assis
- - Added a configuration for testing simple configurations on the
- PX4FMU v2.
- * ZiLOG ZNEO Boards
- - Add an NSH configuration for the Z16F2800100ZCOG ZNEO board.
- - Added support for the Toyaga 16Z ZNEO board. The 16Z board is
- based on the ZiLOG ZNEOZ16F2811AL20EG part. See
- https://github.com/toyaga/16z for further information
- - Developed a patch to work around a compiler error that is revealed
- when building the NSH configuration.
- * Architecture-Independent Drivers
- - OV2640 Camera Driver.
- - Support for the Sharp Memory LCD from Librae.
- * Library
- - Pattern matching logic extended to handle set of characters and
- ranges of character values. From Ken Pettit.
- - sleep() and usleep() moved intot the C library. These are not
- longer core OS interfaces; they are simple wrappers for the
- nanosleep().
- - Add an implementation of gets_s().
- - Extend fopen() to include support for C11 exclusive open ("x")
- open mode.
- - Add an implementation of stpcpy()
- - strtol(), strtoll, strtoul(), strtoull(), and strtod() from
- libc/string to libc/stdlib where they belong.
- * Header Files
- - Add rsize_t to include/sys/types.h
- - Add the C11 thread.h header file
- * Configuration/Build System
- - Top level Makefile now supports qconfig and/or gconfig targets that
- may be used for configuration. These may be used if you build
- kconfig-frontends with support for kconfig-qconf and/or
- kconfig-gconf.
- - Add CONFIG_DEBUG_NOOPT. Now you can independently enable/disable
- debug symbols and optimization
- - File system related header files moved to include/nuttx/fs
- - Video related header files moved to include/nuttx/video
- - Changes for native Windows build: fix creation of a .version file
- if one does not exist. Make sure that the APPDIR environment
- variable is set before configuring. From Max Holtzberg.
- - Board configuration sub-directory can now be specified. The default
- need not be used. This is only useful when CONFIG_ARCH_BOARD_CUSTOM
- is selected and there is no meaningful default sub-directory.
- - Many functions renamed to better conform with the naming standard:
- up_buttoninit() renamed to board_button_initialize(), up_buttons()
- renamed to board_buttons(), up_irqbutton() renamed to
- board_button_irq(), up_ledinit() renamed to board_led_initialize(),
- up_ledon() renamed to board_led_on(), and up_ledoff() renamed to
- board_led_off(). All prototypes removed from board.h header files.
- Now ONLY prototypes in include/nuttx/arch.h.
- * Applications
- - NSH: Refactor. Separate NSH command handling and command execution
- from NSH line parsing.
- - NSH: Will now support multiple commands on a command line, each
- separated with a semi-colon.
- - NSH: Add support of commands enclosed in back quotes as command
- arguments.
- - NSH: Can now handle arguments that are concatenations of constant
- strings, command return data, application return data, and
- environment variables.
- - NSH: Add true and false commands.
- - NSH: Add support for while-do-done and until-do-done loops. These
- only work when executing a script file because they depend on the
- ability to seek in the file to implement the looping behaviors.
- Can be conditionally compiled out to reduce footprint.
- - NSH: Loosen up if-then-else-fi syntax to allow a command to be on
- the same line as the then or else tokens like:
- "if true; then echo true; else echo false; fi". More like bash.
- - NSH: Add a break command that can be executed with a loop to
- terminate the loop immediately.
- - system/inifile: A simple .INI file parser.
- - system/vi: Add support for a tiny, VI work-alike editor. This is
- a minimal full screen editor that works with a terminal emulator
- that using VT100 commands.
- Efforts In Progress. The following are features that are partially
- implemented but present in this release. They are not likely to be
- completed soon.
- * kconfig-fronted Configuration:
- - Conversion of old configurations to use the kconfig-frontends
- tool is an ongoing effort that will continue for some time.
- At this time, only 53% of the configurations have been converted
- to use the kconfig-frontends tools.
- Bugfixes (see the ChangeLog for details). Some of these are very important:
- * Core OS
- - Added missing sem_timedwait() system call.
- * Networking
- - Prevent tcp_connect callback from being double freed. From Max
- Holtzberg
- - uiplib: Support new definitions and state passing for network
- device status. From Maz Holtzberg.
- * File Systems
- - FAT: (1) A correction to FAT cluster allocation, and (2) Fix to some
- root directory logic that was conditionally done only for FAT 32.
- Apparently this needs to done for all FAT types. Both from Andrew
- "Tridge" Tridgell via Lorenz Meier.
- * Binary Formats
- - Fix a small memory leak when attempting to load a program from a file.
- * Cortex-A8/9
- - Fix some errors in the cache invalidation logic (only seem to matter
- for Cortex-A8).
- - Add more nop's after enabling the MMU. The cortex-a8 seems to need
- these
- * Graphics
- - Fix a typo that caused a compilation error when
- CONFIG_NXCONSOLE_BPP < 8. From Librae
- * ARMv7-M
- - Correct alignment of RAM vector table.
- - Interrupt handling: Do not disable and enable the IRQ on each
- entry, (2) this interferes with controlling the IRQ interrupt
- setting from interrupt handlers, and (3) up_disable_irq() does
- not work anyway so that this has never done anything.
- - Fix all implementations of up_disable_irq() for all Cortex-M3 and
- M4 architectures: To enable an interrupt on the Cortex-M3/4 CPU,
- you need to set a bit in the ISER register. To disable the
- interrupt, you need to set a bit in the ICER register. Existing
- logic was trying to disable interrupts by clearing the bit in the
- ISER register. That will not work; writing a '0' to the ISER
- register has no effect. That means that up_disable_irq() was
- doing nothing! It turns out that that is not really important
- because up_disable_irq() is not really used for that purpose. But
- some spurions STM32 ADC interrupts have been reported to me and this
- turned out to be the cause in that case. Thanks to Manuel Stühn for
- the tip.
- * STMicro STM32
- - Fix configuration and pin definitions that would prevent building
- USB for the connectivity and performance lines.
- - STM32L15xx: Fix a typo in USB pin definitions
- - Fix pin definition names for SPI2 MOSI and MISO. Noted by Brian Webb
- - Various fixes for STM32F103ZE SPI3 pin mapping definitions. From
- Steve Redler IV
- * STMicro STM32 Boards
- - Olimex STM32-P107: Failed to build if SPI3 for UEXT is not remapped.
- From Max Holtzberg
- * x86 Boards
- - Add a configuration option to select the -m32 compiler option when
- building for a 32-bit target on a native 64-bit compiler. So far,
- only used for the qemu/i486 configuration.
- - Patch from Matt Campbell to fix 'Error: .size expression for idle_stack
- does not evaluate to a constant".
- * Library
- - strftime(): Needs null termination on the generated string. From
- Max Holtzberg.
- - Typo in ctype.h macro name: iscntrl(), not iscontrol().
- - If there are no arguments (argc == 1), then getopt() will leave the
- optind variable in an undefined state (2014-1-20).
- - ARMv7-M memcpy(): Assembler changes with the gcc-47 distribution
- from ARM mean that we need to be explicit about branch sizes; one
- or more of the wide branch opcodes results in bad table branching.
- From Mike Smith.
- * Configuration/Build System
- - Fixes for some tools/ for Windows build issues from Max Holtzberg.
- - Config.mk: 'cypath' must be called if we are using a Windows native
- toolchain with the Cygwin 'make' to convert paths to proper
- Windows paths. From Richard Cochran.
- - ARM Makefile: Dependency directory list is now computed from the
- VPATH. From Richard Cochran.
- - builtin/Makefile: Fixes for native Windows build from Max Holtzberg.
- - Refactor some configuration dependencies: NSH networking features
- should depend on netutil selections; netutil selections, in turn,
- should depend on networking selections.
- * Applications
- - NSH: Modified the df -h logic to eliminate truncating numbers in
- conversion (like 7900 -> 7M). From Ken Pettit.
- NuttX-7.1
- ---------
- The 101st release of NuttX, Version 7.1, was made on March 15, 2014,
- and is available for download from the SourceForge website. Note
- that release consists of two tarballs: nuttx-7.1.tar.gz and
- apps-7.1.tar.gz. Both may be needed (see the top-level nuttx/README.txt
- file for build information).
- The previous NuttX version was 6.33. The NuttX minor version number is
- incremented on each release, but the major version number is incremented
- only when an incompatibility with previous versions is included in the
- release. In this case, the legacy, manual configuration is no longer
- supported by the NuttX build system beginning with NuttX 7.1. Only the
- newer configurations generated by the kconfig-frontends tools will generate
- viable NuttX configurations.
- All board configurations in the NuttX source tree have been converted to
- use the newer configuration, but if you have some older style configurations
- for you board, you will need to convert those configurations to use the
- kconfig-frontends tools before taking any new code from the repository. See
- http://www.nuttx.org/doku.php?id=wiki:howtos:convertconfig for some
- guidelines.
- Additional new features and extended functionality:
- * Core OS:
- - System time logic now includes logic to measure and calculate the
- CPU load percentage (from David Alessio). This CPU load logic
- extended to keep counts on each thread. The per-thread CPU is
- now reported in the procfs under <pid>/loadavg An asynchronous,
- "external" clock may be used to drive the CPU load calculations
- for more accurate measurements when needed.
- * File Systems:
- - As mentioned above, the per-thread CPU load information is now
- reported in the procfs under <pid>/loadavg.
- - Many file system interfaces have been extended to operate on the
- top-level NuttX pseudo filesystem. These include rmdir, mkdir,
- rename, and unlink. This capability can be disabled with
- CONFIG_DISABLE_PSEUDOFS_OPERATIONS in order to keep the footprint
- small.
- * Networking:
- - Numerous updates and improvements to the CC3000 driver from David
- Sidrane.
- * Common Drivers:
- - Defined a mouse interface that is very similar to a touchscreen
- interface, but allows reporting of all mouse buttons. Also, unlike
- touchscreen drivers, mouse drivers need to report positional data
- with no button is pressed so that the mouse position can drive a
- cursor.
- - Added support for a USB HID boot mouse device. Cursor support is
- not integrated and must be provided by the application based upon
- the reported mouse data.
- - Support added for the MIO283QT9A LCD from Toby Duckworth.
- * Atmel SAMA4E:
- - Added complete architecture support for the Atmel AT91 SAM4E
- Cortex-M4F parts.
- * Atmel SAM4E Board Support:
- - Add board support for the SAM4E-EK board.
- * Atmel SAM4E Drivers:
- - Added logic to manage the Cortex-M Cache Control block.
- - Developed and integrated an Ethernet MAC driver for the SAM4E.
- - Backported the SAMA5 SPI driver to the SAM3/4 architecture. The
- SAMA5 version supports both multiple SPI peripherals as needed by the
- SAM3A and SAM3X and also supports DMAC (but not PDC) needed by the
- SAM4E.
- * Atmel SAM D20:
- - Added basic architecture support for the Atmel AT91 SAM D20
- Cortex-M0+ parts.
- * Atmel SAM D20 Board Support:
- - Added basic support for SAM D2 Xplained Pro board. Currently, the
- NuttShell (NSH) works reliably over a serial port. An SPI driver
- has also been developed. Work with the SAM D20 has been temporarily
- stopped, however, in order to focus on the SAM4E-EK.
- * TI Tiva TMC4C123G:
- - Added architecture support for the TI Tiva TM4C123G parts. This was
- merged into the existing support for the LM3S and LM4F families.
- All directory, file, and function references changed from lm to tiva.
- * TI Tiva TMC4C123G Board Support:
- - Added basic board support for the TM4C123G-Launchpad. As of this
- release the TM4C123G-Launchpad board support is untested and likely
- incomplete.
- * STMicro STM32 Boards:
- - The Mikroe STM32F4 can now support the newer MIO283QT9A LCD. From
- Toby Duckworth.
- - Miscellaneous changes to better support FPU on STM32F429 Discovery
- from David Alessio.
- * NXP LPC2378 Drivers:
- - Incorporated I2C and SPI drivers for the LPC23xx from Lizhuoyi.
- * QEMU i486 Drivers:
- - New QEMU keyboard and VGA drivers from Lizhuoyi.
- * Documentation:
- - Added a coding standards document. See
- http://www.nuttx.org/doku.php?id=documentation:codingstandard
- * Configuration/Build System:
- - A configuration option, CONFIG_DEFAULT_SMALL, was added to select
- default values for configuration variables based upon whether you
- want a smaller footprint or more features. This is not very useful
- if you are modifying existing configurations because then the
- default values do not apply.
- - CONFIG_DEFAULT_SMALL has been defined on all tiny MCU configurations
- so that they do not grow so rapidly when new, optional features are
- added.
- - The legacy, manual configuration is no longer supported by the
- NuttX build system. Only the newer configurations generated by
- the kconfig-frontends tools will generate viable NuttX
- configurations. All board configurations in the NuttX source tree
- have been converted to use the newer configuration, but if you have
- some older style configurations for you board, you will need to
- convert those configurations to use the kconfig-frontends tools. See
- http://www.nuttx.org/doku.php?id=wiki:howtos:convertconfig for some
- guidelines.
- * Applications:
- - NSH can now use an EMACS-like command line editor. This CLE, is
- really more like the traditional readline than is the default, tiny
- the NuttX readline .
- - The touchscreen example can now be configured to work with either a
- touchscreen or a mouse device.
- - Several NSH commands can now be used to operate on objects in the
- top-level pseudo-filesystem: rmdir, mkdir, mv, and rm. This
- capability can be disabled with CONFIG_DISABLE_PSEUDOFS_OPERATIONS
- in order to keep the footprint small.
- - If both the CPU load feature and the procfs features are enabled,
- then the NSH 'ps' command will show the CPU load used by each
- thread.
- Bugfixes (see the ChangeLog for details). Some of these are very important:
- * Core OS:
- - task_terminate() always returned an error because the return value
- was not being set correctly (from Gosha).
- - nanosleep() Fix a missing call to re-enable interrupts (from Jason
- Jiang).
- * File Systems:
- - Fixed an error in the FAT logic that can cause file corruption. The
- error conditions are rare and only seen with very large files (from
- Andrew Tridgell). This replaces a previous, partial fix for the same
- problem.
- - Fixed memory leaks in the NXFFS open() and stat() implementations
- (from Lzyy).
- - The interfaces include opendir(), readdir(), et al, were modified so
- that errors will not be reported if you attempt to list a empty
- pseudo-directory.
- * Networking:
- - Fix one place where the connection reference count was not being
- decremented in the socket close() logic. This is really a cosmetic
- change BUT when CONFIG_DEBUG_NET is enabled, it will cause assertions.
- - Backed out a small part of the NuttX 6.33 write buffering changed.
- David G says that this causes problems in connecting to a server.
- - In DHCPD, there was a place where the logic was calling ntohl()
- inappropriately; the address was already in the correct order. How
- could DHCPD have worked with this bug?
- * TI Tiva/Stellaris Drivers:
- - Fixed cut'n'paste error that prevented UARTS2-7 from being used with
- the LM4F120 Launchpad.
- - Fixed several errors there were unmasked with UARTs > UART2 are
- enabled (grom Gosha).
- * Allwinner A10 Drivers:
- - Fixed cut'n'paste error that prevented UARTS2-7 from being used with
- the pcDuino.
- * NXP LPC17xx Drivers:
- - Fix an compilation error that crept into the LPC17xx USB host driver.
- * STMicro STM32 Drivers:
- - Fix cloned typo in the serial driver: FLOWCONTROL vs FLOWCONROL.
- - Disable SPI before changing DPI CR1 register (from David Sidrane).
- - stm32 TIM: Set the timer CCMR when selecting timer channel. From
- David Sidrane.
- - Fix typo in a Makefile: stm32_pwm.c not stm32_psm.c. Noted by Max
- Kriegleder.
- * Library:
- - More sscanf() bug fixes from David Sidrane.
- * Header files:
- - cstdbool: Ignore _Bool8 if CONFIG_C99_BOOL8=y
- * Configuration/Build System:
- - Several changes to restore the broken native Windows build
- * NuttShell (NSH):
- - Use strncpy vs strcpy in the Telnet console logic to avoid
- overrunning the username and password buffers (from Bertold Van den
- Bergh).
- - Add a newline after printing the file in the 'cat' command. This
- prevents the NSH prompt from be in the same line as the final line
- of the file in the case where there is no newline at the end of the
- file.
- NuttX-7.2
- ---------
- The 102nd release of NuttX, Version 7.2, was made on April 29, 2014,
- and is available for download from the SourceForge website. Note
- that release consists of two tarballs: nuttx-7.2.tar.gz and
- apps-7.2.tar.gz. Both may be needed (see the top-level nuttx/README.txt
- file for build information).
- Additional new features and extended functionality:
- * Core OS:
- - Add support for CLOCK_REALTIME. From Macs N.
- * Network Utilities:
- - Add a very primitive NTP client.
- - DNS resolver: Long needed major clean up for coding style and
- unification of naming conventions (resolv vs dns).
- * Common Drivers:
- - Add a new MTD driver that can be used to contain another driver and
- force its apparent sector size to be 512 bytes.
- - If DCD can support queuing of stall requests, then the USB MSC stall
- work around delays are not necessary.
- - Redesign threading module used with the USB MSC driver. It was using
- pthreads before and these were changed to a kernel thread. The reason
- for this has to do with task grouping: A pthread is a memory of the
- group of the task that started it. A kernel thread is independent of
- the task that started in (other than knowing it as the parent). This
- allows me to remove so kludge logic to "deparent" the pthread on
- startup.
- - Update the MIO183QT-9A LCD driver to support reading from the LCD.
- From Toby Duckworth.
- - Timer "upper half" driver and l"lower half" interface definition from
- Bob Doiron.
- * Atmel SAM4E/4S Board Support:
- - All SAM4E configurations updated to run with 120MHz CPU speed and
- with the CMCC enabled.
- - Support for the SAM4S Xplained Pro board from Bob Doiron.
- - Add watchdog driver. From Bob Doiron.
- * Atmel SAM4E/4S Drivers:
- - Add a USB full speed device driver (UDP) for the SAM4E.
- - Add support in HSMCI and SPI drivers to invalidate cached memory if
- the CMCC is enabled.
- - Add logic to handle SPI word widths > 8
- - Port RTC driver from SAMA5 to SAM3/4. From Bob Doiron.
- - HSMCI: Extensions from Bob Doiron needed to support PDC-based HSMCI
- DMA transfers. Verified on the SAM4S Xplained Pro.
- * Atmel SAMA5:
- - Add support for the SAMA5D36 chip.
- - Add functions to calculate PLLACK, PCK, and MCK frequencies given
- the main clock frequency.
- - Implemented RAM functions. When booting directly into NOR flash,
- reconfiguring the PLL while executing out of NOR FLASH causes
- crashes. This was fixed by David Sidrane by implementing RAM
- functions. The killer code is copied and executed from ISRAM and
- the crash is avoided.
- * Atmel SAMA5 Drivers:
- - Add support for the SAMA5D3 DBGU.
- * Atmel SAMA5 Board Support:
- - Add a board support configuration for the Atmel SAMA5D3 Xplained
- board running out of SDRAM. When booting from SDRAM, start-up logic
- needd to query the PMC registers to determine the MCK, PCK, etc.
- - For all SAMA5 boards, added support for 528MHz clocking.
- * TI Tiva/Stellaris:
- - Modify the logic to disables the interrupts and sets the default
- interrupt priority so that it uses the ICTR to get the number of
- interrupt lines/registers. This is instead of using some fixed
- number of initializations based a priori knowledge of the number
- of interrupt lines in the MCU.
- * STMicro STM32
- - Add support for the STM401RE. From Frank Bennett.
- * STMicro STM32 Boards:
- - STM32F4Discovery: Add support to register keyboard and mouse
- classes if so configured. From Leo.
- - Add support for the Nucleo-F401RE board. From Frank Bennett.
- * STMicro STM32 Drivers:
- - Add STM32 Ethernet IGMP hashing support. From Manuel Stühn.
- - OTG FS Host: USB host tracing added by Leo.
- * Freescale Kinetis
- - Modify the logic to disables the interrupts and sets the default
- interrupt priority so that it uses the ICTR to get the number of
- interrupt lines/registers. This is instead of using some fixed
- number of initializations based a priori knowledge of the number
- of interrupt lines in the MCU.
- * NXP LPC17xx
- - Modify the logic to disables the interrupts and sets the default
- interrupt priority so that it uses the ICTR to get the number of
- interrupt lines/registers. This is instead of using some fixed
- number of initializations based a priori knowledge of the number
- of interrupt lines in the MCU.
- * ZiLOG ZNEO Drivers
- - Added ZNEO ESPI driver.
- * Library:
- - Finish incomplete support for ferror(). From Macs N.
- * Documentation:
- - UsbTrace.html: Add some discussion of the USB monitor.
- * Configuration/Build System:
- - compiler.h: Add macro UNUSED() that can be used to eliminate
- warnings about variables that are set to values that are not
- used.
- * Debugging Support:
- - Add a configuration option to enable dumping of the USB trace buffer
- on assertion.
- * Applications:
- - IGMP Example: Fill out Kconfig file; update makefile so that the
- IGMP example can be used as an NSH built-in application. From Manuel
- Stühn.
- - lcdrw Example: Fill out empty Kconfig file.
- - touchscreen Example: Add a configuration option to indicate if
- architecture-specific initialized is required, yes or no.
- - System usbmsc: Back out the USBMSC daemon... it is no longer needed
- with the recent fix to the USBMSC class driver.
- - NSH: malloc/free IOBUFFER for 'cat' and 'hexdump' commands instead of
- using the stack. From Bob Doiron.
- - cpuhog, serialblaster, and serialrx Examples: Stress test examples
- added by Bob Doiron.
- Bugfixes (see the ChangeLog for details). Some of these are very important:
- * Core OS:
- - errno_get_errno_ptr() and getpid(): Add some checks. If these
- functions are called very early in initialization before the tasking
- structures are initialized, they would not behave properly.
- * Networking:
- - IGMP-related bug fixes from Manuel Stühn.
- - In netdev_findbyaddr(), skip network devices that are in the "down"
- state. It does not make sense to consider an address match with a
- "down" device. From Brennan Ashton.
- * Network Utilities:
- - DHCPD: The correct value of the PAD option. Should be zero, not
- one. From Brennan Ashton.
- - Corrections to the NTP client from Manuel Stuehn.
- * Common Drivers:
- - usbhost.h: Fix some USB HID-related conditional compilation. From Leo.
- - USB HID mouse driver: Don't include NAKs from the device in the error
- count. From Leo.
- * TI Tiva/Stellaris:
- - Add corrected control logic for TM4C125GXL based on logic from Daniel
- Carvalho with modifications. The LM4F120 also works well with this
- change.
- * STMicro STM32 Drivers:
- - STM32 F2 SPI: Correct a mapping for SPI MOSI pin. From dlsitzer.
- - OTG FS Host: Fixes related to low-speed devices and interrupt
- endpoints from Leo. Necessary in order to use a USB HID mouse
- device.
- - STM32 SDIO: The dmaflight method must be conditioned on
- CONFIG_SDIO_PREFLIGHT. Noted by Pelle Windestam.
- - Sourceforge Ticket #26. up_prioritize_irq should not be called
- if CONFIG_ARCH_IRQPRIO is not defined.
- * Atmel SAM3/4:
- - Fix some backward conditional compilation in the start-up logic.
- - Fix initialization of the default interrupt priorities. This is
- a critical bug fix!
- - SAM4S: Fix error in macros that disable peripheral clocking. From
- Bob Doiron.
- * Atmel SAMA5:
- - Fix double mapping of SDRAM when executing out of SDRAM. In this
- case, the SDRAM was already mapping in arm_head.S.
- - In clock configuration, the BMS bit handling was fixed to match
- what the HW really does. From David Sidrane.
- - TLB Bufferable bit did not do what I thought it was going to do.
- I though I was selecting a write-through cache, but the result was
- that all caching was disabled and NOR FLASH accesses were very slow.
- - Move the un-definitions of __ramfuncs__ from the clock configuration
- .c file to the .h file. Otherwise, the attribute will be applied
- differently for the prototype and the function definition.
- Sourceforge patch 38 from Luciano Neri.
- * Atmel SAMA5 Drivers:
- - Fix a case in the UDPHS driver where received status was not being
- cleared, causing OUT SETUP commands to fail.
- - TWI data sending fails to increment the number of bytes transferred
- on first byte sent. from David Sidrane.
- - If running from SDRAM, then BOARD_MCK_FREQUENCY is not a constant
- and cannot be used in conditional compilation. All drivers fixed
- EXCEPT for the PWM and Timer/Counter drivers which will need some
- more extensive redesign.
- * Atmel SAMA5 Boards:
- - SAMA5D3x-EK: The red LED is controlled by PE24 which is also the
- camera/ISI interface reset line. So if the a camera is installed,
- then we must avoid controlling the red LED or we inadvertently
- also reset the camera module. Noted by David Sidrane.
- - Header files reference type xcpt_t in certain configurations and
- so must include nuttx/irq.h. This is Sourceforge bug 25 submitted
- by Luciano Neri.
- * NXP LPC17xx Drivers
- - arm/src/lpc17xx/Kconfig and lpc17_ethernet.c: The default interrupt
- priority should be default, not the highest priority (2014-4-19).
- * ZiLOG ZNEO
- - Fix calculation of timer reload and prescaler. The timer frequency
- was way too fast.
- * Library:
- - strncpy(): Change ordering of test and copy. Logic would have
- failed if n=0; one byte was always copying before testing
- for the end of the copy.
- - Fix a counting error in the return value from sscanf(). Noted by
- kfrolov. Also, sscanf() should return EOF if no values were
- converted.
- - Fix a logic error in ftell(). It was simply using the file offset
- and did not take into account data buffered in memory. From Macs N.
- - sccanf(): Use stroul() vs strol() with %u format otherwise, range
- of values is restricted because of sign bit. From kfrolov.
- * Configuration/Build System:
- - Fix a build error that occurs when only USB device tracing is enabled.
- * NuttShell (NSH):
- - Fix NuttShell version number display in the NSH welcome message.
- version.h was not being included.
- * Other Applications:
- - sysinfo: CONFIG_VERSION_BUILD is a string an needs to be
- printed with %s, not %d. Noted by Librae.
- - nxplayer: Compilation failure in one configuration reported by
- Manuel Stuhn.
- - System sdcard: Remove an STM32 dependency. From Bob Doiron.
- - telnetd Example: Naming is confused. In someplaces 'telnetd',
- and in others 'shell.' All changes to telnetd. Noted by Pelle
- Windestam.
- NuttX-7.3
- ---------
- The 103rd release of NuttX, Version 7.3, was made on June 25, 2014,
- and is available for download from the SourceForge website. Note
- that release consists of two tarballs: nuttx-7.3.tar.gz and
- apps-7.3.tar.gz. Both may be needed (see the top-level nuttx/README.txt
- file for build information).
- Additional new features and extended functionality:
- * Core OS:
- - Dynamic loader: Framework to support Pascal P-Code as a binary
- format that can be exec'ed from a file system.
- - Dynamic Loader: Extend the binfmt interface to handle error
- conditions where format-specific clean-up is needed in the event
- of error conditions. This is needed by the P-Code binfmt.
- * Networking
- - IOB: Add a generic I/O buffer chain logic. This logic uses small,
- pre-allocated buffers that can be chained together to support
- transfers of any size, using fewer resources and also without
- committing in advance to a TCP window size. There is now only
- one I/O type used in the networking and it is these I/O buffer
- chains.
- - TCP Write Buffering: TCP write buffering logic converted to use
- I/O buffer chains.
- - TCP Read-Ahead Buffering: TCP read-ahead buffering logic converted
- to use I/O buffer chains.
- - Includes logic to support throttling of read-ahead buffering if
- the read-ahead buffering is competing with write buffering for
- I/O buffers.
- - Raw Sockets: Add support for the AF_PACKET socket family. From
- Daniel Lazlo Sitzer.
- * Common Drivers:
- - W25 Serial FLASH driver extended by Mark Whitehorn to support the
- 8Mbit W25Q80BV part.
- - Add support for Fujitsu MB85RS1MT RAMTRON part. From Charles Ash.
- - Enhancements to the generic timer interface to support capture mode
- from Bob Doiron.
- - Add an rxflowcontrol method to the serial interface to better
- support RX flow control. This involves common changes in addition to minor updates to all MCU-specific serial drivers (only fully implemented for the STM32). From Jussi Kivilinna.
- * Atmel SAM4C
- - Add support for the SAM4CM family. From Max Neklyudov.
- * Atmel SAM4E/4S Drivers:
- - RTT driver from Bob Doiron. Also added high resolution RTC
- emulation using the RTT for the sub-second counter.
- * Atmel SAM4E/4S Board Support:
- - The SAM4S Xplained Pro now uses the extended timer/counter
- features. From Bob Doiron.
- - Added a touchscreen and LCD driver for the SAM4E-EK board (the LCD,
- however, not yet fully functional).
- * Atmel SAMA5:
- - Optimized, high performance, assembly language memcpy(). This is
- the same optimized memcpy() function that Mike Smith brought in
- for the ARMv7-M with minor tweaks by David Sidrane to work with
- the ARMv7-A.
- - Basic support added for the SAMA5D4 family.
- * Atmel SAMA5 Drivers:
- - SAMA5D4: New drivers unique to the SAMA5D4: XDMAC, SAIC, and
- others.
- * Atmel SAMA5 Board Support:
- - SAMA5D4-MB: Initial board support for the SAMA5D4-MB/EK boards.
- * STMicro STM32
- - Add support for the STM32152 and STM32162 Medium+ density parts
- (plus miscellaneous other improvements to the original STM32151
- logic). From Jussi Kivilinna and Sami Pelkonen.
- * STMicro STM32 Boards:
- - Support for the Olimex STM32 H405 board contributed by Martin
- Lederhilger.
- * STMicro STM32 Drivers:
- - Implement the rxflowcontrol method to the serial interface to better
- support RX flow control. From Jussi Kivilinna.
- * NXP LPC17xx Drivers:
- - Added support for the RTC, ADC, DAC, Timers, PWM and MCPWM
- drivers. From Max (himax).
- * NXP LPC17xx Boards:
- - Support for the RTC, ADC, DAC, Timers, PWM and MCPWM integrated
- in the LPCXpresso LPC1768 board support. From Max (himax).
- * Library:
- - Add support for seek-able streams.
- * Configuration/Build System:
- - Restructured network directories, header files, and naming to
- better modularize the networking and to better integrate the
- networking with the rest of NuttX.
- * Applications:
- - prun: An NSH built-in application that can be used to run
- Pascal P-Code programs either programatically or from the NSH
- command line.
- - netpkt: A "raw" socket test from Lazlo Sitzer.
- - hex2bin: A library and built-in task to convert from
- Intel HEX to binary format. It can write the binary data to a file or it can store the binary data to memory (to support, for example, a loader).
- Bugfixes. Only the most critical bugfixes are listed here (see the ChangeLog for the complete list of bugfixes and for additional, more detailed bugfix information):
- * Core OS:
- - Dynamic Loader: Fix an error in a symbol table search function.
- Noted by Pelle Windestam.
- - Dynamic Loader: Fix a critical error in exec(); argv was not
- being passed.
- - mq_notify: Test for a valid signal number was inverted; this
- function could not have been working correctly before??? From
- eero.nurkkala.
- - Fix typo in conditional compilation: CONFIG_CLOCK_MONOTONIC vs.
- CLOCK_MONOTONIC. From Manuel Stühn.
- * Graphics
- - Fix typos in several RGB conversion macros.
- * Networking:
- - Modify TCP timout handling to provent situations where connections
- may not be freed. From Max Holtzberg.
- - Improved TCP fallback allocation logic from Max Holtzberg. Also,
- fallback mechanism is disabled when SO_LINGER is to prevent
- deadlocks.
- - Write Buffering: Add checks from buffer allocation failures. From
- Max/Himax.
- * Network Utilities:
- - webserver: httpd_fs_open() should return OK on success and ERROR on
- failure, not 1 and 0.
- * Common Drivers:
- - Make sure that all references to up_prioritize_irq() are
- conditioned on CONFIG_ARCH_IRQPRIO. Problem noted by Mike Smith.
- - CC3000: Correct SPI mode for CC3000 is CPOL=0 CHPA=1. From Jussi
- Kivilinna.
- - CC3000: Fix a race condition in thread start-up logic. From Jussi
- Kivilinna.
- - CC3000: Additional fixes including a compilation failure if POLL is
- enabled. From Jussi Kivilinna.
- * USB Drivers:
- - CDC/ACM and PL2303 device: Reset RX head to avoid resending last
- serial data when USB cable disconnected/re-connected. From
- Lizhuoyi.
- * TI Tiva/Stellaris Boards:
- - The Nucleo-F401RE has no on-board crystals and, hence, needs to run
- with the PLL input from the on-chip HSI clock.
- * STMicro STM32 Drivers:
- - Serial: Handle configuration for the case of 8-bit data with
- parity. From Freddie Chopin.
- * Atmel SAM3/4 Boards:
- - There was a cloned error in all SAM3/4 board configurations (and
- for a few other architectures as well). Button interrupts not
- being disabled after being detached. As a result, unexpected
- interrupts could be received after the button interrupt was
- detached.
- * Atmel SAMA5:
- - Fix some critical typos in the SAMA5D3 DMA definitions.
- * STMicro STM32 Drivers
- - I2C: Add an alternative I2C implementation for the STM32 F103 that
- works around errata in that specific part. From Patrizio Simona.
- - RTCC: Add retry logic to RTC initialization. It sometimes takes
- longer for the RTC to initialize, at least as noted on an F2 part.
- From Daniel Lazlo Sitzer.
- * NXP LPC17xx Drivers
- - GPDMA: Fix an error when DMA is started: The read-modify-write
- fails when the DMA is started. This is because the value read is
- not the same as the value set (on write it is the number of
- transfers to do; on read it is the number of transfers completed).
- From Lizhuoyi.
- * Library:
- - snprintf(): If the size passed to snprintf() is zero, then
- snprintf() must write nothing, but instead return the size of the
- buffer needed to hold the entire string. From Sami Pelkonen.
- * Configuration/Build System:
- - The alternate console device CONFIG_NSH_CONDEV must not be defined
- unconditionally. This causes errors when using Telnet sessions.
- This was solved by adding CONFIG_NSH_ALTCONDEV: CONFIG_NSH_ALTCONDEV enables or disables the feature then, if
- enabled, CONFIG_NSH_CONDEV provides the alternative console
- device name.
- - Many files: Convert all old-style GCC variadic macros to the C99
- form. Recent GCC changes tightens up that behavior and can cause
- some problems (at least for the IAR compiler for some reason).
- Noted by Bob Grimes.
- - tools/configure.sh: In-place SED edit messes up permissions on
- windows. From Hannes Delago.
- * Build Tools:
- - tools/mkfsdata.pl: Apparently, the trailing the 0x00 in http
- server files is seen as a bug in javascript and images. From
- Max/Himax.
- * Other Applications:
- - I2C Tool: Fix to show the updated register address on each
- fetch (vs. showing the same starting address each time). From
- Ryan VanSickle.
- - CLE was not returning the terminating newline character. But
- reported by Max kriegleder.
- NuttX-7.4
- ---------
- The 104th release of NuttX, Version 7.4, was made on August 15, 2014,
- and is available for download from the SourceForge website. Note
- that release consists of two tarballs: nuttx-7.4.tar.gz and
- apps-7.4.tar.gz. Both may be needed (see the top-level nuttx/README.txt
- file for build information).
- Additional new features and extended functionality:
- * Core OS:
- - Beginnings of a crypto/ subsystem from Max Neklyudov
- - Tickless operation: NuttX now supports a mode with no periodic
- timer interrupts. Rather, timed events are handle via an interval
- timer. This (1) lowers the rate of interrupt processing to timer
- events, (2) gives much high timing resolution, and (3) allows lower
- power modes of operation where the CPU is not constantly being
- interrupted by the timer.
- - Restructured the OS files under sched/ to better support the already
- modular nature of the RTOS.
- * Networking
- - Substantial directory and header file reorganization and renaming to
- make the NuttX networking implementation more modular.
- - Add network device ioctl to access PHY registers. From Daniel Lazlo
- Sitzer
- * Binary Loader:
- - Various changes associated with symbol tables from Pelle Windestam.
- * Graphics:
- - colorcmp(): New utility to compare two colors.
- - The initial background color is now configurable. Includes logic to
- eliminates multiple background updates to get the right color.
- - Minor configuration changes to handle mouse X/Y and touchscreen
- X/Y differently.
- * File System/Block Drivers:
- - SmartFS: Increase some variables from uint16_t to uint32_t to handle
- larger device sizes. From Ken Pettit.
- - Add configurable AES encryption support to the block-to-character
- (BCH) driver. This allows any block device to be accessed as an
- encrypted character device. From Max Nekludov
- - Add an MTD layer that will add read-ahead or write buffering to any
- MTD driver (incomplete).
- - Automounter: Add support for an auto-mounter that will automatically
- mount and unmount a file system a media is inserted and removed
- * Audio/Audio Drivers
- - WM8904 audio CODEC driver.
- - PCM .WAV file decoder. Fast forward implemented with sub-sampling
- (currently no rewind support).
- - Add a NULL audio device that can be used to simply unit-level testing
- of audio decoders.
- - Audio subsystem now supports interfaces for fast-forward and rewind
- needed by CMediaPlayer; add hooks for equalizer settings needed by
- the WM8904 CODEC.
- * Other Common Drivers:
- - MTD: Extend erase block size to 18-bits in order (decrease block
- size to 14-bits) to handle parts with large erase blocks. From Kosma
- Moczek
- - maxTouch: Add support for the Atmel maXTouch touchscreen controller.
- * Host Simulation:
- - Provides the timers needed to support the Tickless mode of operation.
- * Atmel SAM4C:
- - Add SAM4CM IPC register header file. From Max Neklyudov
- - Various fixes PMC and clock configuration for the SAM4CM port from
- Max Neklyudov
- * Atmel SAM4E/4S Drivers:
- - SAM4 AES driver. Contributed by Max Neklyudov
- * Atmel SAMA5:
- - Add logic to redirect all SAMA5D4 interrupts to the AIC
- - Add a configuration option to reserve DRAM for a framebuffer when
- executing out of DRAM. This optional was available before when
- executing out of NOR, but needs to work a little differently in
- this case.
- - Add SAMA5 slow (32.768KHz) clock support.
- - Add support for the ARM L2CC-PL310 L2 cache. The system runs with
- L2CC cache enabled but there is some issues still with the LCD DMA;
- I suspect that the memory timing configuration for L2CC needs to
- be tuned.
- - Provides the timers needed to support the Tickless mode of operation.
- * Atmel SAMA5 Drivers:
- - XDMAC-based HSCMI driver for the SAMA5D4
- - Adapt the SAMA5D3 LCDC driver to work with the SAMA5D4 which has
- no hardware cursor.
- - PIO: Add a new interface sam_pio_forceclk() that can be used to
- force PIO clocking on. I am afraid I was too conservative with
- PIO clocking in the initial design; this is the price.
- - TWI: Now supports the up_i2creset() method.
- - TWI: Use sam_pio_forceclk() so that we can read the current state
- of an open-drain output in the TWI reset logic.
- - SSC: SCC Frame Synch Delay and Start Delay are now configurable.
- - PCK: Add the slow clock and the main clocks as options for the
- PCK configuration.
- - Timer/Counter: Can now handle non-constant BOARD_MCK_FREQUENCY. Also
- now supports methods to attach client interrupt handlers
- - One shot and free-running timers. These are wrappers around the low
- level timer/counter logic to provide one-shot and free-running
- timers. These were developed to support the Tickless operation, but
- can be used for any purpose.
- * Atmel SAMA5 Board Support:
- - Add a boot loader that runs from ISRAM and loads an Intel HEX file
- into DRAM.
- - Add a configuration that will load a bootloader into AT25 Serial
- FLASH
- - SAMA5D4-EK NSH configuration supports many more features: RTC, HSCMI
- card detection, maXTouch touchscreen, TM7000 LCD, the command line
- media player (currently using the NULL audio device), automounter,
- and others.
- - SAMA5D4-EK: Add an NxWM configuration using the TM7000 LCD with
- the maXTouch multi-touch touchscreen.
- - SAMA5D4-EK NxWM: Uses new, larger icons in configuration instead of
- scaling.
- - SAMA5D4-EK NxWM: The NxPlayer and audio system are now enabled in
- the default configuration (but currently using the NULL audio
- device). The automounter is used to automatically mount media
- on an SD card.
- - SAMA5D3x-EK: Add a configuration to support the command line
- NxPlayer and to verify the WM8904 CODEC driver.
- * STMicro STM32:
- - Add support for the STM32F103RC and RD. From Kosma Moczek
- - Add a procfs entry to show the state of the CCM heap usage.
- From Pelle Winderstam
- * STMicro STM32 Drivers:
- - Unconfigure GPIO pins when closing a serial port to prevent back
- effects from back-powering on the TX pin. From Kosma Moczek
- * NXP LPC17xx Drivers:
- - ADC: Added burstmode ADC conversion mode, with CONFIG_ADC_BURSTMODE
- option in Kconfig. From Max
- - Ethernet: Added option to use the kernel worker thread to do most of
- the workload with CONFIG_NET_WORKER_THREAD option in Kconfig. From Max
- - Ethernet: Critical bugfix: From time to time (after some hours) the
- Ethernet receiver would lose one receive interrupt and the IP stack
- never recover because there is no receive watchdog as the transmit
- watchdog. From Max
- * NXP LPC17xx Boards:
- - mbed: Port ADC, DAC, and PWM logic from the configs/zkit-arm-1769.
- From Max
- - mbed: Eliminated a problem with PHY DP83848C : it doesn't need a
- specific initialization on mbed. From Max
- * Library:
- - Adds support for localtime. From Max Neklyudov
- * Configuration/Build System:
- - Make variable definitions 'static const' when possible to save RAM
- usage. From Kosma Moczek
- * Applications:
- - sysem/mdio: New PHY tool from Daniel Lazlo Sizter.
- - NSH: Networking logic modified to handler the case of SLIP
- transport. From Max Neklyudov.
- - NSH: Add a configuration to use a USB keyboard for the stdin
- device.
- - NSH: Software assigned MAC address is now configurable. From Lazlo.
- - NSH: Also add an option to let platform-specific logic select the
- MAC address.
- - NSH: There is now a configuration option that will bring up the
- network on an separate thread. Since the network bring-up is
- asynchronous, there are no serial console start-up delays due
- to the network negotiation time.
- - NxPlayer: Changes to integrate with Ken's NxWM::CMediaPlayer.
- - NxPlayer: Add interfaces for fast-forward and rewind needed by
- CMediaPlayer; add interface for equalizer settings needed by the
- WM8904.
- - NxPlayer: Supports new way of identifying the end of the audio
- stream (see the Audio section above).
- - Sudoku: Add a sudoku game.
- Bugfixes. Only the most critical bugfixes are listed here (see the ChangeLog for the complete list of bugfixes and for additional, more detailed bugfix information):
- * Graphics:
- - NxConsole: Fix scrolling for the case of the framebuffer device. In
- this case, the logic for clearing the vacated region at the bottom
- was missing so garbage would scroll up from the last, uncleared
- line.
- * Networking:
- - Important fix to the read-ahead buffer queue management: Consumed
- bytes were being trimmed from the head of the queue, but the queue
- head itself was not being updated. From Rony XLN.
- - Fix an error in SLIP escaping. From Max Neklyudov
- * Network Utilities:
- - Fix an include file ordering problem when CONFIG_NET_STATISTICS=y.
- - Move statistics from uip.h to new netstats.h to remove a circular
- inclusion problem
- - Various fixes for networking and tiny webserver from Max
- - webclient: Fix to offset calculation from Rony Xln. Prevents 0x0a
- at the beginning of lines.
- - webserver: Fix some configuration usage issues. From Max.
- - webserver: Missing logic to close sockets on loop termination.
- * File System / Block Drivers:
- - SmartFS: Fix for a bug that would show up if CONFIG_MTD_BYTE_WRITE
- was not selected and the SMART sector size was larger than the MTD
- device's block size (like it would be if using SMARTFS on larger
- flash devices). From Ken Pettit.
- * Audio:
- - Change how the end of the audio stream is detected by the leaf audio
- component. This used to be done by looking for the first partial
- buffer. That does not work with the in-place sub-sampling performed
- by the PCM decoder: That always reduces the size of the buffer so
- that all buffers only partially filled by the time they get to the
- leaf. Now, a flag is set in the audio buffer flags set to indicate
- the final buffer in the stream.
- * Common Drivers:
- - RAMLOG putc() method needs to set the errno and return EOF on a
- failure.
- - Add missing configuration option to select the MAX11802 touchscreen
- controller. From Petteri Aimonen
- * Atmel SAMA5D3/4:
- - Fix logic in conversion of physical and virtual DRAM addresses when
- running out of DRAM. This is an important bug fix for the SAMA5D3
- and 4 when running out of DRAM .
- - Critical SAMA5D3 and 4 bug fix: PIO clocking must be enabled for
- all input pins or else the value that is read never changes.
- * Atmel SAMA5D3/4 Drivers:
- - OHCI: Fix an error in a DEBUGASSERT statement. Caused an
- assertion to fire inappropriately when a low- or full-speed device
- was removed and CONFIG_DEBUG=y
- - OHCI: Pointers to allocated port values were not being
- nullified after being deallocated. This caused some assertions
- to fire when debug was enabled
- - SSC: Needs to account for data offset in audio buffer
- * ARMv7-M:
- - Correct the initial value of the BASEPRI register. This was
- apparently never being initialized! From Max
- * STMicro STM32 Drivers:
- - I2C: Fix missing configuration of GPIO pins in I2C driver. Fix
- from Alex D.
- - STM32 OTGFS device: Various changes to try to reduce that amount of
- time in interrupts handles and with interrupts disabled. From
- Petteri Aimonen
- * Atmel SAM3/4 Drivers:
- - Ethernet: Wrong bits being cleared before OR-ing in new settings.
- - Ethernet: Fix an error in the function that determines the number
- of free TX descriptors. This is an important bugfix on busy
- networks.
- - I2C: Test for read or write operation was reversed. How could
- this have worked before?
- * Atmel SAM3/4 Boards:
- - SAM4S Xplained-Pro: Correct description of LEDs and usage. From
- Kosma Moczek
- * Atmel SAMA5:
- - PIO: Fix definitions that could disable PIO interrupt support if only
- PIOE interrupts were enabled
- - PIO: Macro SAM_PION_VBASE is not define-able for the SAMA5D4 and must
- be replaced with a table lookup.
- - PIO: Fix a typo in Schmitt trigger configuration; Configure pin as a
- vanilla input first so that final pin configuration is more read-able
- (i.e., easier to debug)
- - PIO: Logic for Schmitt trigger selection backward
- - SAMA5D4: Correct system timer frequency. Input clock is MCK/2, not MCK.
- * Atmel SAMA5 Drivers:
- - Ethernet: Wrong bits being cleared before OR-ing in new settings.
- - Ethernet: Fix an error in the function that determines the number
- of free TX descriptors. This is an important bugfix on busy
- networks.
- - HSMCI: The 8-byte SCR transfer was failing silently with the DMA
- transfer, leaving the SD card in single bit mode. Fixed by adding
- a non-DMA read transfer mode.
- - HSMCI: Fix a problem on card insertion/removal callback handling.
- Interrupts were being disable so that the callbacks occurred with
- interrupts disabled. This resulted in loss of some interrupts and
- some not-so-good behaviors. The solution is to perform all
- callbacks on the work thread unconditionally
- * Atmel SAMA5 Boards:
- - PIO: Fix some cloned errors in SAM GPIO interrupt setup
- * NXP LPC17xx Drivers:
- - Ethernet: Comment out an assertion that is reported to fire
- inappropriately. From Max
- * Library:
- - stdint.h: Correct naming of [U]INT_LEASTn_{MAX|MIN} and
- [U]INT_FASTn{MAX|MIN}. From Kosma Moczek
- - unistd.h: POSIX definitions should be defined to a value. rom Kosma
- Moczek
- - Fixes associated with rint() and related interfaces in the math
- library.
- * Configuration/Build System:
- - NAME_MAX not available on SunOS; use FILENAME_MAX or MAXNAMELEN.
- Noted by Douglas Beattie
- * Applications:
- - NSH: if # appears on line, need to comment ignore additional
- commands on the line
- - NxPlayer: Check for file read errors and end-of-file with zero
- bytes read. Other error handling corrected as well.
- - NxPlayer: NxPlayer needs to set curbyte field to zero before
- enqueuing a buffer. Otherwise, it looks like beginning of the
- buffer has already been consumed.
- NuttX-7.5
- ---------
- The 105th release of NuttX, Version 7.5, was made on September 28, 2014,
- and is available for download from the SourceForge website. Note
- that release consists of two tarballs: nuttx-7.5.tar.gz and
- apps-7.5.tar.gz. Both may be needed (see the top-level nuttx/README.txt
- file for build information).
- Additional new features and extended functionality:
- * Core OS:
- - Watchdog Timer Allocation: (1) If we run out of pre-allocated
- watchdog times, the logic will now allocate additional timers
- from the heap. A reserve of pre-allocated watchdog timers is
- maintained so that there will always be timers available for
- interrupt handlers. (2) Added support for statically allocated
- watchdog timer
- - Address Environment Support: (2) New OS APIs integrated into all
- platform-specific context switching logic (up_block_task(),
- up_unblock_task(), _exit(), and others).
- - Kernel Build Support: (1) The MPU based "kernel build" renamed to a
- protected build (CONFIG_BUILD_PROTECTED); added support for the a
- new MMU-based "kernel build" (CONFIG_BUILD_KERNEL), (2) The system
- call library can now be built with CONFIG_NUTTX_KERNEL. New
- selection: CONFIG_LIB_SYSCALL.
- - System Startup: Add configuration options to start the system from
- a program on a file system (versus an address in memory).
- - Startup Parameter Passing. There used to be two ways to pass
- parameters to new tasks, depending upon the configuration: Either
- (1) argv[] as created as an array with each string strdup'ed. Or
- (2) argv[] array and strings were created on the stack before the
- new task was started. Now, there is only one way, way (1). Way
- (2) might be slightly more compact, but this is not worth carry the
- complexity of two different ways of doing the same thing.
- - Board Initialization: Add capability to perform initial board
- initialization on a separate worker thread. This is needed because
- there are many cases where initialization logic cannot execute on
- the start-up/IDLE thread. That is because blocking or waiting is
- not permitted on the IDLE thread.
- * Memory Management:
- - Granule Allocator: (1) Add a new function to reserve un-allocatable
- regions in the granule heap. (2) Add interfaces to support
- un-initializing a granule allocator.
- - Page Allocator: Add a simple physical page allocator based on the
- existing NuttX granule allocator. I am not certain if the granule
- allocator is sufficiently deterministic for long range use, but it
- gets get a page allocator in place for testing very quickly.
- - Remove CONFIG_MM_MULTIHEAP. Non-multiheap operation is no longer
- supported.
- - sbrk(): sbrk() is now supported in the kernel build to permit
- dynamically sized, per-process heaps.
- - Per-Process Heaps: Space at the beginning of the process data space
- is now reserved for user heap management structures. In the kernel
- build mode, these heap structures are shared between the kernel and
- use code in order to allocate user-specific data.
- - User Heap Management: When a privileged thread exits, we have to
- use the kernel allocator to free memory; when an unprivileged thread
- exits, we don't have to do anything... heap memory will be cleaned
- up when the address environment is torn down.
- - Inter-Process Shared Memory Support: (1) Add implementation and
- documentation for shmget(), shmctl(), shmat(), and shmdt(). (2)
- Add system system calls to support the user call gate to the shared
- memory interfaces. (3) Add platform-specific interface definitions
- needed to support the shared memory feature.
- - Virtual Page Allocator: Add support for a per-process virtual page
- allocator. This is a new member of the task_group_s structure. The
- allocator must be initialized when a new user process is started and
- uninitialize when the process group is finally destroyed. It is
- used by shmat() and shmdt() to pick the virtual address onto which
- to map the shared physical memory.
- * File Systems/Block Drivers/MTD:
- - SMART FS and SMART FS procfs updates from Ken Pettit.
- - The MTD Read-ahead/Write buffer layer appears is now functional.
- * Binary Formats:
- - Add logic to initialize the per-process user heap when each user
- process is started.
- * Graphics:
- - Change all occurrences of NxConsole to NxTerm.
- * Networking:
- - PHY Interrupts: (1) Standardize a PHY interrupt attachment
- interface. (2) Add support for an ioctl that can be used to notify
- an application when there is a change in the network status
- signalled by a PHY interrupt.
- - Improved Send Logic: In the past, the first packet send to a new
- network peer would fail; there would be no entry in the ARP table
- for the peer and so an ARP request could replace that first packet.
- Now as an option if CONFIG_NET_ARP_SEND=y, all send logic will (1)
- check if the peer MAC address is in the ARP table and, if not, (2)
- send ARP requests periodically to get the mapping and (3) wait for
- the ARP response. Then (4) when the ARP response is received then
- the actual send logic will be initiated. Thus there may be a delay
- with the first packet sent to a new peer, but the packet should not
- be lost
- * Host Simulation:
- - Emulated SPI FLASH driver for the sim target from Ken Pettit.
- * Intel x86:
- - The default host is now x86_64 and the -m32 option will be
- automatically selected for simulation builds.
- * Intel 8051 Family:
- - Removed all support for the 8051 family architecture from the NuttX
- source tree. The obsoleted code along with the removal patch can
- now be found at misc/Obsoleted/. This code was removed because (1)
- although some functionality has been demonstrated, I am not aware of
- any really successful ports of NuttX to any 8051, and (2) the 8051,
- with its hardware stack, forces limitations and complications to the
- other architectures and make growth and development of NuttX more
- complex.
- * ZiLOG ZNeo Boards:
- - configs/16z: Support for this board has been removed from the NuttX
- source tree (but still can be found in the misc/Obsoleted
- directory). This port is not ready for usage but may return to the
- NuttX tree at some point in the future.
- * Atmel SAM3/4 Boards:
- - SAM4E-EK: Add (1) a fully-functional ILI9341-based LCD driver and
- (2) a fully-functional NxWM configuration.
- * ARMv7-A:
- - Address Environments: Add support for application address
- environments using the Cortex-A MMU. Implement standardized
- platform-specific interfaces of NuttX address environment
- support.
- - Cache Operations: Implement standardized, platform-specific cache
- operations. These are called from the ELF loader in order to flush
- D-cache and invalidate I-cache after an ELF module has been loaded
- into memory. With this change, ELF modules work correctly on the
- SAMA5/Cortex-A platform.
- - Kernel Build: (1) Add implementations of system call gate. (2) Add
- CRT0 start-up file that can be linked with separately built user
- programs. (3) Add support for delivery of use-mode signals in the
- kernel build. (4) Add logic to initialize the per-process user heap
- when each user process is started. (5) ARMv7-A exception handling
- needs to work a little differently if we support user mode
- processes. This is because R13 and R14 are paged differently
- between user and SVC mode.
- - Shared Memory Support: (1) Add logic necessary to handle remapping
- of shared memory on context switches. (2) Extend virtual/physical
- address conversions to include addresses in shared memory. (3) Add
- implementation of platform-specific shared memory support.
- * Atmel SAMA5D Drivers:
- - Implement all network ioctls, including the new ioctl to setup PHY
- event notifications.
- - In kernel build with address environment, need logic to map user
- virtual addresses to physical addresses, and vice versa.
- * Atmel SAMA5D Boards:
- - SAMA5D3 Xplained, SAMA5D3-EK, and SAMA5D4-EK: Convert existing
- board specific PHY interrupt interfaces to use newly defined
- standard interface.
- - SAMA5D4-EK: Add a configuration for testing the kernel build
- configuration. There are configurations to boot either from an SD
- card or from and in-memory ROMFS file system.
- - SAMA5D4-EK: Add documentation/support for Rev E. board.
- * STMicro STM32 Drivers:
- - Ethernet: Modified to support the change to the network ioctl
- signature changes. Also add support for new ioctl to setup PHY
- event notifications.
- * STMicro STM32 Boards:
- - STM32F4Discovery with STM32F4DIS-BB: Add a network enabled NSH
- configuration for the STM32F4Discovery board with the STM32F4DIS-BB
- base board installed. Includes support for the microSD card slot on
- the STM32F4DIS-BB base board.
- * TI Tiva Drivers:
- - Add support for the TI CC3200. From Jim Ewing.
- * TI Tiva Boards:
- - Add support for the TI CC3200 Launchpad. From Jim Ewing.
- * C Library:
- - Re-implemented poll() delay using sem_timedwait().
- * Configuration/Build System:
- - Export Target: In the kernel or protected builds, (1) only the user
- libraries should be exported, (2) do not copy internal header files
- or build scripts if this is a kernel or protected build, and (3)
- needs to bundle up the user C startup file (crt0), not the kernel
- head object for the kernel and protected builds.
- - Add logic that will permit us to build user libraries with different
- CFLAGS than kernel code. This is needed because we need the
- -fno-common option when building ELF code to prevent SHN_COMMON
- relocations.
- * Applications:
- - NSH: Extend the NSH network initialization logic. There is now an
- option that will create a network monitor thread that will monitor
- the state of the link. When the link goes down, the code will
- attempt to gracefully put the Ethernet driver in a down state; When
- the link comes back, the code will attempt to bring the network back
- up.
- - ELF Example: The ELF test/example has been extended so the
- individual ELF test programs can link against the SYSCALL library
- (if it is available) or against the C library to eliminate or
- minimize the need for symbol tables.
- - Change all occurrences of NxConsole to NxTerm.
- - MTDRWB Example: Add an example to test MTD R/W buffering.
- - OS Test Example: Add a trivial test of sem_timedwait.
- * Application Configuration/Build System:
- - Import Target: (1) Add logic that will allow building applications
- against a NuttX export package (vs. the nuttx/ source tree). (2)
- Add .config file to export package. (3) Create apps/import. Create
- apps/import/Make.defs that does things like define CFLAGS; ELF build
- requires -fno-common in CFLAGS. Copy some base logic from
- nuttx/tools/Config.mk to apps/import/Make.defs. (4) Add
- apps/import/scripts/gnu-elf.ld GCC linker script for ELF import
- builds.
- - All Makefiles: (1) Add an install target to all makefiles. For
- the import build, the top-level Makefile now does two passes: (1)
- builds libapp.a, then (2) installs the programs into apps/bin. (2)
- Add program installation for CONFIG_BUILD_KERNEL in all Makefiles
- that build a main(). (3) For kernel build, the object file
- containing main cannot go into library because of name collisions.
- The object file must be handled as a special case in every Makefile.
- - All Built-In Programs: With kernel build (CONFIG_BUILD_KERNEL),
- entry point to all tasks is main(), not some xyz_main().
- - NSH: Several commands must be disabled in the kernel build because
- they depend on interfaces that are not available outside of the
- kernel: dd, df, losetup, mkfatfs, mkdr, and ps.
- - apps/tools/: (1) Add mkimport.sh to expload an NuttX import package
- and install in apps/import. (2) Add mkromfsimg.sh script to create
- a BOOT ROMFS filesystem image.
- - ELF and NxFLAT Examples: Do not build test cases that use
- task_create() if there is an address environment.
- * Tools:
- - refresh.sh: Add a tool to make refreshing configurations easier
- when you want to do a lot of them.
- - mksyscall.c: Build syscalls that do not need header files.
- - mkexport.sh: Add .config file to export package.
- - See above for new apps/tools scripts.
- Efforts In Progress. The following are features that are partially
- implemented but present in this release. They are not likely to be
- completed soon.
- * Processes. Much of the work in this release is focused on the
- realization of Unix-style user processes in NuttX. There is more to
- be done, however. The full roadmap and status is available at:
- http://www.nuttx.org/doku.php?id=wiki:nxinternal:memconfigs#the_roadmap_toward_processes
- * XMega: There are some fragments in place for an XMega port. That
- port has not really started, however.
- * Galileo: Similarly, there are fragments in place for an Intel Galileo
- port. The port not been started in earnest either.
- Bugfixes. Only the most critical bugfixes are listed here (see the ChangeLog for the complete list of bugfixes and for additional, more detailed bugfix information):
- * Core OS:
- - Kernel build fixes: (1) IDLE TCB setup needs to indicate that the
- IDLE thread is a privileged, kernel thread. (2) Don't build
- task_create() or task_spawn() interfaces if there is an address
- environment. (3) posix_spawn() kernel proxy thread should be a
- kernel thread, not a user task.
- - Several pthread interfaces: Add const storage class to phthread
- parameters. From Freddie Chopin.
- - sched/clock: Remove vestiges of g_tickbias; need, instead, to apply
- time bias to g_basetime in order to provide the correct system time.
- - System Calls: (1) Several typos fixed; corrected integration of
- exevc(), execvl(), posix_spawn, and posix_spawnp system calls. (2)
- If we are configured to use a kernel stack while in SYSCALL handling,
- then we need to switch back to the user stack to deliver a signal.
- * File Systems/Block Drivers/MTD:
- - procfs: Fix some procfs breakage introduced by reorganizing some
- non-reorganizable data structures. From Ken Pettit.
- - AT45: In at45db_bwrite , the buffer is not increased when writing
- more than 1 page. Sourceforge bug #34.
- * Binary Formats:
- - ELF relocations. Some relocation types do not have a named symbol
- associated with them. The design did not account for that case.
- - ELF Loader: Critical bugfix.. BSS was not being cleared.
- * Memory Management:
- - Granule allocator initialization uses wrong allocator to setting
- aside kernel memory.
- - Add a flag to group structure: If the group is created by a kernel
- thread, then all resources in the group must be privileged.
- * Cryptogrphic Support:
- - crypto/cryptodev.c: Path segments reversed in include file path. Noted by Brennan Ashton.
- * Common Drivers:
- - Common CAN upper-half: In can_txdone, waiters on the semaphore
- should be informed regardless of the return value of can_xmit. First
- it returns -EIO if there are no new packets, and second the
- information of the waiters is about the last transferred packet.
- From Daniel Lazlo Sitzer.
- * ARM:
- - System Calls: Fix a typo in system call when fetching parameter from
- the stack: regs[REG_PC]+4 is the address, not regs[REG_PC+4].
- * STMicro STM32 Drivers:
- - STM32 F401 UART: Correct support for USART6 on this chip. From
- Freddie Chopin.
- - STM32 FLASH fixes: use size_t instead of uint16_t, make interface
- more generic. From Freddie Chopin.
- - Fix for UART7 and UART8 on STM32 clock enable from Aton.
- - CAN: At the end of the interrupt handler, the interrupts were being
- disabled, if all packets have been transferred when the interrupt
- handler was invoked. This is problematic, because the interrupt
- handler calls can_txdone of the upper half which can enqueue new
- packets to send. Removed the block altogether, because can_txdone
- calls can_xmit which disables interrupts if there are no new packets
- to send. From Daniel Lazlo Sitzer.
- - Additional STM32 CAN correction suggested by Max Holtzberg.
- * STMicro ST32 Boards:
- - configs/mikroe-stm32f4: Fix a few compile bugs and minor corrections
- to the mikroe-stm32f4 configuration source. From Ken Pettit.
- * ARM9/ARMv7-A:
- - System Calls: Fix ARM7/9 and Cortex-A SYSCALLs: For threads in SVC
- mode, the SVC instructions clobbers R14. This must be taken account
- in the inline assembly.
- - Task Setup: All tasks, even user mode tasks, must start in
- supervisor mode until they get past the start-up trampoline.
- - ARMv7-A: Modify up_fullcontextrestore() for CONFIG_BUILD_KERNEL.
- It changed CPSR while in kernel. That will crash if the new CPSR is
- user mode while executing in kernel space. Fixed by adding a
- SYS_context_restore system call. There is an alternative, simpler
- modification to up_fullcontextrestore() that could have been done:
- It might have been possible to use the SPSR instead of the CPRSR and
- then do an exception return from up_fullcontextrestore(). That
- would be more efficient, but I never tried it.
- * Atmel SAM3/4 Boards:
- - SAM3X/Arduino Due: Fix typo in sam3x_periphclks.h; add SCLK
- definitions to board.h header file. From Fabien Comte.
- - SAM3 RTT: Only SAM4 family has RTTDIS bit in the MR register.
- SourceForge bug #33 from Fabien Comte.
- * C Library:
- - sscanf(): NuttX libc tried to guess how many characters to parse,
- extracted them into a buffer, then ran strtol() on that buffer.
- That guess was often wrong. A better approach would be to call
- strtol() directly on the input data, using the endptr return value
- to determine how many characters to skip after parsing. From Kosma
- Moczek.
- - Corrected atan2 implementations from Denis Arnst.
- - Change to lib_dtoa() to fix precision error from trailing zeroes.
- From Bob Doiron.
- * Applications:
- - Fix NSH PS command: If there are no arguments, it could print
- garbage for argument list.
- * Configuration/Build System:
- - Null Example: Need to include config.h it order know if this is or
- is not a kernel build. This problem still exists in several other
- file that may need to define main().
- NuttX-7.6
- ---------
- The 106th release of NuttX, Version 7.6, was made on November 26, 2014,
- and is available for download from the SourceForge website. Note
- that release consists of two tarballs: nuttx-7.6.tar.gz and
- apps-7.6.tar.gz. Both may be needed (see the top-level nuttx/README.txt
- file for build information).
- Additional new features and extended functionality:
- * Core OS:
- - Moved name semaphore and message queue support out of the OS and
- into the VFS. These improves the architecture by unifying the
- management of named resources, removes redundant resource management
- logic, and makes named semaphores and message queues visible in the
- file system. By default, these are visible at /var/lock and
- /var/mqueue.
- - Add SIGPOLL for use as part of the AIO implementation.
- - Remove CONFIG_MAX_TASK_ARGS configuration. There is now no
- predetermined limit on the number of arguments that may be passed
- to a new task on start-up.
- * Work queues:
- - Add support for priority inheritance on the low priority worker
- queue. That is, if a higher priority thread has scheduled work, the
- priority of the low priority worker thread(s) will be boost to the
- priority of the queuing thread. At work is performed at at least
- thread priority of the scheduling thread. If there are multiple
- worker threads, then all threads get reprioritized. Currently
- only implemented for AIO.
- - Add support for multiple low-priority work queue threads. This
- allows individual worker threads to block indefinitely for I/O as
- necessary without halting the entire work queue.
- * VFS/General Drivers:
- - Implement create() (as a macro).
- - Add pread() and pwrite(). Also added pread() and pwrite()
- system calls.
- - AIO: Add aio_read(), aio_write(), aio_return(), aio_error(),
- aio_suspend(), aio_canel(), lio_listio(), and aio_fsync(). This
- logic minimizes the creation of new threads by using the new
- features also added to the low priority work queue with this
- release. It uses the new low priority worker thread interface
- to adjust the priority of the worker thread according to the
- priority of the AIO client thread
- - Implement standard syslogmask() to control logging (also removing
- the non-standard syslog_enable()).
- * File Systems/Block Drivers/MTD:
- - Extend MTD support to the M25P16. From Sébastien Lorquet.
- * Drivers:
- - BCH (Block-to-Character): Add support for seeking in BCH. From
- Sébastien Lorquet.
- * Graphics Support/Graphics-Related Drivers:
- - Add support for a generic ILI9341 LCD driver. From Marco Krahl.
- - Add ANSI/VT100 foreground and background color commands.
- - Add driver for ST7565 LCD that works with NHD-C12864KGZ display. From Pierre-noel Bouteville.
- * Networking:
- - Verify that multiple networks can be supported.
- - Add support for the case where there are multiple networks: One
- being Ethernet and the other not (SLIP, PPP, ...). The primary
- difference from the standpoint of the stack is that (1) ARP may or
- may not be necessary, (2) the size of the link layer header will
- vary, and (3) different MTUs and TCP receive windows may be used
- with each link. Suggested by Brennan Ashton.
- - Extensions to UDP and TCP connection structures for the case of
- multiple networks. In this case, assigned port numbers only have to
- be unique with respect to the IP address. So, for example, you
- could have multiple port 80's, one on each network.
- * Host Simulation:
- - Removed the old, strange up_stdio.c and implemented a simulated UART
- driver to provide the console input. The new logic starts a
- separate, Linux domain pthread to read the console input in raw mode
- and provides the incoming data to NuttX via standard NuttX domain
- IPCs.
- - Add support for 64-bit longjmp/setjmp in simulator platform. This
- will permit operation of the simulation natively on a 64-bit
- platform.
- * ARMv7-M:
- - Add ARMv7-M CMSIS ITM header file and library. From Pierre-noel
- Bouteville.
- - Add ARMv7-M CMSIS DWT and TPI header files. From Pierre-noel
- Bouteville.
- - Add ARMv7-M support to use ITM for SYSLOG debug output. Includes
- logic from Pierre-noel Bouteville.
- * Atmel SAM3/4 Drivers:
- - Add support for SAM3/4 basic serial TERMIOS and flow control.
- There are issues with IFLOW control: PDC or DMAC support is
- required.
- * Atmel SAM3/4 Boards:
- - SAM4E-EK: Add support for PHY interrupt.
- * Atmel SAMA5D Boards:
- - SAMA5D3-Xplained: Add a configuration that provides a simple test
- for the EMAC and GMAC on the SAMA5D3 working together.
- - SAMA5D4-EK: Add a configuration that provides a simple test for the
- EMAC0 and EMAC1 on the SAMA5D4 working together.
- * Freescale KL:
- - Add an I2C header file for the Freescale KL family. From Alan
- Carvalho de Assis.
- * NXP LPC32xx:
- - Add support for tickless operation using the NXP LPC43xx. From
- Brandon Warhurst.
- * SiLabs EFM32:
- - Add a basic port for the SiLabs EFM32 family. Includes many files
- contributed by Pierre-noel Bouteville .
- * SiLabs EFM32 Boards:
- - Add board support for the EFM32 Gecko Starter Kit.
- - Add board support for the Olimex EFM32G8809128 STK. NOTE: I am
- unable to test this configuration due to tool-related issues.
- - Add board support for the SiLbas EFM32GG Giant Gecko Starter kit.
- * STMicro STM32:
- - Add support for the STM32 F411RE from Serg Podtynnyi.
- - Add support for the STM32F103RG. From Murilo Ponte.
- * STMicro STM32 Drivers:
- - STM32 F4: Add logic that implement true high speed support for the
- STM32 OTGHS peripheral and concurrent support for both LS and HS
- OTG. New OTGHS drivers provided for both device and host. From
- Brennan Ashton.
- * STMicro STM32 Boards:
- - STM32 Nucleo-F411RE: Extend this board configuration to also support
- the Nucleo-F411RE. From Serg Podtynnyi.
- - Add support for the STM32F429i Discovery's LCD (SPI based). From
- Marco Krahl.
- - configs/stm32f100rc_generic: Removed this generic board configuration.
- I have decided to stop support of generic board configurations. Generic
- board configurations do not provide support for any specific hardware
- but can be useful only if there are not other examples for the setup
- for a particular architecture. Not the case here.
- * C Library:
- - Add a mostly bogus wchar.h header file. This file is mostly bogus
- because none of the wide character operations are currently
- supported in the Nuttx C library. The file does provide the wchar_t
- types needed by some software, however.
- - Add isatty() function. From Alan Carvalho de Assis.
- - Add mktemp(), mkstemp(), tmpnam() and tempnam().
- * Configuration/Build System:
- - Add a PRELINK macro to Config.mk. From Kriegleder.
- - compiler.h: Defines inline functions as not instrumented - this is
- relevant for anyone using instrumentation. From Lorenz Meier.
- * Applications:
- - apps/interpreter/bas: Added in the Michael Haardt's BAS 2.4 adapted
- for use by NuttX by Alan Carvalho de Assis. Includes support for
- VT100 terminals and color commands.
- - Examples: Added bastest/ which holds a special version of Michael
- Haardt's BAS 2.4 test files adapted for use by NuttX on a ROMFS file
- system.
- - Examples: Add a simple UDP relay bridge for testing configurations
- with multiple networks. Includes a host-side test driver for
- testing the bridge.
- - Netutils: Add implementation of timeouts for the netutils webclient.
- From Brennan Ashton
- - NSH: Add support for a custom NSH ROMFS startup image header file
- location. From Martin Lederhilger.
- - OS test: Add a simple test of named semaphores.
- - OS test: Add AIO test case in OS test.
- Efforts In Progress. The following are features that are partially
- implemented but present in this release. They are not likely to be
- completed soon.
- * Processes. Much of the work in this release is focused on the
- realization of Unix-style user processes in NuttX. There is more to
- be done, however. The full roadmap and status is available at:
- http://www.nuttx.org/doku.php?id=wiki:nxinternal:memconfigs#the_roadmap_toward_processes
- * XMega: There are some fragments in place for an XMega port. That
- port has not really started, however.
- * Galileo: Similarly, there are fragments in place for an Intel Galileo
- port. The port not been started in earnest either.
- Bugfixes. Only the most critical bugfixes are listed here (see the
- ChangeLog for the complete list of bugfixes and for additional, more
- detailed bugfix information):
- I ran cppcheck against the entire code base and correct many latent bugs
- including things as serious as memory leaks, two locations where interrupts
- were be disabled but never re-enabled, and errors in the Tickless mode of
- operation. My thanks to the developers of cppcheck! I am impressed!
- * Core OS:
- - vfork(): Now that arguments are kept on the stack, the way that
- arguments are passed from parent to child in vfork() must change.
- This bug has always been present, but was not visible with the
- old strdup() way of passing arguments.
- - vfork() problem: If we get to vfork() via system call, then we
- need to clone some system call information so that the return form
- the cloned system call works correctly.
- - Fixes to tickless operation code, especially in alarm mode. From
- Brandon Warhurst.
- - Fix an important bug in the watchdog timer creation logic.
- - Calling mq_timedreceived() with immediate timeout was getting stuck
- and not timing out. Immediate timeout is achieved by setting absolute
- timeout value to past time, for example abstime={ .tv_sec=0,
- .tv_nsec=0 }. However absolute time was converted to relative time
- using unsigned integer arithmetic and resulted large ticks count by
- clock_abstime2ticks, instead of expected negative ticks value.
- Change corrects clock_abstime2ticks() to return negative ticks, if
- absolute time is in the past. From Jussi Kivilinna.
- * Memory Management:
- - Fix a place in the memory manager where it explicitly assumed that
- the size of a pointer is 4 bytes. That assumption was OK if the
- actual size is smaller but made the heap unstable when used with
- the x86_64 host simulation.
- - Granule Allocator: If the INTR granule allocator mode is enabled,
- there is no semaphore to destroy. From Lorenz Meier.
- * Networking:
- - Network routing: I don't think that the net_route() function has
- ever worked correctly. The source IP was updated in the match
- struct instead of the route IP. From Brennan Ashton.
- - Move and rename IP header flag definitions. The problem fixed here
- is that there IP header flag definitions were not available when TCP
- was disabled. The IP flags are used in ICMP and IGMP.
- - Network routing: Refuse to perform routing table lookups for the
- Broadcast IP address. From Brennan Ashton.
- - Network routing: Add logic to netdev_findbyaddr() to return the
- correct network device for the case where a broadcast
- address is used. This change caused trivial ripples through other
- files because additional parameters are required for
- netdev_findbyaddr() when CONFIG_NET_MULTINIC.
- * File Systems/Block Drivers/MTD:
- - NXFFS Dump: Fix problems with redefinitions of fdbg macro. With the
- fix to the syslog prototype, a LOG priority must now be the first
- parameter. Fixed by replacing all occurrences of fdbg with
- syslog(LOG_DEBUG, and eliminating the macro redefinitions. Noted
- by Sebastien Lorquet.
- - poll() was not waking up from signals (for example mq_notify()
- events). From Jussi Kivilinna.
- - poll(): Add proper handling for sem_timedwait errnos. From Jussi
- Kivilinna.
- - include/nuttx/fs/fs.h: Fix typo in conditional compilation. From
- Alan Carvalho de Assis.
- * Graphics/Graphic-Related Drivers:
- - Remove warnings when CONFIG_NXTK_BORDERWIDTH is set to zero. From
- Pierre-Noel Bouteville.
- * Common Drivers:
- - Make standard syslog and vsyslog POSIX compliant (also modify
- non-standard syslog functions for compatibility).
- - R/W buffering: Fix typo that can cause compilation error.
- * Atmel SAM3/4:
- - SAM4S: Add missing SPI0 clock configuration macro for the SAM4S. From spasbyspas.
- * Atmel SAM3/4 Drivers:
- - SAM4E-EK: Fix an error in a USART1 pin number.
- * Atmel SAMA5D3/4 Drivers:
- - SAMA5DF4: Fix several typos that will prevented EMAC1 from
- initializing properly.
- * NXP LPC43xx:
- - Fixes to allow compile of lpc43_gpioint.c. From Brandon Warhurst.
- * STMicro STM32:
- - Add missing ADC pinmap definitions for the STM32 F103R from Martin
- Lederhilger.
- * STMicro STM32 Drivers:
- - STM32 EXTI: Correct STM32 RTC EXTI bit definition. From Lazlo.
- - STM32 IWDG, WWDG, DBGMCU: Fix watchdog stop bit usage. From Lazlo.
- - STM32 OTGFS: Correct a typo in the STM32 OTGFS register bit definitions.
- * ARM:
- - ARM up_internal.h: Add protection from C++ name mangling in the
- ARM up_internal.h. From Lorenz Meier.
- * MicroChip PIC32MX:
- - PIC32MX7: DEVCFG0 bit 2 must be set. Writing bit 2 as zero can
- brick the CPU on some versions. From Cris Kvist.
- * C Library:
- - The implementation of access() as vararg macro has the issue that
- any function call with the same name (even in a C++ class) will
- match with it and result in a compile error. Replaced with a small
- function. This resolves the compile issue, and shouldn’t have
- negative side effects for users of the function. From Lorenz Meier.
- - The definition of strncpy() is that empty space should be zero-
- filled, the change adds the zero filling (See the POSIX spec here:
- http://pubs.opengroup.org/onlinepubs/7908799/xsh/strncpy.html). From
- Lorenz Meier.
- - limits.h: Remove the definition of INT_FAST32_MIN which is already
- defined in stdint.h (the correct location). From Lorenz Meier.
- * Applications:
- - apps/: Correct everything under apps to use the corrected syslog
- interfaces. Remove any non-portable uses of syslog.
- - NSH: Fix ls -l output for regular files.
- - NSH: Fix reversed in/out file closing in DD command when an error
- occurs. From Ken Pettit.
- - NSH: Add logic to restart the console wait if an error occurs
- while reading from the console. In USB console startup, the logic
- must be able to open the USB serial and receive 3 newlines.
- However, it the USB driver is disconnected or otherwise fails before
- the 3 newlines are received, the receive loop becomes a killer,
- infinite loop, CPU hog. Noted by spasbyspas.
- - Netutils: Fix memcpy of host address in netlib_gethostaddr(). From
- Brennan Ashton.
- - Netutils: If you make a DNS request before the DNS address it would
- cause an assertion. The state of the IP setting is not something the
- application should be aware of, it should only be concerned with
- whether or not the name was resolved. From Brennan Ashton.
- - Netutils: Fix md5 hashing when digest[$i] islower that 16. From
- Sergey.
- - Stack Monitor: Fix compile problems introduced when the syslog()
- prototype changed; Also update Makefile for kernel build From
- Radoslaw Adamczyk.
- - Examples: Update NxTerm makefile for kernel-build issues. From
- Radoslaw Adamczyk.
- - Examples: Fixes to keypadtest from Pierre-Noel Bouteville.
- - Examples: These examples all set the IP address of eth1 but the
- netmask and gateway of eth0 if DHCP is enabled: discover, tcpecho,
- webserver, xmlrpc. That can't be right.
- NuttX-7.7
- ---------
- The 107th release of NuttX, Version 7.7, was made on January 26, 2015,
- and is available for download from the SourceForge website. Note
- that release consists of two tarballs: nuttx-7.7.tar.gz and
- apps-7.7.tar.gz. Both may be needed (see the top-level nuttx/README.txt
- file for build information).
- Additional new features and extended functionality:
- * Core OS:
- - Task exit handling: Add logic to clean up after task_delete() or
- pthread_cancel() if the task happens to be waiting on a semaphore
- when was is cancelled.
- - Stack coloration: Removed CONFIG_DEBUG_STACK and replaced it with
- CONFIG_STACK_COLORATION that does the same thing but without enabling
- debug. From David Sidrane.
- * Common Drivers:
- - Discrete joystick driver: Added an interface definition and upper
- half driver for a discrete joystick device (where X/Y changes are
- indicated with button presses).
- - Analog joystick driver: Added an interface definition and upper
- half driver for a analog joystick device (where X/Y positions are
- sampled, numeric values).
- - Add driver support for the ADXL345 accelerometer. From Alan
- Carvalho de Assis
- - Generic serial driver: Add watermark levels to the serial RX flow
- control logic. Modify the rxflowcontrol method to accept the number
- of bytes in the buffer and a boolean indication of which watermark
- was crossed.
- * File Systems/Block Drivers/MTD:
- - Add procfs write support. From Ken Petit.
- - Implemented wear-leveling in the SmartFS. From Ken Pettit.
- - MMC/SD Interface: MMCSD SDIO: Add support for a new
- SDWAIT_WRCOMPLETE condition. The previous logic used a busy-wait
- loop to poll the card R1 status to determine when the card was
- ready for the next transfer. That busy-wait can be quite long --
- up to hundreds of milliseconds. An alternative is to look the SD D0
- pin which will change state when the card is no longer busy. This
- change avoids the busy-wait poll by reconfiguring the SD D0 pin as a
- GPIO interrupt, then waiting for the card to become ready without
- taking up CPU cycles. From David Sidrane.
- * Drivers:
- - Add support for a generic EEPROM driver that accesses EEPROM as a
- character driver (vs. an MTD driver). From Sébastien Lorquet.
- * Graphics Support:
- - Many new fonts converted for use with NuttX and added by
- Pierre-noel Bouteville
- * Networking:
- - IPv4 support is now conditioned on CONFIG_NET_IPv4.
- - Implemented and verified IPv6 support conditioned on
- CONFIG_NET_IPv6. Either IPv4 or IPv4 or both may be selected.
- Sockets, of course, must be bound to one or the other. Added support
- for IPv6 ioctls to manipulate IP addresses.
- - Integrated support for ICMPv6 and the ICMPv6 Neighbor Discovery
- Protocol and ICMPv6 ECHO request/reply needed to support ping logic.
- - All Ethernet drivers: Modified to support. Most, however, are
- still missing address filtering logic required for ICMPv6 Neighbor
- Discovery Protocol. See
- http://www.nuttx.org/doku.php?id=wiki:howtos:ipv6#ethernet_driver_requirements
- - Also added missing raw/packet socket support to all Ethernet drivers.
- * Host Simulation:
- - Add a configuration build and test the Traveler first person game
- using the simulator.
- - Add an X11 mouse-based simulation of an analog joystick device
- * Atmel SAMA5D Boards:
- - Add analog Joystick shield support for the SAMA5D3 Xplained board.
- * Freescale KL Drivers:
- - Add GPIO interrupt capability for the KL architecture. From Alan
- Carvalho de Assis
- * Freescale KL Boards:
- - Freedom-KL25Z: Add board support for the ADXL345 accelerometer. From
- Alan Carvalho de Assis
- - Freedom-KL25Z: Update the Freedom KL25Z board CC3000 support to use
- the current CC300 interfaces. From Alan Carvalho de Assis
- * NXP LPC43xx Boards:
- - A port of NuttX to the LPC4357-EVB from Toby Duckworth. This port
- is a leverage of the LPC3330-Xplorer port and still have a some
- misinformation from that port that needs to be updated for the
- LPC4357-EVB.
- * SiLabs EFM32 Drivers:
- - Serial: Add support for serial termios TCGET and TCSET. For the
- moment, only set/get speed is implemented. From Pierre-noel
- Bouteville.
- - RMU: Add support for the EFM32 reset management unit (RMU). From
- Pierre-noel Bouteville.
- * SiLabs EFM32 Boards:
- - Add support for timer/PWM on the EFM32GG. From Pierre-noel
- Bouteville
- * STMicro STM32:
- - Enable support for the STM32 F102. From the PX4 team.
- * STMicro STM32 Drivers:
- - STM32 F429 LTDC: Add interface to perform hardware accelerated layer
- operation. Provides access to a reference of a specific ltdc layer.
- From Marco Krahl
- - STM32 F429 LTDC support: Implemented LTDC framebuffer support for the
- generic nuttx framebuffer interface. Also implements the interface to
- perform hardware accelerated layer operation by the ltdc controller
- and dma2d controller later. From Marco Krahl.
- - STM32: Add support for the internal low speed clock (LSI) as a
- source of the RTC clock. Some boards do not have the external
- 32kKhz oscillator installed, for those boards we must fallback to
- the crummy internal RC clock. From Kevin Hester
- - STM32 SDIO: Add support for the new SDWAIT_WRCOMPLETE condition.
- From David Sidrane
- * STMicro STM32 Boards:
- - Add a discrete Joystick support for the STM3210E-EVAL.
- - Add analog Joystick shield support for the Nucleo F4x1RE boards.
- - STM32 F429i-Disco: Add support for initializing of the ltdc
- controller and the lcd device connected on the stm32f429i-disco.
- From Marco Krahl.
- - Removed the px4-v2_upstream configuration. This was not the
- official configuration for the PX4 board and has led to confusion
- by NuttX users. The board configuration also requires some ongoing
- maintenance and customization to support ongoing PX4 testing and
- evaluation. It is best retained the PX4 repositories where it can
- be properly maintained and not in the upstream NuttX repository.
- * TI Tiva:
- - Add support for the TI Tiva TM4C 129X family. Some unverified
- support for the TM4C 1294 is also in place.
- * TI Tiva Drivers:
- - Added support for Tiva I2C driver. Verified on the Tiva TM4C123G
- and TM4C129X.
- - Added a Tiva TM4C129X Ethernet driver.
- - Add a timer library for generic support of Tiva timers
- - Add a driver lower half for drivers/timer.c. Only 32-bit periodic
- timers are supported. This provides userspace access to timers.
- * TI Tiva Boards:
- - TM4C123G Launchpad: Add initialization logic for an external AT24
- EEPROM. This is intended only to support testing of the Tiva I2C
- driver.
- - Board support for the Tiva DK-TM4C129x Connected Development Kit.
- - DK-TMC129X: Add an IPv6-enabled NSH configuration.
- * C Library/Header Files:
- - Added support for a variadic ioctl() function. The ioctl()
- interface is a non-standard, Unix interface. NuttX has always used
- the older, three-parameter version. Most contemporary systems now,
- however, use a variadic form of the ioctl() function. Added an
- option to insert a shim layer to adapt the three-parameter ioctl()
- to use the variadic interface form. Internally, the ioctl handling
- is the same three-parameter logic. The only real complexity to the
- shim is in how the system calls must be handled.
- - Added sys/custom_file.h. Used when CUSTOM_FILE_IO is define and
- avoids re-definition errors about the FILE define. From Thomas
- Gruber via the PX4 repository
- - Add CRC8 support to the C library. From Ken Pettit.
- - math.h: Added support for the expm1 functions. From Brennan Ashton
- * Applications:
- - apps/examples/djoystick: Add a test of the discrete joystick
- driver.
- - apps/examples/ajoystick: Add a test of the analog joystick
- driver.
- - apps/examples/ltdc: Add ltdc test example. From Marco Krahl
- - apps/system/lm75: Add a tiny application to read the temperature
- from an LM-75 (or compatible) temperature sensor
- - apps/examples/timer: Add a trivial test of the timer driver
- - apps/system/cu: Add a minimalist implementation of the 'cu'
- terminal program (part of Taylor UUCP for ages). Using it, you can
- simply open a serial port and interact with it. Using '~.' you can
- leave the terminal program and drop back to nsh. This might come
- in handy for people that have e.g. GSM modems, GPS receivers or
- other devices with text based serial communications attached to
- their Nuttx systems. From Harald Welte
- - apps/interpreters/micropython: A port of Micro Python to NuttX.
- Contributed by Dave Marples
- - apps/netutils/dnsclient: Can select to be either IPv4 or IPv6, but
- not both (IPv6 still does not compile)
- - apps/netutils/netlib: Add new library functions to manipulate IPv6
- addresses.
- - apps/examples/nettest: Update test so that it can be used to test
- IPv6 TCP sockets
- - apps/examples/udp: The UDP test example has been extend to support
- IPv6 domain sockets
- - apps/nshlib: Add logic to initialize IPv6 addresses
- - apps/nshlib: Add the ping6 command to support checking IPv6 networks.
- - apps/nshlib: Clean up network status presentation for IPv6
- Efforts In Progress. The following are features that are partially
- implemented but present in this release. They are not likely to be
- completed soon.
- * IPv6. While basic IPv6 support was completed in NuttX-7.7,
- there are lingering issues with getting IPv6 compatibility
- with applications and network utilities.
- * Processes. Much of the work in this release is focused on the
- realization of Unix-style user processes in NuttX. There is more to
- be done, however. The full roadmap and status is available at:
- http://www.nuttx.org/doku.php?id=wiki:nxinternal:memconfigs#the_roadmap_toward_processes
- * XMega: There are some fragments in place for an XMega port. That
- port has not really started, however.
- * Galileo: Similarly, there are fragments in place for an Intel Galileo
- port. The port probably will not happen (I gave my Galileo board away!).
- Bugfixes. Only the most critical bugfixes are listed here (see the
- ChangeLog for the complete list of bugfixes and for additional, more
- detailed bugfix information):
- * Core OS:
- - POSIX message queues: msg type should be char * not void * in
- mq_send, mq_timedsend, mq_receive, and mq_timedreceive. Noted by
- Pierre-Noel Bouteville
- - POSIX message queues: In message queue creation return ENOSPC error
- if size exceeds the configured size of pre-allocated messages; Use
- ENOSPC vs ENOMEM per OpenGroup.org. From Pierre-Noel Bouteville.
- - Task Names: strncpy() will not copy the terminating \0 into the
- destination if the source is larger than the size of the
- destination. Ensure that the last byte is always zero and let
- strncpy() only copy CONFIG_TASK_NAME_SIZE bytes. The issue of
- unterminated names can be observed in ps when creating a pthread
- while CONFIG_TASK_NAME_SIZE is set to 8. From Daniel Willmann
- * Memory Management:
- - Granule allocator: Fixes some issues found by the PX4 team using
- Coverity. From Pavel Krienko
- * Networking:
- - Several fixes correcting issues with the CC3000 networking. From
- Jussi Kivilinna
- - CC3000 Fix: Data can be unaligned. When dereferenced as an input
- ntosh(), a bad value is returned. Reported by Alan Carvalho de
- Assis
- - Correct naming of fields in struct sockaddr_in6: sin6_port and
- sin6_family, not sin_port and sin_family.
- - accept(): Correct the value returned by accept() in the case where
- net_lockingwait() is called. It was returning -1 and losing the
- errno value. Noted by Rony Xln
- * Common Drivers:
- - Loop device should return -EINTR is interrupted by a signal.
- - M25P serial flash driver: Add subsector size of the M24P16 part.
- From Lazlo
- - Common serial driver: In case a thread is doing a blocking operation
- (e.g. read()) on a serial device, while it is being terminated by
- pthread_cancel(), then uart_close() gets called, but the semaphore
- is still blocked. This means that once the serial device is opened
- next time, data will arrive on the serial port (and driver
- interrupts handled as normal), but the received characters never
- arrive in the reader thread. The problem was fixed by re-
- initializing the semaphores on the last uart_close() on the device.
- From Harald Welte
- - Pipes: Fixes some issues found by the PX4 team using Coverity. From
- Pavel Krienko
- - CDC/ACM driver: Fixes some issues found by the PX4 team using
- Coverity. From Pavel Krienko
- * NXP LPC43xx Drivers:
- - LPC4357: Changes required to get USART 2 & 3 working on the
- lpc4357-evb. From Toby Duckworth.
- * STMicro STM32:
- - Several fixes correcting issues with the STM32 header files from
- Jussi Kivilinna
- * STMicro STM32 Drivers:
- - Ported Tridge's STM32 I2C noise resilience logic from the PX4
- repository.
- - STM32 F2 and F4: Set the GPIO_SPEED_50MHz on all F2 and F4 SPI pin
- configurations. This is based on an F411 SPI1 errata but the fixed
- is generalized to all SPI and all F2 and F4. Discovered and fixed
- by Sebastien Lorquet.
- - Fix for STM32 OTGHS device driver working in FS mode. From Ken
- Pettit.
- - For STM32 OTG HS DEV (in FS mode): Disable ULPI clock enable in RCC
- AHB1 Register. If Both ULPI and the FS clock enable bits are set in
- FS mode, then the ARM never awakens from WFI due to a chip issue.
- This is only an issue if you are using the internal PHY. From Ken
- Pettit.
- - STM32 F429 LTDC: Add missing clut register definition. From Marco
- Krahl
- - STM32 serial: fix declaration and definition of up_receive() and
- up_dma_receive() to match fields in the interface definition of
- struct uart_ops_s. From Freddie Chopin.
- * TI Tiva Drivers:
- - Fix Tiva IRQ control logic; was limited to only 64 IRQs. That is a
- problem for higher numbered IRQs on many platforms
- * C Library/Header Files:
- - avsprintf(): Fix a bug in usage of va_list on x86. On x86,
- va_list is a pointer to a single copy on the stack. avsprintf()
- calls lib_vsprintf() twice and so traverses the va_list twice using
- va_start. va_start modifies that single copy on the stack so that
- the second call to lib_vsprintf() fails. This appears to be an
- issue with x86 only so far.
- - stdint.h: Don't use hex values to specify minimum values of fixed
- width, signed values. Hex values are inherently unsigned and not
- usable for this purpose in all contexts.
- - strncpy(): Would trash a lot of memory if n == 0. From Yasuhiro
- Osaki.
- - sscanf(). Accept %X and %F as well as %x %f as a format specifiers.
- From Sébastien Lorquet
- * Applications:
- - apps/examples/romfs: fix romfs example builtin app registry issue.
- From Librae
- - apps/system/cdcacm, composite and usbmsc: Fix some strangely placed
- conditional compilation. Looks like an automated update went awry
- - apps/netutils/telnetd: Add protection when CONFIG_SCHED_HAVE_PARENT
- is enabled: Call sigaction with SA_NOCLDWAIT so that exit status is
- not retained (no zombies) and block receipt of SIGCHLD so that
- accept is not awakened by a signal. If accept() is awakened by a
- signal, do not do anything crazy like exit. Most from Rony Xln
- - apps/nshlib/: NSH TFTP get command: Wrong file name used for the
- destination. From Lazlo
- NuttX-7.8
- ---------
- The 108th release of NuttX, Version 7.8, was made on February 11, 2015,
- and is available for download from the SourceForge website. Note
- that release consists of two tarballs: nuttx-7.8.tar.gz and
- apps-7.8.tar.gz. Both may be needed (see the top-level nuttx/README.txt
- file for build information).
- This release is primarily a bugfix release for the NuttX-7.7 version that
- was release just two weeks prior. That release included substantial
- modifications in the NuttX networking to accommodate support for IPv6. This
- release follows close behind NuttX-7.7 in order to correct some the problems
- discovered in that networking code. This release does, however, include a
- small number of new features and bug fixes unrelated to NuttX networking.
- Additional new features and extended functionality:
- * Core OS:
- - Tickless Mode: added limit of maximum delay that can be request
- by the scheduler tickless logic. This is necessary so that the
- tickless logic does not request a delay beyond the capability of the
- underlying hardware. From Macs Neklyudov.
- * Common Drivers:
- - VFS Unlink: Add an unlink method to both the character and block
- driver interface. This is important because if the driver inode is
- unlinked and there are no open references to the driver, then the
- driver resources will be stranded. On the unlink call, the driver
- has the opportunity (1) check if there an any open references, and
- if not, (2) free the driver resources.
- - Pipes and FIFOs: Implement the unlink method. If the pipe/FIFO is
- unlinked, it will marked the pipe/FIFO as unlinked. If/when all
- open references to the driver are closed, all of the driver
- resources will be freed.
- - Added an option to use the syslog'ing device as the system console.
- This option enables a low-level, write-only console device at
- /dev/console (similar to the low-level UART console device). From
- Pierre-noel Bouteville.
- * File Systems/Block Drivers/MTD:
- - RAM/ROM disk: Add logic to dispose of the driver and RAM buffer
- when the RAM disk has been unlinked and all open references to the
- RAM disk have been closed. Add new parameters to romdisk() to
- specify what should be done with the RAM/ROM buffer in this case --
- Should it be freed or not? Changed all calls to ramdisk() to use
- these new parameters.
- * Networking:
- - Add support for local, Unix domain sockets. Support included for
- both SOCK_STREAM and SOCK_DGRAM style local socket.
- - UDP enhancement: Add UDP read-ahead support. In addition to
- eliminating the main reason for lost UDP packets, then change
- enables support for for poll/select on UDP sockets and also non-
- blocking UDP sockets. From Macs Neklyudov.
- - SLIP interface improvements. From Macs Neklyudov.
- - IPv6 Neighbor Solicitation: Added logic to support verification
- that we have the IPv6 address in the Neighbor Table before sending
- any packets. If not, then the Neighbor Solicitation message is
- sent. This feature is important because otherwise the first packet
- sent to a remote peer will fail (it would have been replaced with a
- Neighbor Solicitation).
- - IPv6 Autonomous Auto-Configuration: Added support for sending
- ICMPv6 Router Solicitation and receiving Router advertisement. The
- local IPv6 address, mask, and router address are then auto-configured
- from the response..
- - IPv6 Router Support: Add logic to behave like a router (if so
- configured) only in the sense that NuttX will send the router
- advertisement message in response to any received router solicitation
- messages. Thus, one NuttX node in a network can configure the IPv6
- addresses of all other nodes in the network.
- - Optional IPv6 address filtering added to all Ethernet drivers for
- the all-routers multicast address.
- * Atmel AVR:
- - Added architecture support for the Atmel AVR ATMega1284P MCU. From
- Jedi Tek'Unum.
- * Atmel AVR Boards:
- - Added support for the LowPowerLab MoteinoMEGA that is based on the
- Atmel AVR ATMega1284P MCU. From Jedi Tek'Unum.
- * Atmel SAMA4:
- - Add support for Tickless mode of operation for the SAM4CM platform.
- From Macs Neklyudov.
- * Atmel SAMA4 Drivers:
- - Ethernet: The SAM4E Ethernet driver can now be configuration to
- perform all network processing on the work queue. This greatly
- reduces the amount of interrupt level processing to service Ethernet
- packets.
- - SAM4E Ethernet: Add support multicast address matching and IPv6.
- * Atmel SAMA4 Boards:
- - SAM4E-EK: The nsh configuration now configures the Ethernet driver
- for execution on the work thread.
- * Atmel SAMA5D Drivers:
- - SAMA5D4 Ethernet: The SAMA5D4 Ethernet driver can now be configuration
- to perform all network processing on the work queue. This greatly
- reduces the amount of interrupt level processing to service Ethernet
- packets.
- - SAMA5D3 and SAMA5D4 Ethernet: Add support multicast address matching
- and IPv6.
- * Atmel SAMA5D Boards:
- - SAMA5D4-EK; Added a configuration to testing IPv6.
- - SAMA5D4-EK: Converted the nsh and ipv6 configurations to configure
- the Ethernet driver to use the work queue (vs. interrupt level
- processing).
- * Freescale KL:
- - Add architectural support for the K26Z128VLH4 chip. From Derek B. Noonburg.
- * Freescale KL Boards:
- - Add board support for the Freedom KL26Z board. From Derek B. Noonburg.
- * NXP LPC17xx Drivers:
- - Ethernet: Add support multicast address matching and IPv6.
- * SiLabs EFM32:
- - Add configurable option to unconditionally enable LE clocking. Even
- you don't use core clock LE as source for LFA or LFB, to read are
- write any register not clocked by HFPERCLK or HFCORECLK, HFCORECLKLE
- should be enabled. From Pierre-noel Bouteville.
- * SiLabs EFM32 Drivers:
- - EFM32 RTC: RTC driver using BURTC. From Pierre-Noel Bouteville.
- * STMicro STM32 Drivers:
- - AES: Add driver for STM32L162XX AES peripheral. From Juha Niskanen.
- - Ethernet: The STM32 Ethernet driver can now be configuration to
- perform all network processing on the work queue. This greatly
- reduces the amount of interrupt level processing to service Ethernet
- packets.
- - Ethernet: Add support multicast address matching and IPv6.
- * STMicro STM32 Boards:
- - Added an IPv6 configuration for the STM32F4-Discovery board (with the
- STM32-DISCO_BB base board).
- - Converted all STM32F4-Discovery configurations (with base board) to
- configure the Ethernet driver to use the work queue (vs. interrupt
- level processing).
- * TI Tiva Drivers:
- - Added support for TM4C123G timers. From Calvin Maguranis.
- - Added a Tiva ADC driver. From Calvin Maguranis.
- * TI Tiva Boards:
- - Added TM4C123G timers on the TM4C123G Launchpad. From Calvin Maguranis.
- - Added Tiva ADC support to the TM4C123G-Launchpad. From Calvin Maguranis.
- * C Library/Header Files:
- - Math Library: Added support for inverse hyperbolic functions,
- isfinite(), error functions, nan(), copysign(), and trunc()
- functions. From Brennan Ashton.
- * Applications:
- - apps/examples/ustream: Add a simple test of Unix domain stream
- sockets.
- - apps/examples/udgram: Add a simple test of Unix domain datagram
- sockets.
- - apps/netutils/netlib: Add utilities to convert to/from prefix
- lengths from/to 128-bit network masks.
- - apps/nshlib: Modify the NSH IPv6 ifconfig command to show the more
- standard post-pended prefix value, rather than the full 128-bit
- netmask.
- Efforts In Progress. The following are features that are partially
- implemented but present in this release. They are not likely to be
- completed soon.
- * Processes. Much of the work in this release is focused on the
- realization of Unix-style user processes in NuttX. There is more to
- be done, however. The full roadmap and status is available at:
- http://www.nuttx.org/doku.php?id=wiki:nxinternal:memconfigs#the_roadmap_toward_processes
- * XMega: There are some fragments in place for an XMega port. That
- port has not really started, however.
- Bugfixes. Only the most critical bugfixes are listed here (see the
- ChangeLog for the complete list of bugfixes and for additional, more
- detailed bugfix information):
- * Core OS:
- - Work Queues: Fix a backward calculation when determining the time
- to the next interesting event. . From Liio Chen via the PX4
- repository.
- - clock_systimespec(): Fixes for compilation errors in certain
- configurations. From Macs Neklyudov.
- * Graphics
- - Fixed a problem with one of the font files. From Pierre-noel Bouteville.
- * Networking:
- - IOB Deadlock: There were issues with the TCP write-ahead buffering
- if CONFIG_NET_NOINTS was enabled: There is a possibility of
- deadlocks in certain timing conditions: The network should never
- wait for TCP read-ahead buffering space to be available. It should
- drop the packets immediately if no buffering is available. This was
- fixed by duplicating most of the IOB interfaces: The versions that
- waited are still present (like iob_alloc()), but now there are non-
- waiting versions of the same interfaces (like iob_tryalloc()). The
- TCP read-ahead logic now uses only these non-waiting interfaces.
- - TCP Deadlock: Fix another deadlock when CONFIG_NET_NOINTS is enabled.
- tcp_write_buffer_alloc() calls sem_wait() with network locked. That
- worked if CONFIG_NET_NOINTS was not defined because interrupts are
- automatically restored when the wait happens. But with
- CONFIG_NET_NOINTS=y, the wait blocks with the network locked -- bad
- style and also can lead to a deadlock condition.
- - ARP response waiting: Fixes another CONFIG_NET_NOINTS issue. When
- called sem_timedwait() with the network locked, the network stays
- locked while we wait which is not what we want (without CONFIG_NET_NOINTS,
- interrupts are re-enabled while we wait and all is well).
- - TCP accept(): Fix a major TCP bug introduced with the NuttX-7.7
- IPv6 changes: Some connection logic was reordered; setting the
- socket as 'connected' got moved to BEFORE the point where the check
- was made if the socket was already connected. The resulting behavior
- was odd: Telnet would connect, but then when you exit and reconnect,
- it would fail to connect. But then if try again, it would connect
- okay. So the symptom was connect-fail-connect-fail-...
- - Lots of build problems introduced into multiple NIC support with the
- IPv6 changes of NuttX-7.7. Many places where conditional logic based
- on CONFIG_NETDEV_MULTINIC is confused with CONFIG_NET_MULTILINK.
- Lots of code changed with IPv6 that was never compiled with MULTINIC
- enabled.
- * Common Drivers:
- - Pipes and FIFOs: Fix a race condition between FIFO buffer operations
- and the opening and closing of FIFOs which necessary when the FIFOs
- are used to support Unix domain, datagram sockets. The default
- policy is the deallocate FIFO buffering when the last client closes
- the pipe. When when used for datagram communications, packets left
- in the FIFO will be lost. Some like UDP read-ahead is needed: The
- buffered data in the FIFO needs to be retained until the reader gets
- a chance to re-open the FIFO. Added an ioctl (PIPEIOC_POLICY) to
- control the buffer policy. Default (0) is the legacy behavior; Unix
- domain datagram logic sets the alternative policy so that the packet
- data persists after the FIFO is closed.
- - RAMTRON: Table of parts is not terminated properly if
- CONFIG_RAMTRON_FRAM_NON_JEDEC is not defined. Noted by David
- Sidrane.
- * All Architectures:
- - Removed all occurrences of up_maskack_irq() that disables interrupts
- with up_ack_irq() that only acknowledges the interrupts. This is only
- used in interrupt decoding logic. Also remove the logic that
- unconditionally re-enables interrupts with the interrupt exits. This
- interferes with the drivers ability to control the interrupt state.
- This is a necessary, sweeping, global change and unfortunately
- impossible to test.
- * ARM
- - ARMv7-A and ARMv7-M memcpy(): Optimized ARM assembly language
- memcpy's were not returning a value in R0 they are required to do.
- From David Sidrane.
- - ARMv7-A interrupt handler should not automatically re-enable interrupts
- on interrupt return. That interferes with the driver's ability to
- manage interrupts. Analogous change made to all other architectures
- as well (ARM7, ARM9, HC, SH, x86, z16, z80, etc,. See above.).
- * STMicro STM32:
- - GPIO Interrupts: Disabling any of EXTI 5-9 interrupts was disabling
- interrupts for all EXTI 5-9. Same issue with EXTI 10-15. From Jussi
- Kivilinna.
- * STMicro STM32 Drivers:
- - RTCC: Fix for recent changes that caused compilation failrues with
- STM32L15XX configurations. From Jussi Kivilinna.
- - SPI: The source clock for SPI 4,5, and 6 should be PCLK2, not PCLK1
- (for F411, F427, and F429). Per David Sidrane.
- * C Library/Header Files:
- - execl(): Fix bad logic in counting the number of arguments.
- execl() parameter passing could never have worked. Noted by
- Pierre-noel Bouteville.
- * Applications:
- - Fix for building with parallel make. Build-server sometimes failed
- 'make -j24' with errors in the builtin line or or sometimes silently
- succeeds but generated builds that contain a random subset of
- configured NuttX applications. There are two root causes for this:
- (1) Recipes for building builtin_list.h and builtin_proto.h are
- not linearizable, and (2) Nothing ensures that 'make context' is run
- first for apps/builtin. This change address both issues. From Juha
- Niskanen.
- NuttX-7.9
- ---------
- The 109th release of NuttX, Version 7.9, was made on April 14, 2015,
- and is available for download from the SourceForge website. Note
- that release consists of two tarballs: nuttx-7.9.tar.gz and
- apps-7.9.tar.gz. Both may be needed (see the top-level nuttx/README.txt
- file for build information).
- Additional new features and extended functionality:
- * Core OS:
- - Assertions: Add support for dumping board-specific information on
- assertions. From David Sidrane.
- - boardctl(): : Add a new non-standard OS interface called boardctl().
- This is similar to a driver IOCTL call. But this is an IOCTL call
- directly on the board logic. This function will eventually replace
- all of the ad hoc OS interfaces that are current used to perform
- application specific initialization and application driver test
- configuration. It essentially formalizes and institutionalizes
- these rogue interface in to at least a single crazy call.
- * Graphics:
- - Line Joins: Line drawing graphic functions now take an argument that
- will draw a circular "cap" on the ends of lines to support cleaner
- joining of lines segments..
- * Common Drivers:
- - SPI iInterface: Add an SPIDEV_USER so that there can be board-
- specific definitions of SPI devices.
- - I2C Interface: Add a user provided void * argument to the I2C
- callback method for the I2C slave interface. Suggested by Nate
- Weibley.
- - AT24 EEPROM Driver: Add support for (1) the byte-oriented read()
- method, (2) devices that have extended memory regions, and (3)
- devices that use 8-bit addressing.
- - Freescale MPL115A barometer: Add driver for the Freescale MPL115A
- barometer. From Alan Carvalho de Assis.
- - CS2100-CP: Add a driver for the CS2100-CP Fractional-N Multipler
- chip.
- - RTC IOCTls: Added the definitions of a driver based RTC interfaces
- and RTC upper half driver.
- * File Systems/Block Drivers/MTD:
- - umount2(): Added to support un-mount flags. umount() is now a macro
- that just calls umount2() with flags = 0.
- - File system interface: Pass the umount2() flags to every unbind()
- implementation. That is where the decision to umount or not and how
- to umount will be made.
- - FAT unbind: Add support for umount2(target, MNT_FORCE) in the FAT
- file system.
- * Networking:
- - netdev_register(): Improve the network device registration logic.
- When multiple link types are used, modify how each interface number
- is assigned to the device name by incrementing the device number
- individually for each interface link type. From Max Neklyudov.
- - Add TUN network device. Used to support the Netutils PPPD
- implementation. From Max Neklyudov.
- * ARMv7-M
- - ARM Cortex-M7: Add basic support for the Cortex-M7 architecture.
- - ARMv7 Common Lazy Exception handling. Add common support for lazy
- FPU state saving. MCU-specific lazy FPU saving was already in place.
- This change just makes the code share-able.
- * Atmel SAMA5D3/4 Drivers:
- - SAMA5 Serial: Backport support for flowcontrol and termios from
- SAM3/4.
- * Atmel SAMV7:
- - Atmel SAMV7: Add architecture support for the Atmel SAMV7 family
- (Cortex-M7)
- * Atmel SAMV7 Boards:
- - Atmel SAMV71 Xplained Ultra: Add board support for this SAMV7 board.
- This initialize release includes support for: SDRAM, TWI/I2C, SPI,
- Ethernet, HSMCI, DMA, GPIOs, UARTs, AT24 EEPROM and the maXTouch
- Xplained Pro LCD. Drivers are available for SSC/I2C, the WM8904,
- the maXTouch trouchscreen, and USB device but have not yet been
- fully integrated in this release.
- * SiLabs EFM32 Drivers:
- - EFM32 USB Device is now functional with the efforts of From Pierre-
- noel Bouteville.
- - EFM32 I2C: Add I2C driver. From Pierre-noel Bouteville.
- * STMicro STM32:
- - STM32F372/F373: Adds architecture support for this STM32 parts.
- Tested on STM32F373CC. Contributed by Marten Svanfeldt.
- * STMicro STM32 Drivers:
- - STM32 RTCC: Break out a new internal interface, stm32_rtc_setdatetime().
- This eliminates some un-necessary time conversions. From Freddie Chopin.
- - STM32 RTCC: Add an implementation of the RTC lower half interface
- for the STM32.
- - STM32 RTCC: Extend the RTC interface to support reading subseconds.
- From Jussi Kivilinna.
- - STM32 BBSRAM: Adds the ability to use the STM32F2 and STM32F4 Battery
- Backed SRAM in the file system. With an option to Save Panic context
- to one of the files. From David Sidrane.
- * STMicro STM32 Boards:
- - Olimexino-STM32: Board support for the Olimexino STM32 board from David
- Sidrane.
- - Viewtool-STM32F107: Add support for an optional, add-on Freescale
- MPL115A baramoter. From Alan Carvalho de Assis.
- * TI Tiva:
- - TM4C1294: Add support for the TM4C1294. Contributed by Frank Sautter.
- * TI Tiva Drivers:
- - Tiva ADC: Updated files to allow for ADC and PWM triggering by a
- timer. Refactoring of ADC implementation. From Calvin Maguranis.
- - Tiva Timer: Refactoring by Calvin Maguranis
- * TI Tiva Boards:
- - TM4C123G-launchpad: Add ADC support. From Calvin Maguranis.
- - TM4C123G-launchpad: Add board button interrupt support. From Calvin
- Maguranis.
- - TM4C1294 Launchpad: Add support for the TM4C1294 Launchpad.
- Contributed by Frank Sautter.
- * Microchip PIC32
- - PIC32MZ: Add architectural support for the PIC32MZ (MIPS32 M14k).
- Includes contributions from Kristopher Tate.
- * Microchip PIC32MZ Boards
- - PIC32MZ Starter Kit: Add basic board support for the PIC32MZ.
- Includes contributions from David Sidrane.
- * C Library/Header Files:
- - gettimeofday(): This function is no longer a core OS interface. It
- is only a wrapper around clock_settime().
- - settimeofday(): Added. gettimeofday has been deprecated in POSIX
- 2008. settimeofday() was never part of POSIX, but I decided to add
- it to libc as well just for symmetry.
- - Day-of-Week: Add CONFIG_TIME_EXTENDED to support the last 3 members
- of the tm struct and support for filling them in with the day of the
- week. From David Sidrane.
- - sighold(), sigrelse(), sigignore(), sigset() and sigpause(): New
- signal handling functions.
- - sys/select.h: Extend the fd_set type definition so that it can
- handle more than 32 descriptors (if so configured). From Max
- Neklyudov.
- - netdb.h: Add a mostly-commented-out version of the standard netdb.h
- header file.
- - include/nuttx/board.h: Remove common board function prototypes from
- other files and consolidate them in this new header file.
- * Applications:
- - OS test: Improved error checking for sem_timedwait() from Juha
- Niskanen.
- - OS test: Add a simple test of sigprocmask, sighold, and sigrelse.
- - PPPD test: Add PPPD test case. Split out from the PPPD daemon by
- Brennan Ashton.
- - Netutils: Add a PPP daemon. From Max Neklyudov.
- - NSH: NSH initialization now calls boardctl(BOARDIOC_INIT) instead
- of nsh_archinitialize(). Remove support for CONFIG_NSH_ARCHMAC.
- It is not used and there are better ways to do that operation.
- - NSH: Allow NSH 'date' command with no hardware RTC. This command
- is useful without an RTC too. Also, this permits testing on the
- simulator which never has an RTC.
- - apps/examples/: Several tests changed (touchscreen adc, pwm,
- graphics). No longer call directly into the OS, but rather
- indirectly via boardctl().
- - Modbus: Includes extensions to support RTU master mode by
- Armink(383016632@qq.com): https://github.com/armink/FreeModbus_Slave-Master-RTT-STM32.
- Ported to NuttX by Darcy Gong.
- - TZ database: All logic to build timezone database needed for
- localtime() support. Does not do much else yet.
- Efforts In Progress. The following are features that are partially
- implemented but present in this release. They are not likely to be
- completed soon.
- * Processes. Much of the work in this release is focused on the
- realization of Unix-style user processes in NuttX. There is more to
- be done, however. The full roadmap and status is available at:
- http://www.nuttx.org/doku.php?id=wiki:nxinternal:memconfigs#the_roadmap_toward_processes
- * XMega: There are some fragments in place for an XMega port. That
- port has not really started, however.
- Bugfixes. Only the most critical bugfixes are listed here (see the
- ChangeLog for the complete list of bugfixes and for additional, more
- detailed bugfix information):
- * Core OS:
- - atexit(): Fix compile failure due to reference to undefined variable
- in certain configurations. From Juha Niskanen.
- - syscalls: Last changes to message queue prototypes did not make it
- into call gate logic. Some additional errors had crept as well since
- the system calls are seldom used.
- - waitpid(): Do not use uninitialized boolean in waitpid(). From Juha
- Niskanen.
- - Timing functions: Fix some nanosecond comparisons. Comparisons should
- be greater than OR EQUAL TO 1000000000 for maximum value of nanoseconds
- in struct tm. From Juha Niskanen.
- - Time initialization: Fix an error in time initialization when there
- is no RTC and the time is initialized from a fixed configured value.
- The call to clock_calendar2utc() was returning the time in units of
- seconds. The initialization logic, however, was expecting to get
- time in units of days. This problem has been there forever but
- obviously has not significant impact to behavior in systems where
- time is not visible.
- - mq_timedsend(): Should not check for valid time if there is space
- in the message queue. Noted by Freddie Chopin.
- - select() and sem_timedwait(): Fix places where the errno value was
- being overwritten by subsequent actions so that the returned errno
- value was incorrect. From Max Neklyudov.
- - clock_systimer64(): Fix a problem in clock_systimer64 that occurs
- when (1) the 64-bit system time is enabled, and (2) the value of
- CONFIG_USEC_PER_TICK is less than 1 milliseconds (such as when using
- the tickless mode of operation). In that case, the conversion of
- time to 64-bit millisecond value in clock_systmer64() causes some
- bad times to be returned. Time was converted to milliseconds, then
- to configured ticks. Precision was lost in the millisecond
- conversion. The fix is to first convert time to a 64-bit microsecond
- value, then to the configured tick value. Noted by David Sidrane.
- - clock_systimespec(): When an RTC is used clock_systimespec() must
- subtract the basetime from the returned time. It needs to return
- the time since power up, no the current time. Issue noted by Max
- Neklyudov.
- - AIO: correct some backward tests in aio_read() and aio_write():
- Socket descriptors have higher numbers than file descriptors. In
- aio_contain(), Copy u.ptr (void *) when initializing aioc and not
- the case specific u.aioc_filep. From Michal Ulianko.
- * File Systems/Block Drivers/MTD:
- - procfs: Fix potential NULL pointer dereference of 'node'. From
- Juha Niskanen.
- - FAT: fat_unbind() was accessing 'fs->fs_sem' after freeing the 'fs'
- struct. From Juha Niskanen.
- - mkfatfs: Use DMA memory for mkfatfs when needed. This makes mkfatfs
- use fat_dma_alloc() when CONFIG_FAT_DMAMEMORY is set. This is needed
- to ensure mkfatfs operates with boards that use DMA for microSD.
- From Andrew Tridgell via the PX4/NuttX repository.
- - FAT unmount: Fix a bug in the FAT unbind() logic. There were
- problems with the way certain internal list handling was
- implemented. The end result is that newly opened or cloned file
- structures were never being added to the list of open files. So
- when the unmount() happens, it always looked like there were not
- open files and a crash could ensue.
- - FAT mounting: Fix misthink when CONFIG_ENDIAN_BIG=y. From Lwazi Dube.
- * Common Drivers:
- - CAN upper half driver: Some lines had to be reordered in the can_open
- function otherwise the open count will only be incremented from 0 to
- 1. This caused problems when trying to open the can bus from two
- different tasks. SourceForge Patch #46.
- * Crypto:
- - crypto: Fix issues when AES support was added for the STM32L1.
- From Juha Niskanen.
- * Networking:
- - Network initialization: Divide net_intiialize() into net_setup() and
- net_initialize() to solve a chicken-and-egg problem. net_setup()
- must be called before up_initialize() is called so that networking
- data structures are ready to register new network devices.
- net_initialize() now does only timer related operations and is
- called AFTER up_initialize() where the timers are configured.
- Problem noted by Max Neklyudov.
- - netdev_unregister(): Fix a list handling error. From Max Neklyudov.
- - Socket dup: Do not call sockfd_socket() twice. From Juha Niskanen.
- * Common Drivers:
- - max11802 touchscreen: Fix possible unmatched IRQ restore (not
- normally a problem, but could happen in certain configurations).
- Noted by Juha Niskanen.
- - MMCSD SPI Multi-block transfers: ACMD23 must be preceded with CMD55
- command as any other ACMD commands. Also, after the block reading
- wait loop must be inserted before writing the next block of data to
- the sd card. From Dmitry Nikolaev via Jussi Kivilinna.
- - MMCSD SDIO: Fix some bad logic when file system debug is turned on:
- Arguments to syslog were missing so that garbage was being printed.
- - Common upper-half serial driver: Report correct number of bytes free
- in serial buffer with FIONWRITE. From Sami Pelkonen via Jussi Kivilinna.
- - Pipes/Fifos: Fix zero-lenth writes to pipes/FIFOs. From Jussi Kivilinna.
- - USB device MSC: Add NULL pointer check. From Juha Niskanen.
- - BCH driver: Avoid NULL pointer dereference when bch->refs == 255.
- From Juha Niskanen.
- - Various drivers: The inode unlink method should not be support if
- operations on the root pseudo-filesystem are disabled.
- * ARMv7-M
- - ARMv7M MPU: Bad syntax in ARMv7-M MPU logic would cause failure to
- write the correct value to the MPU_RASR register. From Juha Niskanen.
- * Atmel SAM3/4 Drivers:
- - SAM3/4 Serial TERMIOS: A side-effect of changing serial settings
- via TERMIOS (such as tcsetattr) is that serial interrupts were being
- left disabled. This is not a problem if the serial configuration is
- changed when there are no open references to the serial device. In
- that case, serial interrupts are disabled and will not be enabled
- enabled until the serial device is first opened. But it is fatal if
- the serial device is already opened and if there is a task waiting
- to receive data. In that case, the side-effect of disabling
- interrupts is fatal: That task is then left hanging with interrupts
- disabled.
- - SAM3/4 Serial: The IMR register is read-only. This means that
- sam_restoreints() did not actually re-enable UART interrupts
- (Fortunately, that function was not being used up to this point).
- - SAMA5 HSMCI: Fix a bug in SAMA5 HSMCI. The bitfield mask and shift
- values were reversed resulting in a trashed value for the number of
- blocks in the BLOCKR register. This was sufficient to prevent DMA
- writes from working.
- * Atmel SAMA5 Drivers:
- - SAMA5 Timer/Counter: Fix typos in timer/counter header file. From
- Bob Doiron.
- * STMicro STM32 Drivers:
- - STM32 PWR and RTC: Changes to support fully write protecting the
- backup domain. N.B. stm32_pwr_enablebkp did not account for the delay
- from enable to the domain being writable. The KISS solution is a
- up_udelay. A more complex solution would be a negated write test
- with restore. From David Sidrane.
- - STM32 SPI: Add missing SPI callback functions to the STM32 SPI
- driver. From Freddie Chopin.
- - STM32 I2C: Add missing NULL check. From Juha Niskanen.
- - STM32 USB device: Fix stale initialization invalidating later NULL
- check. From Juha Niskanen.
- - STM32 UART: Fix RX DMA setup for UART5. From Jussi Kivilinna.
- - STM32 UART: Make input hardware flow-control work with RX DMA. From
- Jussi Kivilinna.
- - STM32 RTC and clock control: The STM32F4Discovery board doesn't
- come with a Low speed external oscillator so the default LSE source
- for the RTC doesn't work. In stm32_rtcc.c the up_rtc_initialize()
- logic doesn't work with the LSI. The check on RTC_MAGIC on the BK0R
- register lead to rtc_setup() call that rightfully enables the LSI
- clock; but the next times, when the rtc is already setup, the
- rtc_resume() call does NOT start the LSI clock! The right place to
- put LSE/LSI initialization is inside stm32_stdclockconfig() in
- stm32fxxxxx_rcc.c. Doing this I checked the possible uses of the
- LSI and the LSE sources: the LSI can be used for RTC and/or the
- IWDG, while the LSE only for the RTC (and to output the MCO1 pin).
- This change is not verifed for any other platforms. From Leo
- Aloe3132
- * Tiva Drivers:
- - Tiva GPIO driver needed small fixes in the configuration routines and
- discovered false-positive bugs in interrupt testing: interrupts are
- now verified to actually be working reliably. From Calvin Maguranis .
- * MIPS32:
- - mips32/Toolchain.mk: Current Pinguino toolchain uses the prefix p32-
- instead of mips-.
- * C Library/Header Files:
- - sigaddset() and sigdelset(): Need to set errno if a bad signal
- number is received.
- - sfrtime(): Missing implementation of %C in sfrtime() C (was being
- treated as %y). From Freddie Chopin.
- - pthread.h: Fix PTHREAD_COND_INITIALIZER.
- - ungetc.c: Fix NULL pointer dereference in ungetc() if 'stream' was
- NULL, 'stream->fs_oflags' was evaluated. From Juha Niskanen.
- - Fixes to asinh(), atanh(), and sinh(): The 'basic' expansions all
- exhibited bad cancellation errors near zero (<= 1E-10). This can be
- easily seen e.g. with x = 1E-30, the results are all zero though they
- should be extremely close to x. The cutoff values (1E-5, 1E-9) are
- chosen so that the next term in the Taylor series is negligible (for
- double). Functions could maybe be optimized to use only first term (x)
- and a smaller cutoff, just bigger than where the cancellation occurs
- - localtime(): Inconsistent configuration name: CONFIG_LIBC_TZDIR vs
- CONFIG_LIBC_TZ_TZDIR. Former wins.
- * Applications:
- - Modbus: Fix some compile problems when TCP is enabled.
- NuttX-7.10
- ----------
- The 110th release of NuttX, Version 7.10, was made on June 9, 2015,
- and is available for download from the SourceForge website. Note
- that release consists of two tarballs: nuttx-7.10.tar.gz and
- apps-7.10.tar.gz. Both may be needed (see the top-level nuttx/README.txt
- file for build information).
- Additional new features and extended functionality:
- * Binary Loader:
- - ARMv-7M, binfmt/, STM32: Add support uClibc++ exceptions. This
- involved additional handling for relative relation types, additional
- support for unwinding, as well as additional changes. The
- culmination of a big effort from Leo Aloe3132.
- * Graphics/Graphic Drivers:
- - RA8875 LCD driver contributed by Marten Svanfeldt.
- * File Systems/Block Drivers/MTD:
- - Union File System: Add support for a union file system that can be
- used to overlay and merge the content of two mounted file systems.
- * USB Host:
- - USB Hub Support: Bring in USB hub-related files from
- https://github.com/kaushalparikh/nuttx. This is the work of Kaushal
- Parikh. This is quite a bit more hub logic was needed in before the
- USB hub support was fully functional. This involved changing many
- USB host controller driver interfaces and modifications to many
- drivers.
- - USB host CDC/ACM class driver: Added initial implementation of a
- host-side CDC/ACM driver. Initial version was a great learning
- experience, but probably should be partially redesigned (as
- discussed in the top-level TODO file).
- - IPv6 Routing: Complete implementation of the IPv6 routing logic.
- From Max Neklyudov.
- * Networking:
- - Local Sockets: Add poll support for Unix stream sockets. From Jussi
- Kivilinna.
- - net/: ARP, ICMP, ICMPv6, PKT, TCP, and UDP now all receive event
- notifications from both network device packet processing, but now
- also from Device-specific events such as when the network goes down.
- The device notification callback structure is now supports dual
- linkages so that the client can receive notifications from both
- source; The device structure now includes a list of clients that
- want to receive device related notifications. This prevents network
- actions from hanging when the device goes down and will be an
- essential part of future support for removable network devices.
- Some of the core logic was contributed by Max Neklyudov.
- - TUN: Misc. improvements to the TUN driver, mostly related to poll().
- Also several bugfixes. From Max Neklyudov.
- * Simulation Platform:
- - Simulator: Add logic to test localtime and TZ database. See
- apps/system/README.txt for info.
- - Simulation: Add a configuration for testing the Union File System.
- * Calypso:
- - Calypso Compal-E86: Updates for execution out of FLASH on the C139
- phone. From Craig Comstock.
- * Atmel SAMD/L:
- - SAML21 Support: And chip definitions, configuration framework,
- memory map and pin configuration files for SAML21 support.
- * Atmel SAMD/L Boards:
- - SAML21-Xplained: Add a board support for the SAML21 Xplained Pro.
- This is based on the similar SAMD20 Xplained Pro board.
- * Freescale/NXP KL:
- - KL25Z64: Added support for the KL25Z64. The KL25Z64 is a lower
- memory variant of the KL25Z128 and is used on the Teensy LC. From
- Michael as SourceForge patch 50.
- * Freescale/NXP KL Boards:
- - Teensy-LC: Add board support for the Teensy LC board. Support is
- based off the Freedom KL25Z board. LED, PWM, and UART0 have been
- tested. The SPI pins are mapped correctly but have not yet been
- tested. From Michael Hope as SourceForge patch 51.
- * NXP LPC111x:
- - LPC111x: Support for the LPC11xx family (the LPC1115 MCU in
- particular). Contributed by Alan Carvalho de Assis.
- * NXP LPC111x Boards:
- - LPCXpresso LPC1115: Support for the LPCXpression LPC1115
- board. Contributed by Alan Carvalho de Assis.
- * NXP LPC17xx Drivers:
- - LPC17xx Ethernet: Add support for the Micrel KSZ8041 PHY to the
- LPC17xx Ethernet driver.
- * NXP LPC17xx Boards:
- - Lincoln60: Add a network enabled configuration for the Lincoln60
- board.
- * Atmel SAM3/4 Drivers:
- - SAM4CM: Add support for optical mode for the SAM4CM UART1. From
- Max Neklyudov.
- * Freescale (NXP) Kinetis:
- - Kinetis K20: Basic support for the Kinetis K20 architecture. Taken
- from PX4. This is the work of Jakob Odersky.
- * Atmel SAMV7 Boards:
- - SAMV71-Xplained w/maXTouch Xplained Pro: A TWIHS fix was the last
- barrier to getting the touchscreen working in the maXTouch Xplained
- Pro LCD. Added the NxWM integrated graphics demonstration
- configuration.
- * STMicro STM32:
- - STM32: Added support for STM32F302K8 and STM32F302K6. From Ben Dyer
- via PX4/David Sidrane.
- - STM32F205RG: Add basic support for the STM32F205RG. From SourceForge
- Ticket 40 (anonymous, 2015-05-31).
- - STM32 F3: Add DBGMCU register definitions for the F3 family. From
- Greg Meiste.
- * STMicro STM32 Drivers:
- - STM32 LCDC: Defined a second interface for the dma2d controller.
- LTDC only controls the display visibility but the DMA2D controller
- changes the content of the frame buffer (buffer of the layer). From
- Marco Krahl.
- - STM32 PVD: Added support for STM32's Programmable Voltage Detector
- (PVD) feature. By Dmitry Nikolaev, submitted by Juha Niskanen.
- * STMicro STM32 Boards:
- - STM32F429i-Disco: Add support for the new DMA2D features to the LTDC
- configuration. From Marco Krahl.
- * TI Tiva Boards:
- - TM4C1294 Launchpad: Added TM4C1294NCPDT EN0_LED2 (10/100-Base-Tx);
- removed all booster pack pin definitions. From Frank Sautter.
- * C Library/Header Files:
- - libc: Add an option to disable support for long long formats in
- lib_vsprintf(). On very tiny platforms, this reduces the footprint
- by omitting large libgcc.a libraries to perform the 64-bit
- arithmetic operations. From Alan Carvalho de Assis.
- * Applications: apps/system:
- - nuttx/zoneinfo: Add logic to build a ROMFS file system
- containing the timezone data.
- * Applications: apps/nshlib:
- - Add poll support for Unix stream sockets. From Jussi Kivilinna.
- - Enhancements to NSH ifconfig for case of multi-link operation, TUN
- device and local connections. From Max Neklyudov.
- - Enhanced output to NSH ping command from Max Neklyudov.
- - The NSH mount command now recognizes the Union filesystem type when
- listing mounted file systems.
- * Applications: apps/netutils:
- - apps/netutils/thttpd/ and apps/examples/thttpd/: Add support for
- using binfs/ with the Union FS instead of NXFLAT. NXFLAT is
- probably the better solution but recently compiler changes make it
- unusable. binfs or ELF are fallback binary formats. This commit
- adds an option to use binfs with the Union FS.
- * Applications: apps/examples:
- - Modify/simpify apps/examples build files. From Roman Saveljev.
- - apps/examples/ltdc: Add testing support for the STM32 LTDC's 2D DMA.
- From Marco Krahl.
- - apps/examples/ostest: Add a test of nested signals. There are no
- failures to handle signals but neither am I getting any nested signal
- handling.
- - apps/examples/elf: Add configuration options to support building the
- hello++4 example that depends upon having uClibc++ available. Also
- add hello++5 to the ELF example From Leo aloe3132.
- - apps/examples/unionfs: Add a test of the union file system to
- apps/examples.
- Efforts In Progress. The following are features that are partially
- implemented but present in this release. They are not likely to be
- completed soon.
- * Processes. Much of the work in this release is focused on the
- realization of Unix-style user processes in NuttX. There is more to
- be done, however. The full roadmap and status is available at:
- http://www.nuttx.org/doku.php?id=wiki:nxinternal:memconfigs#the_roadmap_toward_processes
- * XMega: There are some fragments in place for an XMega port. That
- port has not really started, however.
- Bugfixes. Only the most critical bugfixes are listed here (see the
- ChangeLog for the complete list of bugfixes and for additional, more
- detailed bugfix information):
- * Core OS:
- - boardctl(): Add missing case causing that caused failures of PWM
- test.
- - pthread_kill(): Re-implemented pthread_kill(). It was just a simple
- wrapper around kill() but since the correct dispatching of signals
- for multi-threaded task groups has been implemented, calling kill()
- does not do what pthread_kill() is supposed to do. The corrected
- implementation of pthread_kill() will direct the signal specifically
- to the specific pthread and no other.
- - uint32_t callbacks: Update the type passed to watchdog timer
- handlers. Using uint32_t is a problem for 64-bit machines because
- it it too small to pass a pointer. uintptr_t is a more appropriate
- type.
- - mq_timedreceive(): move the location where the errno value is set;
- the ETIMEDOUT errno setting was being overwritten by subsequent
- actions before returning. Noted by Freddie Chopin.
- - POSIX message queues: Move mq_setattr() and mq_getattr() from
- nuttx/libc/mqueue to nuttx/sched/mqueue. Also add syscall support
- for mq_setattr() and mq_getattr(). This is necessary in protected
- and kernel builds because in those cases the message queue
- structure is protected and cannot be accessed directly from user
- mode code.
- * File Systems/Block Drivers/MTD:
- - MTD: Increase the size of the fields in the geometry structure
- (again) to support larger FLASH sizes. Needed by Sebastien Lorquet.
- * Common Drivers:
- - poll(): Fix resource leak and memory corruption on poll failure.
- From Jussi Kivilinna.
- * USB Host:
- - LPC31xx and SAMA5Dx EHCI: Fix cache related problem in LPC31 and
- SAMA5Dx EHCI drivers. All buffers are now aligned with the cache
- line size in both starting address and in length. This cause major
- problems in unlucky builds where the USB host buffers where
- unaligned and abutting other data. The cache flush and invalidate
- operations could be subverted by accesses to adjacent data or could
- have unexpected side effects. This bug has been in the ECHI drivers
- forever, but was only revealed due to unlucky memory allocations
- during the integration of the hub feature.
- * USB Device:
- - All USB device class drivers: There needs to be a check to make
- sure that the size of a returned string does not exceed the size of
- the allocated request buffer. Strings such as vendor names or
- product names will be truncated to fit in the request buffer.
- * Networking:
- - TCP: Correct failures in long Telnet sessions by increasing th
- size of the number of bytes sent from uint16_t to uint32_t. This
- avoids an integer overflow that causes a long Telnet session to be
- closed unexpectedly. From Rony XLN.
- - Network locks: Correct some network lock logic: Two error
- conditions where the network was not being unlocked and one where it
- was getting unlocked twice. From Jussi Kivilinna.
- - Local Sockets: Local stream sockets had problem of double releasing
- pipes (both server and client attempt release), which causes wrong
- pipe pair being closed in multi-client case. Solve by adding per
- connection instance ID to pipe names. From Jussi Kivilinna.
- - TCP: Fix an important TCP networking bug: 16-bit flags was being
- converted to 8-bits in a few locations, causing loss of status
- indications.
- - TCP: net_startmonitor() always returned OK. In the race case
- where a socket has already been closed, it correctly handled the
- disconnection event but still returned OK. Returning OK caused the
- callers of net_startmonitor() to assume that the connection was
- okay, undoing the good things that net_startmonitor() did and
- causing the socket to be incorrectly marked as connected. This
- behavior was noted by Pelle Windestam.
- - setsockopt() failed when setting timeouts to values less tha 100
- msec. That is because the timeout is limited to stops of 1
- decisecond and because the conversion of structure timeval was
- truncating the microsecond remainder. The utility
- net_timeval2dsec() now accepts and option to determine how it
- handles the remainder: truncate, discarding the remainder, use
- the remainder to round to the closed decisecond value, or use any
- non-zero remainder to the next larger whole decisecond value. Bug
- discovered by Librae.
- - TCP: In the TCP connection operation, it was trying to setup the
- network monitor BEFORE the socket was successfully connected. This,
- of course, has ALWAYS failed because the socket is not yet connected
- and the TCP state is not yet correct for a connected socket. However,
- because of other changes net_startmonitor() now returns a failure
- condition that causes worse problems when trying to connect. The fix
- is to move the logic that starts the network monitor to AFTER the
- socket has been successfully connected.
- * Atmel SAM3/4 Drivers:
- - SAM4CM and SAMA5D Free-running timer: Logic that samples the free
- running counter reads the pending interrupt status register and can
- cause interrupts to be lost. So, if when the status register is
- read, the logic must also handle the timer overflow event. Found
- and fixed by Max Neklyudov.
- * Atmel SAMA5 Drivers:
- - SAM3/4 Serial: When reconfigured, serial does not receive bytes
- from UART. This happens because RX interrupt was disabled in the
- setup routine. Fixed this I save interrupt configuration before
- UART shutdown and restore it after. From Max Neklyudov.
- * NXP LPC17xx Drivers:
- - LPC176x GPIO: Reorder steps when an output GPIO is configured in
- order to avoid transient bad values from being output. From Hal
- Glenn.
- - LPC17 USB OHCI: Correct some initialization of data structures.
- When hub support is enabled, it would overwrite the end of an array
- and clobber some OS data structures.
- - LPC17xx Ethernet: Review, update, and modify the Ethernet driver so
- that it works better with CONFIG_NET_NOINTS=y. Also, update all
- LPC17xx networking configurations so that they have
- CONFIG_NET_NOTINTS=y selected.
- * SiLabs EMF32 Drivers:
- - EFM32 SPI: Add missing SPI GPIO pin initialization. From Pierre-noel
- Bouteville.
- * STMicro STM32:
- - STM32 F3: Added missing EXTI definitions for the STM32 F3; Correct
- an error the port D base address in the STM32 F30x and F37x memory
- maps. From Greg Meiste.
- * STMicro STM32 Drivers:
- - STM23 RTC: Fix an error introduced into stm32_pwr_enablebkp().
- That function must preserve the previous state of backup domain
- access on return.
- - STM32 RTC counter: Now need to enable backup domain write access
- when setting the time. From Darcy Gong.
- - STM32 OTG FS and HS: Added protection in the event that out-of-bound
- endpoint numbers are received. From David Sidrane.
- * STMicro STM32 Boards:
- - STM32F429i Disco: (1) Fix a bad return value if the LCD driver is
- already initialized. (2) The LCD driver initialization is now
- performed during the early boot sequence. (3) Increased the size
- of the message queue from 32 to 64 in the lcd configuration. From
- Marco Krahl.
- * TI Tiva
- - Fixes for Tiva TM4C1294NCPDT. From Frank Sautter.
- * Atmel SAMV71 Drivers:
- - SAMV7 TWIHS: Fix SAMV TWIHS logic that performs multi-message
- transfers with and without repeated starts.
- * Atmel SAMA5D3/4 Dirvers:
- - SAMA5 CAN: Fix SAMA5 CAN frame construction. From Max Holtzberg.
- * C Library/Header Files:
- - stdlib.h: MAX_RAND should be RAND_MAX.
- - assert.h: Wrap definitions of assertion macros in do while so that
- they are valid C statements. Numerous places throughout the code
- where semicolons were missing at the end of an assertion also had to
- be fixed. Suggested by orbitalfox.
- - inetntoa(): Correct errors in printing IP address when type char is
- signed and the value is >= 128. From Max Neklyudov.
- * Tools:
- - Tools: Fix test for the existence of the apps/ directory in
- configure.c. Fix backward interpretation of options, -l was selecting
- Windows and -w was selecting Linux. This was SourceForege Ticket #39.
- * Applications: apps/nshlib:
- - apps/nshlib/nsh_timcmds.c: Check return values from time functions.
- - apps/nshlib/: Fix handling of gmtime_r return value in time commands.
- gmtime_r returns a pointer, not an int.
- * Applications: apps/netutils:
- - apps/netutils/ntp: Fix mismatched sched_lock/unlock. Noted by Juha
- Niskanen.
- * Applications: apps/examples:
- - apps/examples/nxlines: Fix missing right bracket that causes
- compile error when CONFIG_NX_XYINPUT=y. From Librae.
- - apps/examples: When boardctl() fails, need to print errno not the
- returned value which will always be -1.
- - apps/examples: Correct use of the BOARDIOC_GRAPHICS_SETUP boardctl()
- call.
- NuttX-7.11 Release Notes
- ------------------------
- The 111th release of NuttX, Version 7.11, was made on August 13 2015,
- and is available for download from the Bitbucket.org website. Note
- that release consists of two tarballs: nuttx-7.11.tar.gz and
- apps-7.11.tar.gz. These are available from:
- https://bitbucket.org/patacongo/nuttx/downloads
- https://bitbucket.org/nuttx/apps/downloads
- Both may be needed (see the top-level nuttx/README.txt file for build
- information).
- Additional new features and extended functionality:
- * Core OS:
- - clock_gettime(): Use up_timer_gettime for CLOCK_MONOTONIC in
- tickless mode. From Max Neklyudov.
- - waitpid(): Implement WNOHANG for waitpid() only and for the case of
- CONFIG_SCHED_HAVE_PARENT not selected. From Max Neklyudov.
- - SCHED_SPORADIC: Add a sporadic scheduler to NuttX.
- - Extend the processor-specific interface to include information to
- support the Sporadic Scheduler.
- - sem_tickwait(): Added this function for internal use within the OS.
- It is a non-standard but more efficient version of sem_timedwait()
- for use in higher performance device drivers.
- * Binary Loader:
- * Graphics/Graphic Drivers:
- - Graphics: Implement anti-aliasing in order to clean the drawing of
- all edges. Anti-aliasing is supported in the horizontal, raster
- direction only.
- - SSD1306 LCD Driver: Modify the SSD1306 LCD driver to support either
- the SPI or I2C interface. From Alan Carvalho de Assis.
- * File Systems/Block Drivers/MTD:
- - mount: Add the ability to mount a file system on top of en existing
- node in the pseudo-file system.
- - epoll(): Add a very simple epoll layer just around poll calls. To
- satisfy build app requirements. From Anton D. Kachalov.
- * Common Device Drivers:
- - IOCTL: Add relay IOCTL definitions. From Max Neklyudov.
- - I/O Expander Framework: Add an I/O expander driver framework. From
- Sebastien Lorquet
- - NXP PCA9555 I/O Explander. Add PCA9555 driver.From Sebastien
- Lorquet
- - BMP180 Barameter: Add support to Bosch BMP180 barometer. From
- Alan Carvalho de Assis.
- - CAN IOCTLs: Add CAN IOCTL command definitions to manage CAN message
- filtering
- - CAN Driver: Add configuration to support DLC to byte conversions
- needed for CAN FD mode.
- - SPI Slave Interface: Add a definition of an SPI slave interface.
- - LM92 Temperature Sensor: Add a driver for the LM92 temperature
- sensor. Contributed by Paul Alexander Patience.
- - AS5048B Rotary Magnetic Sensor: Add support for an AS5048B rotary
- magnetic sensor. From Paul Alexander Patience.
- - Ramtron Driver: Update to include supportf for newer RAMTRON parts.
- From David Sidrane.
- - MB7040 Sonar Driver: Add support for a MB7040 sonar driver. From
- Paul Alexander Patience.
- - ms5805 Altimeter Driver: Add support for an MS5805 altimeter. From
- Paul Alexander Patience.
- * Networking:
- - DNS Client: Implement the low-level network DNS packet protocol to
- request and receive IPv6 address mappings.
- - NetDB: Add support for a DNS host name resolution cache. This can
- save a lot of DNS name server lookups (but might also have the
- negative consequence of using stale IP address mappings.
- - NetDB: Name resolution logic now supports lookups from a file like
- /etc/hosts.
- - Network Initialization: Add CONFIG_NETDEV_LATEINIT that can be
- used to suppress calls to up_netinitialize() from early in
- initialization.
- - FTMAC100 Ethernet MAC Driver. Add support for Faraday FTMCA100
- Ethernet MAC/ From Anton D. Kachalov.
- - UDP Networking: Add support for send() for connected UDP sockets.
- * Crypto:
- - Add CFB and MAC AES modes. From Max Neklyudov.
- * Simulation Platform:
- - Simulation: Implement board_power_off() for the simulation platform.
- This allows for a graceful exit from the simulation.
- * MoxaRT:
- - MoxaRT SoC: Add support for MoxaRT SoC found in the most Moxa serial
- converters such as NP51x0, NP66xx, UC72xx. From Anton D. Kachalov.
- * MoxaRT Boards:
- - Moxa NP51x0: Moxa NP51x0 series of 2-port advanced RS-232/422/485
- serial device servers. From Anton D. Kachalov.
- * ARMv6-M:
- - ARMv6-M Assertions: Port some per-process stack dumping logic from
- ARMv7-M to ARMv6-M. From Alan Carvalho de Assis.
- * Atmel SAMD/L Boards:
- - SAML21: DMA: Add SAML21 DMA support.
- - SAMD21: Add architecture support for the SAMD21 family.
- - SAMD21-Xplained: Board configuration for the SAMD21 Xplained board.
- * Atmel SAM3/4 Drivers:
- - SAM4E: Add default loop optimization if EEFC_FMR is available in the
- configuration (i.e., for SAM4S and 4E). From Marco Aurélio da Cruz.
- - crypto/ and SAM4CM: Add CFB and MAC AES modes. From Max Neklyudov.
- - SAM3/4: Add a TWI driver for the SAM4CM. From Max Neklyudov.
- * Freescale (NXP) Kinetis:
- - Kinetis: Add support for MK20DN--VLH5 and MK20DX---VLH5. Needed
- for backward compatible support for Teensy-3.0.
- * Freescale (NXP) Kinetis Boards:
- - Teensy 3.x: Add board support for the PJRC Teensy-3.0 and
- Teensy-3.1 boards.
- * Atmel SAMV7 Drivers:
- - SAMV7: Add an MCAN driver for the SAMV7 platform.
- - SAMV7 SPI Slave Driver: Add the an SPI slave driver.
- * STMicro STM32:
- - STMicro STM32 F7: Add architecture support for the STMicro STM32
- F7.
- - STM32 F446: Add support for the STMicro STM32 F446. From David
- Sidrane.
- * STMicro STM32 Drivers:
- - STM32 F7: Add an STM32 F7 Ethernet driver.
- - STM32 F7: Port the STM32 F4 DMA driver.
- - STM32 F4 ADC: Add DMA support to the ADC driver for STM32 F4. From
- Max Kriegler.
- * STMicro STM32 Boards:
- - STM32F762G-Disco: Add support for the STMicro STM32 F7 Discovery
- board.
- - STM32F4-Disco: Add support to BMP180 driver on the STM32F4 Discovery.
- From Alan Carvalho de Assis.
- * C Library/Header Files:
- - Add asctime(), asctime_r(), ctime(), and ctime_r().
- - sethostname(): Add support for sethostname().
- - gethostbyname() and gethostbyaddr(): Add support for
- gethostbyname() and gethostbyaddr(). Also support included for the
- non-standard gethostbyname_r() and gethostbyaddr_r(). This moves
- the DNS client logic from apps/ into the NuttX libc implementation.
- * Tools:
- - testbuild.sh: Add a script that can be used to perform building
- testing for several board configurations.
- * Build/Configuration System:
- - apps/ Build System: No longer depends on hardcoded lists of
- directories. Instead, it does a wildcard search to find all
- appropriate directories. This means that to install a new
- application, you simply have to copy the directory (or link it) into
- the apps/ directory. If the new directory includes a Makefile and
- Make.defs file, then it will automatically be included in the build.
- - mkkonfig.sh: Add the tool mkkconfig.sh that dynamically builds the
- apps/Kconfig file at configuration time. The hardcoded
- configuration file has been removed and now the top-level Makefile
- executes tools/mkkconfig.sh to auto-generate the top-level Kconfig
- file. A new apps/ make target call preconfig: was added to support
- this operation. Now you do not have to modify the top-level Kconfig
- file to add a new directory into the configuration; the top-level
- subdirectory simply needs to include a Kconfig file and it will
- automatically be included in the configuration. The native Windows
- build is temporarily broken until a new apps/tools/mkconfig.bat
- script is generated.
- - mkkconfig.bat: Add the Windows script corresponding to
- apps/tools/mkkconfig.sh. Needed for a Windows native build.
- * Applications: apps/nshlib:
- - NSH shutdown command: NSH will now support an (optional) shutdown
- command if the board provides the option CONFIG_BOARDCTL_POWEROFF.
- The command can also be used to reset the system if
- CONFIG_BOARDCTL_RESET=y.
- - NSH uname command: Add support for a uname command.
- - NSH nslookup command: Add an nslookup command.
- * Applications: apps/system:
- - NetDB: Add a system command to access the network database.
- - readline(): Add support for Unix-style tab complete to readline.
- Contributed by Nghia Ho.
- - readline(): Extended the tab-completion support to also expand NSH
- command names.
- - readline(): Add support for an in-memory command line history that
- can be retrieved using the up and down arrows. Contributed by Nghia
- Ho.
- * Applications: apps/netutils:
- - DNS client: Moved the DNS client logic into the NuttX C library.
- It is a necessary part for the full implementation of the netdb logic
- and provides more flexibility in that location.
- - Replace calls to the non-standard dns_gethotip() with calls to
- standard gethostbyname().
- - NetLib: Create netlib wrapper functions around dns_getserver() and
- dns_setserver() to isolate application code from changes to those
- interfaces.
- * Applications: apps/examples:
- - OS test: Extend the OS test to include a test of
- pthread_mutex_trylock() for recursive mutexes. From Juha Niskanen.
- - OS test: Add a test for the sporadic scheduler.
- Bugfixes. Only the most critical bugfixes are listed here (see the
- ChangeLog for the complete list of bugfixes and for additional, more
- detailed bugfix information):
- * Core OS:
- - pthreads: Use -1 instead of 0 as PID for unclaimed mutexes. From
- Juha Niskanen.
- - pthreads: Implement pthread_mutex_trylock() for recursive mutexes.
- From Juha Niskanen.
- - pthread_create(): Group binding needs to be cleared before
- sched_releasetcb(), as otherwise group_leave() will be called and
- group->tg_nmembers decremented or group being released. group_leave()
- should be called only after group_join() is called, not after
- group_bind(). From Jussi Kivilinna.
- - Protected Mode User Memory Allocator: Redesigned how the user space
- heap is accessed from the kernel code in protected mode. It used to
- call memory management functions in user space via function pointers
- in the userspace interface. That is inefficient because the first
- thing that those memory management functions do is to trap back into
- the kernel to get the current PID. Worse, that operation can be
- fatal is certain fragile situations such as when a task is exiting.
- The solution is to remove all of the memory management function
- calls from the interface. Instead, the interface exports the users
- pace heap structure and then kernel size implementations of those
- memory management functions will operate on the userspace heap
- structure. This avoids the unnecessary system calls and, more
- importantly, failures do to freeing memory when a test exits.
- - pthread_create(): Fix an (unlikely) error in fallback value in the
- event of a failure (which should never occur).
- * Common Drivers:
- - STMPE811 Driver: In stmpe811_instanciate() when
- CONFIG_STMPE811_MULTIPLE is enabled, and the call to
- stmpe811_checkid() fails, then the linked device list is not
- restored to its previous state. From Sebastien Lorquet.
- - CAN driver: Fix an issue in the CAN driver where the rx_sem count
- can grow beyond bounds.
- * File System/Block Drivers:
- - NFS client: Fix prototype of unbind method. The function prototype
- was not updated for NFS after a recent change to the file system
- interface. From Manuel St??.
- * Networking/Network Drivers:
- - netconfig.h: Fix some backward compilation that was emitting #error
- in the wrong condition when SLIP was enabled.
- - SLIP Driver: Fix a missed name change when many of network
- interface names changed sometime back but were apparently never
- updated for SLIP.
- - Networking: Allow receipt of empty UDP packets. From Max Neklyudov.
- * ARMv6-M:
- - ARMv6-M: Fix Cortex-M0 assembly error when the interrupt stack is
- enabled. From Alan Carvalho de Assis.
- * Atmel SAMD/L Drivers:
- - SAMD20, D21, L21: In the SAML21, SERCOM5 uses a different SLOW clock
- channel (and, hence, also a different SLOW GCLK generator). This
- means that the channel selection cannot be a global definition but
- must be a per SERCOM configuration setting.
- - SAMD/L: Several fixes to register definitions and types. From
- Janne Rosberg.
- * Atmel SAM3/4 Drivers:
- - SAM3/4 UART: Back out an error introduced with commit
- 02c33f66c5a8be774034cd40e4125e9323c7b4d8. Causes an infinite loop in
- up_lowputc(). From Max Neklyudov.
- - SAM4CM: Fix SUPC register definitions. From Max Neklyudov.
- - SAM3/4 WDT: Correct some problems with SAM3/4 watchdog driver.
- Includes some small improvements. From Max Neklyudov.
- * Atmel SAMV7 Drivers:
- - SAMV7 UART: Also back the bad cloned change o sam_lowputc.c for
- SAMV7 platform.
- * NXP LPC43xx Drivers:
- - LPC4350: Correct some LPC4350 GPIO pin configurations. From
- Alessandro Temil.
- * SiLabs EMF32 Drivers:
- - EFM32 SPI: Correct write to incorrect register in EFM32 SPI driver.
- From Pierre-noel Bouteville.
- * STMicro STM32 Drivers:
- - STM32 F15x: STM322 F15x stm32_stdclockconfig() was calling
- stm32_pw_setvos() which accessed PWR_CR via an inactive APB From
- Juha Niskaneni.
- - STM32 Ethernet: Extend STM32 Ethernet operating frequency to 180MHz.
- From Sebastien Lorquet.
- * STMicro STM32 Boards:
- - SAMV7 Xplained: In clock configuration, divider was set to 25 to get
- 25*12MHz=300MHz CPU clock. The correct multiplier is 24 because the
- calculation if (24+1)*12MHz. So the board was running at 312MHz.
- From Efim Monjak.
- * ARMv7-A:
- - Cortex-A5 vfork(): Fix a Cortex-A compilation error when system
- calls are enabled in modes other than CONFIG_BUILD_KERNEL.
- * Atmel SAMA5 Drivers:
- - SAMA5Dx EHCI: Fix some bad conditional compilation that left a
- function undefined if CONFIG_USBHOST_ASYNCH is not selected.
- * C Library/Header Files:
- - getopt(): Uninitialized variable can cause hardfault from getopt()
- if required argument is missing. From George McWilliams.
- * Applications: apps/nshlib:
- - NSH/THHPD: Change decoding to handle the increased size of the
- scheduling policy field in the TCB.
- * Applications: apps/netutils:
- - THTTPD: Fix compilation problems when
- CONFIG_THTTPD_GENERATE_INDICES is defined.
- - THTTPD: Missing gci-src as a dependency path when building with
- BINFS enabled.
- * Applications: apps/examples:
- - poll() example: Fix a few bit-rot compilation errors.
- - Nx Lines example: If CONFIG_NX_ANTIALIASING=y, then the nxlines
- example now erases a line that is 2 pixels longer and 2 pixels wider
- than the line it drew. That eliminates edges effects due to
- applying the anti-aliasing algorithm twice. A better solution
- would be to make anti-aliasing an option for each graphics call so
- you would rend the line with anti-aliasing ON and clear it with
- anti-aliasing OFF. but I don't have the wherewithal for that change
- today.
- - OS test: Improve synchronization in round robin tests. On very fast
- processors, there are race conditions that make the test fail.
- Need better interlocking to assure that the threads actually do start
- at the same time.
- NuttX-7.12 Release Notes
- ------------------------
- The 112th release of NuttX, Version 7.12, was made on October 1, 2015,
- and is available for download from the Bitbucket.org website. Note
- that release consists of two tarballs: nuttx-7.12.tar.gz and
- apps-7.12.tar.gz. These are available from:
- https://bitbucket.org/patacongo/nuttx/downloads
- https://bitbucket.org/nuttx/apps/downloads
- Both may be needed (see the top-level nuttx/README.txt file for build
- information).
- Additional new features and extended functionality:
- * Graphics/Graphic Drivers:
- - Added SSD1351 OLED controller support. Contributed by Paul
- Alexander Patience.
- * Common Device Drivers:
- - MS58xx: Generalize the MS5805 altimeter driver to support other
- family members. From Paul Alexander Patience.
- - CAN driver interface: Add an error indication bit to the CAN
- message report.
- - Developed a new interface for QSPI. Most QSPI hardware (such as the
- SAMV71) used a programmed interface to access the QuadSPI FLASH.
- That programmed interface is no compatible with the simpler NuttX
- SPI data transfer interface.
- - Added a driver for ST25L1*K QuadSPI parts.
- - Renamed the battery driver interface to battery_gauge since it
- really only implements a battery fuel gauge. From Alan Carvalho de
- Assis.
- - Added a new framework to support a batter charger interface. From
- Alan Carvalho de Assis.
- - Added a BQ24250 battery charger driver. From Alan Carvalho de Assis.
- * Networking:
- - Added support for the local loopback device (dev lo, hostname localhost).
- - Added NetDB support for the local loopback device.
- - Network initialization: Automatically initialize all the TUN and
- loopback devices if they arein the configuration.
- * Simulation Platform:
- - The simulation now runs under Cygwin64. Modern Cygwin X86_64
- machines follow the Microsoft ABI for parameter passing. The Linux
- System 5 ABI would not work on X86_64-based Cygwin machines. Newer
- Cygwin tool chains do nor pre-pend symbol names with the underscore
- character.
- * Atmel SAMA5Dx:
- - Added architectural support for the Atmel SAMA5D2 parts. Not fully
- verified in this NuttX release.
- * Atmel SAMA5Dx Boards:
- - Added support for the Atmel SAMA45D2 Xplained Ultra board. Not
- fully verified in this NuttX release.
- * Atmel SAMV7 Drivers:
- - SAMV7 USBHS DCD: The device controller driver is (finally)
- functional.
- * NXP LPC17xx:
- - Implement options to use external SDRAM and or SRAM for the heap.
- From Pavel Pisa.
- * NXP LPC43x:
- - Added architectural support for the LPC4370. From Lok Tep.
- * NXP LPC43xx Drivers:
- - Added Ethernet support. From Ilya Averyanov.
- - Added LPC43xx EHCI driver from Ilya Averyanov.
- * NXP LPC43xx Drivers:
- - Added support for the NXP LPC4370-Link2 development board from Lok
- Tep.
- * STMicro STM32:
- - Added architectural for STM32F303K6, STM32F303K8, STM32F303C6,
- STM32F303C8, STM32F303RD, and STM32F303RE devices. From Paul
- Alexander Patience.
- * STMicro STM32 Drivers:
- - Added OTG support for STM32F44x. From David Sidrane.
- * STMicro STM32 Boards:
- - Added support for the STMicro Nucleo F303ERE board from Paul
- Alexander Patience.
- * C Library/Header Files:
- - stdlib: Add support for div() to the C library. From OrbitalFox.
- Also added ldiv() and lldiv() which are equivalent to div() with
- long and long long types, respectively, instead of int.
- - Added an implementation of the standard shutdown function.
- * Tools:
- - tools/mksymtab: declare g_symtab array as const to occupy RO section
- (Flash). From Pavel Pisa.
- * Build/Configuration System:
- - Simplify configs/ Makefiles by combining common logic into a new
- Board.mk Makefile fragment. From Paul Alexander Patience.
- * Applications: apps/system:
- - apps/system/symtab: Optional canned symtab inclusion to the build.
- When option CONFIG_SYSTEM_SYMTAB is selected and symbol table file
- libc/symtab/canned_symtab.inc is prepared then application can use
- system provided complete symbol table. The option has substantial
- effect on system image size. Mainly code/text. If loading of
- applications at runtime is not planned do not select this. From
- Pavel Pisa.
- * Applications: apps/canutils:
- - apps/canutils/uavcan: Add support for libuavcan. From Paul Alexander Patience.
- * Applications: apps/examples:
- - apps/examples/can: Extend the CAN loopback test by adding more
- command line options.
- - apps/examples/usbserial: Can now be run as an NSH builtin-function.
- Now uses a configurable IO buffer size.
- - apps/examples/nettest: Add option to suppress network initialization.
- This is necessary if the nettest is run from NSH which has already
- initialized the network.
- - apps/examples/nettest: Extend test so that can be performed using
- the local loopback device.
- - apps/examples/netloop: Add a test of the local loopback device.
- - apps/examples/udpblaster: Add a test to stress the network by
- sending UDP packets at a very high rate. .
- - apps/examples/uavcan: libuavcan example from Paul Alexander Patience.
- Bugfixes. Only the most critical bugfixes are listed here (see the
- ChangeLog for the complete list of bugfixes and for additional, more
- detailed bugfix information):
- * Core OS:
- - wd_create(): Correct a counting error in the number of available
- watchdog timers. When the number of free timers is low, the counter
- could be incremented below zero.
- - mq_open(): When message queue is opened, inode_reserve() leaves the
- reference count at zero. mq_open() logic must assure that the
- reference count of the newly created inode is one.
- - work_queue(): Logic that sets the queued indication and the logic
- that does the actual queuing must be atomic.
- * Binary Loader:
- - Fix a memory leak in the built-in application logic: File was not
- being closed. From Bruno Herrera.
- * File System/Block Drivers:
- - poll(): If we fail to setup the poll for any file descriptor, for
- any reason, set the POLLERR bit.
- - rwbuffer: Fix some logic errors. From Dmitry Nikolaev via Juha
- Niskanen.
- - ROMFS: One allocation was not being freed if there was a subsequent
- failure to allocation I/O buffers resulting in a memory leak on
- certain error conditions. From Bruno Herrera.
- * Networking/Network Drivers:
- - Fix a bug in tun interface driver. From Max Neklyudov.
- - recvfrom(): Correct wait for new data when NET_UDP_READAHEAD is
- enabled. Fix size accounting when recvfrom_udpreadahead() sets
- state.rf_recvlen == -1. I have not checked if data are accumulated
- to the right position in the buffer however. From Pavel Pisa.
- - networking: Correct return value from psock_tcp_accept(). From
- SaeHie Park.
- - TCP: Fix a problem in when there are multiple network devices.
- Polls were being sent to all TCP sockets before. This is not good
- because it means that packets may sometimes be sent out on the wrong
- device. That is inefficient because it will cause retransmissions
- and bad performance. But, worse, when one of the devices is not
- Ethernet, it will have a different MSS and, as a result, incorrect
- data transfers can cause crashes. The fix is to lock into a single
- device once the MSS is locked locked down.
- - net/tcp: The logic that binds a specific network device to a
- connection was faulty for the case of multiple network devices. On
- bind(), the local address should be used to associate a device with
- the connection (if the local address is not INADDR_ANY); On connect(),
- the remote address should be used (in case the local address is
- INADDR_ANY). On accept(), it does not matter but the remote address
- is the one guaranteed to be available.
- - net/tcp: Fix unbuffered send compilation error when Ethernet is not
- enabled. From Alan Cavalho de Assis.
- * ARMv7-M:
- - All ARMV7-M IRQ setup: Always set the NVIC vector table address
- unconditionally. This is needed in cases where the code is running
- with a bootload and when the code is running from RAM. It is also
- needed by the logic of up_ramvec_initialize() which gets the vector
- base address from the NVIC. Suggested by Pavel Pisa.
- - Fix some H/W floating point logic: In the original implementation,
- !defined(CONFIG_ARMV7M_CMNVECTOR) was a sufficient test to determine
- if lazy floating point register saving was being used. But recents
- changes added common lazy register as well so now that test must be
- (!defined(CONFIG_ARMV7M_CMNVECTOR) || defined(CONFIG_ARMV7M_LAZYFPU)).
- - ARMv7-M, all "lazy" interrupt stack logic. Assembly instruction
- that fetches the saved value is incorrect; replace with more
- traditional push and pop. This is an important fix. Noted by
- Stefan Kolb.
- - All ARMV7-M: Force 8-byte stack alignment when calling from assembly
- to C to interrupt handling.
- - up_schedulesigaction(): Fix logic that determines if there is a
- pending signal action before scheduling the next signal action.
- Both the test and the scheduling action need to be atomic. This
- problem was fixed on the ARMv7-M but also ported to other
- architectures that had the same issue.
- * NXP LPC43xx:
- - LPC43xx: Fix NVIC_SYSH_PRIORITY_STEP define. From Ilya Averyanov.
- - LPC43xx: Fix missing #define in eeprom. From Ilya Averyanov.
- * NXP LPC43xx Drivers:
- - Fixed the SPI driver. From Ilya Averyanov.
- * Atmel SAMA5 Drivers:
- - LPC31 and SAMA5D EHCI: Fix qh_ioccheck to move bp to next QH. From
- Ilya Averyanov.
- - LPC31 and SAMA5D EHCI: Performance improvement: Do not disable the
- asynchronous queue when adding a new QH structure. From Ilya
- Averyanov.
- * C Library/Header Files:
- - gethostbyname(): correct returned address format when DNS is used.
- The hostent.h_addr_list should point to raw in_addr or in6_addr
- as defined in the standard. Original implementation used that for
- numeric addresses but for DNS lookup returned pointer to whole
- sockaddr_in or sockaddr_in6. From Pavel Pisa .
- - asin(): The function did not convert for some input values. asing()
- did not convert for values which do not belong to the domain of the
- function. But aside of that the function also did not converge for
- allowed values. I achieved a conversion of the function by
- reducing the DBL_EPSION and by checking if the input value is in
- the domain of the function. This is a fix for the problem but the
- function should always terminate after a given number of iterations.
- From Stefan Kolb.
- - Change all references from avsprintf to vasprintf. From Sebastien
- Lorquet.
- * Applications: apps/nshlib:
- - Fix error handling in 'cat' command. On a failure to allocate
- memory, a file was not being closed. From Bruno Herrera.
- - Fix error handling in 'mv' command. On a failure to expand the
- second path, the memory allocated for the expansion of the first
- path was not being freed. From Bruno Herrera.
- * Applications: apps/system:
- - apps/system/netdb: Failed to build if CONFIG_NET_HOSTFILE was not
- defined because gethostbyaddr() was not available. Noted by
- OrbitalFox.
- * Applications: apps/netutils:
- - Various Kconfig files in netutils: Fix some changes from from
- NETUTILS_DNSCLIENT to NETDB_DNSCLIENT. From Pavel Pisa.
- * Applications: apps/modbus:
- - Macros PR_BEGIN_EXTERN_C and PR_END_EXTERN_C were not defined in
- all contexts. Replace with explicit expansion in all cases. From Stefan Kolb.
- NuttX-7.13 Release Notes
- ------------------------
- The 113th release of NuttX, Version 7.13, was made on December 5, 2015,
- and is available for download from the Bitbucket.org website. Note
- that release consists of two tarballs: nuttx-7.13.tar.gz and
- apps-7.13.tar.gz. These are available from:
- https://bitbucket.org/patacongo/nuttx/downloads
- https://bitbucket.org/nuttx/apps/downloads
- Both may be needed (see the top-level nuttx/README.txt file for build
- information).
- Additional new features and extended functionality:
- * Core OS:
- - External RTC: Added OS support for external RTC chips.
- - boardctl(): Add a command to the boardctl() interface to obtain a
- board unique ID.
- * File Systems:
- - TMPFS: Add support for a new TMPFS, RAM file system. The TMPFS
- file system does not require any significant amount of memory
- itself. It will grow dynamically as files are added and shrink back
- when files are deleted. A very low overhead way to retain temporary
- files.
- - VFS: The VFS was extended to support standard file operations on
- block drivers (open, close, read, write, etc.). The open() interface
- accomplishes this by creating a temporary characer driver to mediate
- the character oriented accesses to tje block driver.
- - HOSTFS: Added a HOSTFS file system for use with the simulator. The
- HOSTFS file system mounts in the simulated Nuttx context by provides
- proxied access to the file system on the host PC. This is useful for
- providing file system content and nonvolatile storage of files in the
- simulation environment. From Ken Pettit.
- - MTD/PROCFS: Add an interface to un-register an MTD procfs entry.
- From Ken Pettit.
- - filemtd: A new MTD conversion layer that will convert a regular file
- (or driver file) to an MTD device. This is useful for testing on the
- simulation using the HOSTFS. From Ken Pettit.
- - PROCFS: Extended to include networking entries in the procfs. Device
- status, device statistics, and network statistics are now available
- from the PROCFS.
- - PROCFS: The PROCFS file system can now be configured so that it
- supports runtime registration of PROCFS entries with
- CONFIG_FS_PROCFS_REGISTER=y.
- * Graphics/Graphic Drivers:
- - ST7565 Driver: Extend to include support for the ERC12864-3. From
- Pierre-noel Bouteville.
- * Common Device Drivers:
- - User buttons: Added a character driver to support application access
- to board buttons. Supports notification of button activity via
- signals.
- - User LEDs: Added a character driver to support application access
- to on-board LEDs.
- - Zero Cross: Added a Zero Cross device driver support. From Alan
- Carvalho de Assis.
- - MAX6675: Added support to Thermocouple-to-Digital converter MAX6675.
- From Alan Carvalho de Assis.
- - BCH: Block-to-character (BCH) driver should forward ioctl() calls
- to the contained block driver.
- - S25FL1xx: Added a S25FL1xx QuadSPI FLASH driver.
- - On-Chip FLASH: Added an upper half MTD device that can use the
- interfaces defined in included/nuttx/progmem.h to provide a
- standard MTD driver.
- - Serial: Implemented high level DMA infrastructure for serial
- devices. From Max Neklyudov.
- - AT24XX: Add support for multiple AT24xx EEPROM parts, each with
- unique I2C addresses, but otherwise identical.
- - External RTC: Added drivers for external I2C RTC chips: DS3102,
- DS1307, DS3231, DS3232, and NXP PCF85263.
- - W25: Added support for byte write mode to the W25 FLASH driver. From
- Ken Pettit.
- - dev/loop: Added a loop character device. losetup() and loteardown()
- should not be called directory from applications. Rather, these
- functions are now available as IOCTL commands to the loop driver.
- - dev/smart: Added support for a /dev/smart loop device. From Ken
- Pettit.
- * Networking:
- - Driver Statistics: Most network drivers do not support statistics.
- Those that do only supported them when DEBUG is enabled. Each
- driver collected an architecture specific set of statistics and
- there was no common mechanism to view those statistics. Thus,
- the driver feature was mostly useless. This release standardizes
- the driver statistics and puts the definition in the common network
- device structure defined in netdev.h where they can be accessed by
- network applications. All Ethernet drivers that collect statistics
- have been adapted to use these common statistics.
- * Simulation Platform:
- - W25 FLASH: Added support for W25 FLASH simulation. From Ken Pettit.
- - HOSTFS: Added support for the HOSTFS file system (see "File Systems",
- above).
- * Atmel SAMV7:
- - SAME70: Added support for the SAME70 family of chips.
- - Tickless: SAMV7 now supports the tickless mode of operation.
- * Atmel SAMV7 Drivers:
- - MPU: Added MPU and protected build support.
- - QSPI: Added a QuadSPI FLASH driver. This driver operates in the
- memory-mapped, Serial Memory Mode (SMM).
- - FLASH: Added support to write on-chip FLASH.
- - Timer/Counter: TC driver ported to SAMV7 from the SAMA5. Free-running
- and one-short timer logic also ported.
- - PCK: Brought programmable clock (PCK) logic from SAMA5 into SAMV7.
- - Timer/Counter: Support PCK6 as an optional source for the timer/
- counter clock.
- * Atmel SAMV7 Boards:
- - SAME70-Xplained: Add NSH and networking configurations for the
- SAME70 Xplained board. Includes verified support for serial console,
- LEDs, buttons, SDRAM, HSMCI SD card, and networking.
- - SAMV7-XULT and SAME70-Xplained: If Tickless mode is selected then
- enable PCK6 as a timer/counter clock source
- * STMicro STM32:
- - CCM PROCFS: Is no longer a part of the 'base' procfs entries and can
- now only be supported via run time registration with
- CONFIG_FS_PROCFS_REGISTER=y.
- * STMicro STM32 Drivers:
- - Timers: Add a compatible lower-half timer driver for use with the
- common timer upper-half driver. From Wail Khemir.
- * STMicro STM32 Boards:
- - STM32F4-Discovery: Add low level support for the Zero Cross driver
- for the STM32F4-Discovery. From Alan Carvalho de Assis.
- - STM32F4-Discovery: Add board config to support for the MAX6675. From
- Alan Carvalho de Assis.
- * C Library/Header Files:
- - bsearch(): Added the bsearch() function from NetBSD.
- - freopen(): Added support for freopen().
- - strftime(): Added day-of-week support (when avaialable).
- * Tools:
- - nxstyle: Add crappy style checking tool nxstyle.c. See thee tools/
- README file for more info.
- * Applications: NSH
- - mksmartfs command: Add configuration option to supported multiple
- rootdirectories. From Ken Pettit.
- - Add support for 'basename' and 'dirname' commands.
- - set command: Like bash, NSH set command now strips off any leading
- or trailing whitespace.
- - mount command: The mount commands now accepts mount options
- (currently needed only for the hostfs file system). From Ken
- Pettit.
- - losetup command: NSH no longer calls losetup() and loteardown
- directly. Now it opens /dev/loop and accomplishes these things
- using ioctl() calls.
- - ifconfig command: If CONFIG_NETDEV_STATISTICS=y, then print the
- network driver statistics in the ifconfig.
- - ifconfig, ifup, and ifdown: These commands now uses /proc/net/<dev>
- to view network device configuration and status and /proc/net/stat
- to show network statistics. A consequence of this is that you
- cannot view this network information if the procfs is not enabled
- and mounted at /proc.
- - losmart command: Added a new NSH losmart command. losmart setups
- up a loop device for the smart MTD driver similar to losetup but
- with different syntax. From Ken Pettit.
- - ps command: The 'ps' command now uses /proc/<pid>/ to obtain task
- status information. A consequence of this is that you cannot use
- the 'ps' command if the procfs is not enabled and mounted at /proc.
- * Applications: apps/system:
- - apps/system/hexed: Port the hexed command line hexadeciamal editor
- to Nuttx. See http://apps.venomdev.net/hexed/.
- * Applications: apps/fsutils:
- - apps/fsutils/smartfs: Move into apps/fsutils from kernel, now uses
- only open and ioctl. From Ken Pettit.
- * Applications: apps/examples:
- - apps/examples/fstest: Add a generic file system test. This is
- essentially the same as examples/smart, but has all of the SmartFS
- specific logic ripped out. This was created for testing the new
- TMPFS.
- - apps/examples/zerocross: Add a Zero Cross application example. From
- Alan Carvalho de Assis.
- - apps/examples/media: Add a simple test for access of media via a
- block driver or MTD driver.
- Bugfixes. Only the most critical bugfixes are listed here (see the
- ChangeLog for the complete list of bugfixes and for additional, more
- detailed bugfix information):
- * Core OS:
- - Fixed an error in clock_timespec_subtract(). Found by Lok.
- - pthreads: CRITICAL BUGFIX: Logic was wiping out the indication that
- of the type of a pthread. Hence, it could be confused as a task.
- Found because this was causing a crash when /proc/nnn/cmdline was
- printed.
- * File System/Block Drivers:
- - SMART MTD: Fix some Smart wear-leveling bugs. Fixed SmartFS wear
- level error that occurs when the logical sector size is too small to
- save all wear level status bytes in a single sector. Logical
- sectors 1 and 2 were simply not being allocated and then the
- read_sector and write_sector routines were failing. From Ken
- Pettit.
- * Graphics/Graphic Drivers:
- - ILI9432: Fixed errors in orientation. Portrait, RPortrait, and
- Landscript should work correly now. They were displayed mirrored.
- From Marco Krahl.
- * Common Drivers:
- - CAN: Fix a problem in the CAN upper-half driver that occurs only
- for CAN hardware that support a H/W FIFO of outgoing CAN messages.
- In this case, there can be a hang condition if both the H/W and
- S/W FIFOs are both full. In that case, there may be no event to
- awaken the upper half driver. Add a new (conditional) CAN upper
- half interface called can_txready() that can be used by the lower
- half driver to avoid this hang condition.
- - MS58xx: Fix some issues with initialization and with CRC
- calculation. From Karim Keddam.
- - W25: Fixed W25 FLASH driver page read/write logic. From Ken Pettit.
- * Atmel SAMV7 Drivers:
- - USART1 pin configuration: Reconfigure System I/O when using USART1.
- From Frank Benkert.
- - MCAN: Added a call to can_txready() to the MCAN driver.
- * STMicro STM32 Drivers:
- - stm32 F4: Fix some TIM12 pin mappings. From Max Kriegleder.
- * STMicro STM32 Boards:
- - STM32F429i-Disco: Calculated partition boundries based on page
- block sizes but mtd_partition() is expecting calculations based on
- erase block size. From Alan Carvalho de Assis.
- * C Library/Header Files:
- - sys/types.h: When building on a 64-bit machine, the size of size_t
- should be 64-bits. In general, I believe that sizeof(size_t) should
- be the same as sizeof(uinptr_t). mmsize_t should always be 32-bits
- in any event. The last change to stddef has been backed out. With
- these changes, the simulator builds without errors or warnings an a
- 64-bit machine.
- * Applications: apps/nshlib:
- - The I/O buffer, g_iobuffer, should not be a global buffer. That
- will not work in an environment where there are multiple NSH
- sessions. The I/O buffer must, instead, be a part part of the
- session-specific data defined in nsh_console.h.
- NuttX-7.14 Release Notes
- ------------------------
- The 114th release of NuttX, Version 7.14, was made on January 28, 2016,
- and is available for download from the Bitbucket.org website. Note
- that release consists of two tarballs: nuttx-7.14.tar.gz and
- apps-7.14.tar.gz. These are available from:
- https://bitbucket.org/patacongo/nuttx/downloads
- https://bitbucket.org/nuttx/apps/downloads
- Both may be needed (see the top-level nuttx/README.txt file for build
- information).
- Additional new features and extended functionality:
- * Core OS:
- - modules: Add support for kernel modules: insmod, rmmod, support
- functions. procfs support for user lsmod functioniality.
- - SIGEV_THREAD: Add support for the SIGEV_THREAD notification method
- in struct sigevent. This initial implementation will only work in
- the FLAT build since it utilizes the work queue for signal
- callbacks. See the top-level TODO file for additional details.
- - 64-Bit Timer: If the 64-bit timer is selected, then use it whenever
- clock_systimer() is called rather then chopping the 64-bit timer
- down to 32-bits. Add a new type, systime_t to represent the 32- or
- 64-bit system timer. This eliminates clock_systimer32() and
- clock_systime64(); there is now only clock_systimer().
- * Common Device Drivers:
- - Telnet Driver: Move the Telnet driver from apps/ to
- nuttx/drivers/net. It is a driver a belongs in the OS. Now works
- like the loop device: A new interface called telnet_initialize()
- registers a telnet session "factory" device at /dev/telnet. Via
- ioctl, the factory device can create instances of the telnet
- character devices at /dev/telnetN to support Telnet sessions.
- - PCA9635PW: Add a driver for the PCA9635PW I2C LED driver IC which
- can be used to control the intensity of up to 16 LEDs. From
- Alexander Entinger.
- - MCP9844: Driver for the MCP9844 I2C digital temperature sensor with
- a selectable resolution. From Alexander Entinger.
- - PN532: Add driver for the NXP PN532 NFC-chip. From Janne Rosberg
- and others at Offcode Ltd.
- - LSM9DS1: Add driver for the STMicro LSM9DS1 chip. The LSM9DS1 is a
- system-in-package featuring a 3D digital linear acceleration sensor,
- a 3D digital angular rate sensor, and a 3D digital magnetic sensor.
- From Paul Alexander Patience.
- - CAN Interface: Add more extensive error reporting capaibility to
- the CAN interface definitions. From Frank Benkert.
- - SPI Interface: Add an optional hwfeatures() method to the SPI
- interface.
- * Simulation Platform:
- - NSH configuration uses the custom start up scriptwith a read-only
- passwd file. Includes hooks for an MOTD message.
- * ARMv7-R
- - ARMv7-R: Add basic architecture support for the ARMv7-R processor
- family.
- * Atmel AVR:
- - Atmega2560: Add support for the Atmega2560. From Dimitry Kloper.
- - debug.h: Add an AVR-specific header file used when the AVR MEMX
- pointer is used. From Dimitri Kloper.
- * Atmel AVR Boards:
- - Arduino-Mega2560: Add support for the Arduino-Mega2560. From
- Dimitry Koper.
- * Atmel SAMV7 Drivers:
- - Port the TRNG driver from the SAMA5D3/4 to the SAMV7.
- - Port the WDT driver from the SAMA5D3/4 to the SAMV7.
- - Add an RSWDT driver.
- * Atmel SAMV7 Boards:
- - SAMV71-XULT: Add configuration for testing OS modules.
- * Freescale Kinetis:
- - MK60N512VLL100: Add support for the MK60N512VLL100 Kinetis part.
- From Andrew Webster.
- * Freescale Kinetis Boards:
- - ENET: Numerous updates to the Kinetis ENET driver. That driver is
- now functional. From Andrew Webster.
- * NXP LPC43xx Boards:
- - WaveShare LPC4337-WS: Support for the WaveShare LPC4337-WS board.
- From Lok Tep.
- * STMicro STM32 Drivers:
- - Timer Capture: Add timer input capture driver. From Pierre-Noel
- Bouteville.
- * STMicro STM32 Boards:
- - Olimex STM32 H407: Added a port to the Olimex STM32 H407 board.
- This board features the STMicro STM32F407ZGT6 (144 pins).
- Contributed by Neil Hancock.
- * TI TMS550 Boards:
- - TI LaunchXL-TMS57004: Add basic board support for TI LaunchXL-
- TMS57004. Still a work in progress.
- * C Library/Header Files:
- - sys/time.h: Add timeradd(), timersub(), timerclear(), timerisset(),
- and timercmp() as macros. These are non-POSIX interfaces, but
- included in most BSD deriviatives, including Linux. From Manuel St??.
- - AVR support: Introduce support for Atmel toolchain in-flash strings.
- Atmel toolchain AVR compiler provides a transparent in-flash object
- support using __flash and __memx symbols. The former indicates to
- compiler that this is a flash-based object. The later used with
- pointer indicates that the referenced object may reside either in
- flash or in RAM. The compiler automatically makes 32-bit pointer
- with flag indicating whether referenced object is in flash or RAM
- and generates code to access either in run-time. Thus, any function
- hat accepts __memx object can transparently work with RAM and flash
- objects.
- For platforms with a Harvard architecture and a very small RAM like
- AVR this allows to move all constant strings used in trace messages
- to flash in the instruction address space, releasing resources for
- other things. This change introduces IOBJ and IPTR type qualifiers.
- The 'I' indicates that the object may lie in instruction space on a
- Harvard architecture machine. For platforms that do not have __flash
- and __memx or similar symbols IOBJ and IPTR are empty, making the
- types equivalent to, for example, 'const char' and 'const char*'.
- For Atmel compiler these will become 'const __flash char' and
- 'const __memx char*'. All printf() functions and syslog() functions
- are changed so that the qualifier is used with the format parameter.
- From Dimitry Kloper.
- - debug.h: Add configuration to support an architecture-specific
- debug.h header file. From Dimitri Kloper.
- - netdb: Add support for the use of a DNS resolver file like
- /etc/resolv.conf.
- - TEA: Add an implementation of the Tiny Encryption Algorithm.
- - math32.h: Add some utilities to support 64-bit arithmetic
- operations for platforms that do not support long long types.
- * Tools:
- - tools/cnvwindeps.c: Add a tool that will convert paths in
- dependencies generated by a Windows compiler so that they can be
- used with the Cygwin make.
- - tools/mkwindeps.sh: A script that coordinates use of cnvwindeps.exe.
- Dependencies now work on the Cygwin platform when using a Windows
- ative toolchain.
- * Applications: NSH
- - Module Commands: Add module commands: insmod, rmmod, and lsmod.
- - Time Command: Add a 'time' command that may be used to time the
- execution of other commands.
- - Password Commands: Add useradd, userdel, and passwd commands.
- - MOTD: Now supports a Message of the Day (MOTD) that will be
- presented after the NSH greeting.
- - Session Logins: All sessions may be protected with logins using the
- encrypted password in /etc/passwd.
- - Extended Logins. Added optional platform-specific function to
- perform password verification and optional delay after each failed
- login attempt.
- * Applications: apps/fsutils:
- - apps/fsutils/passwd: Utility library for accessing a password file
- like /etc/passwd.
- * Applications: apps/netutils:
- - apps/netutils/telnetd: Now creates Telnet sessions by opening a new
- factory device at /dev/telnet and then using ioctl calls to create
- the session character drivers at /dev/telnetN.
- - apps/netutils/netlib: Add netlib_get_dripv4addr() and
- netlib_get_ipv4netmask(). From Pelle Windestam.
- * Applications: apps/examples:
- - apps/examples/module: Add a test harness for verifying NuttX kernel
- modules.
- - apps/examples/pca9635: Add a simple test of PCA9635PW PWM LED driver.
- From Alan Carvalho de Assis.
- - apps/examples/ostest: Add a test of POSIX timers using SIGEV_THREAD.
- Bugfixes. Only the most critical bugfixes are listed here (see the
- ChangeLog for the complete list of bugfixes and for additional, more
- detailed bugfix information):
- * Core OS:
- - pthreads: CRITICAL BUGFIX: Logic was wiping out the indication that
- of the type of a pthread. Hence, it could be confused as a task.
- - waitpid: CRITICAL BUGFIX. Add a reference count to prevent waitpid
- from using stale memory released by the waited-for task group.
- - clock_systimespec(): Fix an error in a time conversion.
- * File System/Block Drivers:
- - poll(): Fix handling of sem_tickwait() return value sem_tickwait()
- does not return an -1+errno, it returns a negated errno value.
- Noted by Freddie Chopin.
- * Common Drivers:
- - TUN Driver: Fix a compile time error in the TUN driver. From
- Vladimir Komendantskiy.
- - USB Host HID Parser: Wrong size used in memcpy(). From Hang Xu.
- - PCA9555: Fixed a bug in the function pca9555_setbit which occurs if
- someone tries to set one of the pins 8-15. The problem is that
- after the check if the pin is greater than 7 the variable addr is
- incremented and used in the Call I2C_WRITEREAD. But later in the
- call to the I2C_WRITE buf[0] is used as address but this address is
- not incremented as it should be. Note address does mean the address
- to the register in the ioexpander and not the I2C address. From
- Stefan Kolb.
- * Networking:
- - TCP/IOB: Numerous fixes, mostly relate to TCP and IOB buffering
- and race conditions. These were necessary for for the NuttX
- networking later to be stable in some stress testing. From Andrew
- Webster.
- * Atmel SAMV7 Drivers:
- - USBHS Device: In USBHS device driver, fix check if zero length
- packet is needed.
- * STMicro STM32 Drivers:
- - OTG FS Host: Fix some backward arguments to stm32_putreg(). Note
- by Hang Xu.
- * Tools:
- - tools/mkdeps.c: Extended/fixed support for --winpath option.
- Dependencies now work under Cygwin with a native Windows toolchain.
- * Build System:
- - apps/platform/Makefile: Use a relative path to the board directory
- link rather than the absolute path. For Cygwin, the absolute would
- would need converted with cygpath. But just using the relative path
- is a simpler solution.
- NuttX-7.15 Release Notes
- ------------------------
- The 115th release of NuttX, Version 7.15, was made on March 27, 2016,
- and is available for download from the Bitbucket.org website. Note
- that release consists of two tarballs: nuttx-7.15.tar.gz and
- apps-7.15.tar.gz. These are available from:
- https://bitbucket.org/patacongo/nuttx/downloads
- https://bitbucket.org/nuttx/apps/downloads
- Both may be needed (see the top-level nuttx/README.txt file for build
- information).
- Additional new features and extended functionality:
- * Core OS:
- - Add a state variable that provides the current level of OS
- initialization. This is needed by some logic that may attempt to
- run early in the start-up sequence but cannot run if a sufficient
- level of initialization has not yet occurred.
- - Spinlocks: Add interface definitions for to support spinlocks as
- needed for multi-CPU configurations.
- - SMP support. Support for Symmetric Multi-Processing (SMP) added.
- This affects many internal data structures, spinlock extensions
- and renaming of interrupt enable/disable interfaces, new platform
- interfaces to support CPU initialization and inter-actions, and
- new application interfaces to manage CPU affinity. The changes
- are too extensive to summarize here; see the SMP Wiki page at
- http://www.nuttx.org/doku.php?id=wiki:nxinternal:smp. The
- new platform interfaces are also described in the NuttX porting
- guide: http://www.nuttx.org/doku.php?id=documentation:portingguide.
- Only partially verified; awaiting hardware for the complete
- verification.
- - TLS: Basic definitions needed to support thread local storage
- (TLS). TLS is not used anywhere yet (and may not be used in the
- near future either).
- - Performance Monitoring: Add a configuration option to buffer
- RTOS instrumentation data in an in-memory buffer.
- - boardctl(): Add boardctl() support that will permit applications
- to control USB devices.
- * File Systems/Block Drivers:
- - procfs: Add /proc/kmm entry that shows that state of the kernel
- heap. Only useful in PROTECTED and KERNEL build modes where there
- is a kernel heap.
- - procfs: Add support for showing CPU in the tast status if SMP is
- enabled.
- * Networking:
- - ARP: Add support for IOCTL commands to manage the ARP table.
- - IEEE 802.15.4 and 6LowPAN: There are some radio drivers and a
- directory structure is in place. However, most of this
- development is occurring on a fork and is not yet available in the
- NuttX repositories. Hopefully in NuttX-7.16.
- * Common Device Drivers:
- - ADS1242: Driver for the 24-Bit Differential Input ADC ADS1242 that
- communicates via SPI with a MCU. Reading the ADC conversion result
- as well as configuring the ADC, setting the input channel, etc. is
- implemented via ioctl calls. However, it does not yet implement
- the standard ADC interface. From Alexander Entinger.
- - U-Blox Modem: Add an upper half driver for the U-Blox Modem. From
- Vladimir Komendantskiy.
- - I2C: Add an I2C, "upper half", character drivers to support raw I2C
- data transfers for test applications.
- - RGB LED: Add a driver to manage a RGB LED via PWM. From Alan
- Carvalho de Assis.
- - Performance Monitoring: Add a character driver that will allow an
- application to read buffered scheduler instrumentation data.
- * Simulation Platform:
- - SMP: Add multi-CPU support to the simulation to support SMP
- investigation. There are issues with the simulation and it is less
- than perfect but sufficient for some very preliminary testing of
- the core SMP feature.
- * ARMv7-A, ARMv7-R, and ARMv7-M:
- - ARMv7-A, ARMv7-R, and ARMv7-M: Add test-and-set logic and
- definitions needed to supports spinlocks.
- - ARMv7-A: Added MPCOre Generic Interrupt Controller (GICv2) and
- Global Timer support
- - ARMv7-A: Now includes in MCU-specific hooks needed for SMP support.
- * Atmel SAMV7 Drivers:
- - HSMSI: HSMCI driver can now be configured to handle unaligned data
- buffers.
- * NXP Freescale LPC11xx/17xx/43xx and LPC2378 Drivers:
- - I2C: Backported the LPC43XX I2C driver, replacing the LPC11XX,
- LPC17XX, and LPC2378 I2C drivers. This gives us the I2C_TRANSFER
- method in all I2C drivers.
- * NXP Freescale LPC17xx Boards:
- - Support for the u-blox GSM and GPS module evaluation board with
- NXP LPCExpresso LPC1768. The GSM module is one of LISA-C200,
- LISA-U200 or SARA-G350. The GPS module is one of MAX-M7 or
- MAX-M8. From Vladimir Komendantskiy.
- * NXP Freescale i.MX6:
- - Basic support is in place for the i.MX6 Quad/Dual MCUs.
- Verification is, however, waiting for the receipt of hardware.
- * NXP Freescale i.MX6 Boards:
- - Sabre-6Quad: Basic support for the NXP/Freescale Sabre 6Quad
- board is in place but waiting for hardware for verification.
- * STMicro STM32:
- - STM32F46xx: Support for STM32F46xx from Paul Alexander Patience
- - STM32L4: Add support for the STM32L4 family. From Sebastien
- Lorquet.
- * STMicro STM32 Boards:
- - STM32F4 Discovery: Add PWM support for the onboard RGB LED. From
- Alan Carvalho de Assis.
- - Nucleo-L476: Add support for the Nucleo-L476 board. From Sebastien
- Lorquet.
- - STM32L476VG Discovery: Add support for the STM32L476VG Discovery
- board. From Dave.
- * Tools:
- - tools/refesh.sh now has a --silent option so that it can be used in
- batch modes without human input.
- * Build System:
- - Added a 'make olddefconfig' target that will refresh a .config file
- without interaction.
- * Applications: NSH
- - 'arp': Add an 'arp' command that will support access to the OS ARP
- table.
- - 'ps': The 'ps' command will show CPU if SMP is enabled.
- * Applications: apps/netutils:
- - apps/netutils/chat: Chat logic contributed by Vladimir
- Komendantskiy.
- - apps/netutils/netlib: Add utility functions to support accesses to
- the ARP table.
- * Applications: apps/examples:
- - apps/examples/chat: Chat example contributed by Vladimir
- Komendantskiy.
- - apps/sysem/ubloxmodem: Example to control the power
- state of the modem in nsh. From Vladimir Komendantskiy.
- - apps/examples/leds: An example to demonstrate use of LED driver.
- - apps/examples/smp: Add a test to verify SMP configurations.
- - apps/examples/rgbled: Example using the RGB LED driver to drive an
- RGB LED via PWM. From Alan Carvalho de Assis.
- - apps/examples/ostest: Add a test of TLS.
- - apps/examples/sched_note: Add a simple example to exercise the
- scheduler instrumentation logic.
- Bugfixes. Only the most critical bugfixes are listed here (see the
- ChangeLog for the complete list of bugfixes and for additional, more
- detailed bugfix information):
- * Core OS:
- - Signals: Move the list of signal actions from the TCB to the group
- structure. Signal handlers are not per thread but, rather, per task
- group. I know, I preferred it the other way too, but this is more
- compliant with POSIX.
- - Semaphores: Add an internal, non-standard interface to reset a
- semaphore count. This is sometimes needed by drivers in order to
- recover from error conditions. Were previously using sem_init()
- which is both inappropriate and incorrect if the semaphore count is
- negative.
- - Low-Priority Work Queue: Fix logic to find an IDLE worker thread;
- the test for busy was backward. From Linfei Chen.
- * File System/Block Drivers:
- - FAT: Add an option to force all transfers to be performed
- indirectly using the FAT file system's internal sector buffers.
- This is a fix for the case where the user provided buffers are not
- properly aligned for DMA (as with THTTPD).
- - MTD: Increase block size in mtd_geometry_s to 32-bits.
- * Common Drivers:
- - I2C: Restructured the I2C interface as necessary to eliminate some
- thread-safety issues inherent in the legacy I2C interface design.
- This effects the interface definition, all I2C clients, and all low-
- level I2C drivers. I have used caution, but I still expect a change
- of this magnitude to introduce some errors. Any bug reports of bug
- fixes will be much appreciated.
- - I2C_RESET: Eliminate up_i2creset(). It should not be a global
- function; Now it is an I2C interface method.
- - PCA555: Add logic to make the PCA555 driver thread safe.
- - syslog: If syslog timestamping is enabled, don't try to get the time
- if the timer hardware has not yet been initialized.
- - AT24xx driver: Correct missing address calculation logic. From Frank
- Benkert.
- * Networking:
- - Networking drivers that support CONFIG_NET_NOINTS: Fix a race
- condition that can cause the TX poll timer to stop running. From
- Manuel Stuhn.
- - Timer Poll: Fix some logic when there are multiple network
- interfaces. In this case, TCP timeout events can really only being
- processed when the poll from the correct device is received.
- * Atmel SAMV7 Drivers:
- - SAMV7 USB HS device: The USB driver has had some issue that would
- occasionally cause loss of packets. Back last December, a fix was
- put in for this but the fix apparently worsens the problem; now
- causing hangs. The basic problem is that the number of busy banks
- (NBUSYBKS) status is not real time but is delayed. This was fixed;
- now when the DMA completes and NBUSYBKS > 0, the NBUSYBK is
- interrupt is enabled and the operations are deferred until NBUSYBKS
- is truly zero.
- * Tools:
- - tools/testbuild.sh: .config files were not being updated because
- (a) kconfig-conf was being called in the wrong directory and (b)
- apps/Kconfig had not yet been created. Now uses 'make
- olddefconfig'.
- * Applications: apps/system:
- - apps/system/i2c: The I2C tool now obeys it OS interfacing: it now
- uses an I2C character driver to access the I2C bus.
- - apps/system/cdcacm, usbmsc, and composite: Use new boardctl()
- instead of calling directly in the OS when possible.
- * Applications: apps/netutils:
- - apps/netutils/dhcpd: DHCPD no longer calls directly into the OS but
- uses the new network IOCTL commands to modify the ARP table.
- * Applications: apps/modbus:
- - apps/modbus/nuttx/portserial.c: Was not returning an error on
- failure to open the device driver. From Olololshka kokoko.
- * Applications: apps/examples:
- - apps/examples/usbserial, composite, usbterm: Use new boardctl()
- instead of calling directly in the OS when possible. There are
- still a few bad OS calls for USB device interfaces that do not yet
- have boardctl() commands.
- * Applications: apps/platform:
- - Moved C++ initialization logic out of the RTOS and into the
- application space, specifically to apps/platform/board, where it
- belongs.
- NuttX-7.16 Release Notes
- ------------------------
- The 116th release of NuttX, Version 7.16, was made on June 1, 2016,
- and is available for download from the Bitbucket.org website. Note
- that release consists of two tarballs: nuttx-7.16.tar.gz and
- apps-7.16.tar.gz. These are available from:
- https://bitbucket.org/nuttx/nuttx/downloads
- https://bitbucket.org/nuttx/apps/downloads
- Both may be needed (see the top-level nuttx/README.txt file for build
- information).
- Additional new features and extended functionality:
- * Core OS:
- - Power Management: Add activity domain to all PM interfaces and
- driver callbacks. If CONFIG_PM_NDOMAINS == 1, then the legacy
- behavior is preserved. If CONFIG_PM_NDOMAINS > 1, then multiple
- PM domains are supported. This will allow separate control for
- certain power management groups. For example, a network can be
- shut down without affect an ongoing UI (and vice versa).
- - board_app_initialize(): board_app_initialize() now accepts an
- argument that may be used to support initialization in different
- configurations.
- * File System and Block and MTD Drivers:
- - N25Qxxx: Add MTD support for Micron N25Qxxx family of QSPI flash.
- From Dave (ziggurat29).
- - SST26F: Add an MTD driver for SST26F spi/qspi flash devices (SPI
- mode only). From Sebastien Lorquet.
- - File Descriptor Detach: Add logic to detach a file structure from a
- file descriptor. This is for use only within the OS. It permits an
- open file or driver to be used across multiple threads.
- * Networking and Network Drivers:
- - listen()/accept(): Separate out psock_listen() and psock_accepti()
- for internal, thread independent OS usage (i.e., without a socket
- descriptor).
- - VNC Server: Add support for a VNC server. This logic is code
- complete and functional, but not well tested.
- * Graphics and Graphic Drivers:
- - Framebuffer driver: Add a display number to each interface in order
- to support multiple display devices.
- - VNC Server: Add support for a VNC server. This logic is code
- complete and functional, but not well tested.
- - LCD Backpack: Add support for PCF8574 LCD Backpack driver. This
- driver supports an interface board that is based on the PCF8574 I/O
- expander and supports the HD44780-based (or compatible) LCD modules.
- There are a myriad of different vendors of such, but they are
- principally the same, save wiring and minor features like jumpers
- for I2C addresses. This driver supports known and unknown variants.
- From Dave (ziggurat29).
- * Common Device Drivers:
- - RTC: Simplify the RTC interface. The old interface was way too
- complex and was not fully implemented anywhere.
- - BH1750FVI: Add a character driver for Rohm Ambient Light Sensor
- BH1750FVI. From Alan Carvalho de Assis.
- - CAN: Improve CAN error reporting. From Frank Benkert.
- - aes.h: Modifications to the crypto API needed for LPC43xx. From
- Alexander Vasiljev.
- - ADC: Interface no longer uses global adc_receive() call. Added a
- new bind() method to the ADC interface. Now the ADC upper half
- driver will register its receipt-of-data callback. This change
- allows the ADC lower half driver to be used with a differ ADC upper
- half.
- * Simulation Platform:
- - Linux Host Networking: Enhance networking support for the
- simulation under Linux. Includes updated support for Linux TUN/TAP,
- and the addition of support for Linux bridge devices. From Steve.
- * ARMv7-A, ARMv7-R, and ARMv7-M:
- - ARMv7-M: Convert more assembly language files for use with the IAR
- toolchain. From Kha Vo.
- - ARMv7-A: Complete re-design of SMP-related logic to initialize each
- CPUn, n > 0, when CONFIG_SMP=y.
- * Atmel SAMV7:
- - Add a JTAG config and ERASE config to Kconfig to set the
- CCFG_SYSIO SYSIO Pins. From David Sidrane.
- - System Reset: Add the up_systemreset interface to the samv7 arch. The
- approach is slightly different in that: 1) It enables ARCH_HAVE_RESET
- and allows the user to set if, and for how long, to drive External
- nRST signal. It also does not contain a default board_reset, as that
- really should be done in the config's src if CONFIG_BOARDCTL_RESET
- is defined. From David Sidrane.
- * Atmel SAMV7 Boards:
- - SAMV71-XULT: Add configuration(s) that were be used to verify VNC
- graphics output as well as mouse and keyboard input.
- * NXP Freescale i.MX6 Boards:
- - Sabre-6Quad: The basic i.MX6 port is complete. This is a minimal
- port at present and probably still has some as-of-yet-undiscovered
- issues.
- - Sabre-6Quad: Basic SMP NSH configuration is now working. But this
- is probably only because the SMP test case does not stress the
- logic. There are know outstanding SMP issues as noted in the
- Sabre-6Quad README.txt file.
- * NXP Freescale LPC43xx:
- - LPC4337jet100: Add definitions for the LPC4337jet100 chip. From
- Alexander Vasiljev.
- * NXP Freescale LPC43xx Drivers:
- - AES: Add AES support. From Alexander Vasiljev.
- * STMicro STM32:
- - STM32 L4: Add configuration options to allow SRAM2 to be used for
- heap, or not at all, and to zero-initialize it on OS start, or not
- at all. From Dave dev@ziggurat29.com.
- - STM32 L4: Add support for HSE and MSI clocks, and auto trim of MSI
- to LSE (needed for USB). From Dave (ziggurat29)
- - STM32 L4: Add support for unique id function to arch; modified board
- to support unique id boardctl. From Dave (ziggurat29)
- * STMicro STM32 Drivers:
- - STM32 F4 RTC: Add a custom RTC driver with support for alarms. From
- Neil Hancock.
- - STM32 L4 QSPI: Add a QSPI driver with DMA support and (optional
- memory mapped mode support. From Dave ziggurat29).
- - STM32, STM32 L4, and STM32 F7 Serial: Add support for compliant
- SD-style breaks. From David Sidrane.
- - STM32 L4 CAN: Add CAN support for STM32L4. From Sebastien Lorquet.
- - STM32 1-Wire: Add support for a custom 1-wire driver. The serial
- driver already supports a 1-wire interface, but this driver uses the
- same serial logic to implement a lower half driver much like the
- I2C lower half driver. From Aleksandr Vyhovanec.
- - STM32 L4 SPI: Add support for SPI 4 and 5 on stm32f411 chips. From
- Konstantin Berezenko.
- - STM32 ADC: Allow omitting use of channels in a lower part of PWM.
- From Pierre-noel Bouteville.
- - STM32 L4 I2C: Get I2C working for STM32L4. From Dave (ziggurat29).
- * STMicro STM32 Boards:
- - STM3220G-EVAL: Add support for both the IAR and uVision GCC IDEs.
- From Kha Vo.
- - STM32F429I Discovery: Add support for the uVision GCC IDE. From
- Kha Vo.
- - STM32F4 Discovery: Integrate BH1750FVI driver in the STM32F4 Discovery
- board. From Alan Carvalho de Assis.
- - STM32L476VG Discovery: Add support for QSPI based N25Qxxx flash.
- From Dave (ziggurat29)
- - STM32L476VG Discovery: Add board ioctls for allowing user application
- to cause QSPI memory mapped mode to be engaged and disengaged. Also
- partitioned QSPI flash for file system and other (eventually xip).
- From Dave (ziggurat29)
- - Nucleo-144: Basic port for the Nucleo-144 board with the STM32F746ZG
- MCU. From Kconstantin Berezenko.
- - STM32F103 Minimum: Add support for this minimual STM32F103CBT6 "blue"
- board. From Alan Carvalho de Assis.
- - STM32F411E Discovery: Add basic configuration for stm32f411e-disco
- board with STM32F411VE chip. From Konstantin Berezenko.
- * Build/Configuration System:
- - Moved NuttX repository to https://bitbucket.org/nuttx/nuttx.
- Eliminated use of sub-modules.
- - Add support for the IAR toolchain for the limited case of the ARMv7-M
- architecture and the STM32 chip. From Aleksandr Vyhovanec.
- - make export: Pass top-level make to the script to allow -j greater
- than 1. From David Sidrane.
- - fs/Kconfig: Allow CONFIG_FS_WRITABLE to be manually selectable. This
- is needed when there are no writable file systems, but write support
- is still needed in BCH or FTL.
- - arch/*/Makefile: Add definitions that can be overrided to use GCC
- instead of LD in the final link. From Paul Alexander Patience .
- * Applications: apps/netutils:
- - apps/netutils/esp8266: ESP8266 driver application. From Pierre-noel
- Bouteville.
- * Applications: apps/examples:
- - apps/examples/alarm: Add a simple test of the ALARM iotcl calls of
- the RTC driver.
- - apps/examples/nximage: Add a configuration option to select
- greyscale.
- * Platforms: apps/platform:
- - apps/platform/nucleo-144: Add platform files for NUCLEO-144
- (NUCLEO-F746ZG). From Mark Olsson.
- - apps/examples/media: You can now override the default device driver
- path by providing an alternal path on the command line. From
- Sébastien Lorquet.
- Works-In-Progress:
- * IEEE802.14.5/6LowPAN. Hooks and framework for this effort were
- introduced in NuttX-7.15. Work has continued on this effort on
- forks from the main repositories, albeit with many interruptions.
- The completion of this wireless feature will postponed until at
- least NuttX-7.17.
- * i.MX6 SMP. Partially functional, but there is more that still
- needs to be done.
- Bugfixes. Only the most critical bugfixes are listed here (see the
- ChangeLog for the complete list of bugfixes and for additional, more
- detailed bugfix information):
- * Core OS:
- - Various places: Search for places where a stray semicolon following
- an if condition cause the if body to be executed unconditionally.
- Fixes in all SAM DMA logic, unionfs, OS signalling logic, and others.
- - enter/leave_critical_section() may attempt to access task lists
- before they have been initialized in the SMP configuration.
- * File System/Block Drivers:
- - SMART MTD: Return code of smart_scan not checked, can cause success
- result in failure case, leading to 'dev' pointer being invalid. From
- Dave (ziggurat29)
- - mount: Fix a backward debug assertion. Noted by David Sidrane.
- * Common Drivers:
- - NRF24L01: Fix backward calculation of relative frequency. Noted by
- Henry Zhang.
- - PCA9555 I/O expander: Fix an error in the PCA9555 driver: Under
- certain error conditions, interrupts were not being re-enabled.
- Sebastien Lorquet.
- - ADS1255: Must not do SPI access from interrupt handler. Use the
- worker thread instead. Must also lock the SPI bus before using it.
- - Several SPI-based drivers modified. All drivers that use SPI must
- call SPI_LOCK and SPI_UNLOCK. This is not optional.
- - MS583730: Fix a bug in crc computation for ms583730. Implement
- POSIX read.
- * Atmel SAMV7:
- - Fix typo in MATRIX register definitions. From Stefan Kolb.
- - SAMV7 Tickless Mode: This is a fix to a problem in the handling of
- the oneshot timer. Due to a wrong assumption concerning the behavior
- directly after the start of the timer/counter the function
- sam_oneshot_cancel(…) calculates the wrong remaining time. The code
- assumes that the counter register is zero directly after the start
- of the timer, but this is not true. To start the time/counter a
- software trigger is invoked, this trigger starts the timer/count and
- sets the counter register to zero, but the reset of the counter
- register is not performed instantly. According to the datasheet:
- "The counter can be reset by a trigger. In this case, the counter
- value passes to zero on the next valid edge of the selected clock."
- Thus the counter is set to zero between 0 and USEC_PER_TICK
- microseconds after the clock was started.
- In my fix I use the freerun count value to determine if at least one
- tick passed since the start of the timer and thus if the value of
- the oneshot counter is correct. I also tried to use the function
- up_timer_gettime(…) to achieve this but, at least if compiled with
- no optimization the problem vanishes without using the value of the
- function, the function call takes too long.
- Another problem treated in the fix is that if the oneshot timer/counter
- is canceled, we only know the remaining time with a precision of
- USEC_PER_TICK microseconds. This means the calculated remaining time
- is between 0 and USEC_PER_TICK microseconds too long. To fix this I
- subtract one tick if the calculated remaining time is greater than
- one tick and otherwise set the remaining time to zero. By doing so
- the measured times are much more precise as without it. From Stefan
- Kolb.
- * Atmel SAMA5:
- - SAMA5: Stefan Kolb's change to the SAMV7 Oneshot Timer should also
- be applied to the SAMA5 oneshot time since the drivers are identical.
- * Atmel SAM3/4:
- - SAM3/4: Stefan Kolb's change to the SAMV7 Oneshot Timer should also
- be applied to the SAM3/4 oneshot time since the drivers are identical.
- * Atmel SAMV7 Drivers:
- - SAMV7 TWIHS (as well as SAM3/4 and SAMA5: Ensure that the TWIHS
- (i2c) hw get's its clock set when the sequence of
- sam_i2cbus_initialize(), sam_i2cbus_uninitialize(), then
- sam_i2cbus_initialize() or twi_reset() is called. I found this a
- while back in the stm32 family, so there may be more arch-es with
- this sort of bug. I suppose any driver that has the notion of "do
- not set the freq if it is already set" could be suspect. From David
- Sidrane.
- - USBHS Device: Remove disabling of whole USB on suspend of USBHS.
- This fix removes the disabling of the whole USB peripheral on
- suspend interrupt. Its enough to freeze the clock instead. When
- disabling the whole peripheral, the next wakeup-interrupt comes up
- with an disabled clocking. The unfreeze clock has no effect, because
- the master clock is disabled. This makes all registers, including
- the IDR unwriteable and the IRQ falls in an endless loop blocking
- the whole system. Furthermore the disabling of the peripheral clock
- prevents hotplugging or reconnecting the USB. From Frank Benkert.
- - MCAN: Fix missing unlock of device in MCAN mcan_txempty(). From
- Frank Benkert.
- * STMicro STM32:
- - STM32 L4 Clocking: Problem with resetting backup domain clears
- clocking options set up before in *rcc.c use INITS flag to avoid
- magic reg value to detect power up reset state of RTC correct a
- problem clearing interrupt flags (they weren't) which prevented an
- alarm from ever being used more than once per reset cycle. From
- Dave (ziggurat29)
- * STMicro STM32 Drivers:
- - STM32L4 SPI: That STM32Lr SPI driver is quite different. They now
- handle frames of arbitrary size between 4 and 16 bits. It was broken
- before a new bit has to be set (RX fifo threshold) to handle <= 8-bit
- transactions. If not set, the default is 16-bit packed >=8-bit
- frames and the RXNE bit is never set (it is set when 16-bits are
- received). weird things as always. This also add 8-bit access
- routines to the data register, because a 16-bit access to the data
- register when the frame size is below 9 bits is interpreted as a
- packed dual frame exchange. Sebastien Lorquet.
- - STM32: Correct some bad commits that broke the LTDC display example.
- From Marco Krahl.
- - STM32 F4 RTC: Fix logic in F4 RTCC driver that prevent ALARM
- interrupt. From Neil Hancock.
- - STM32 F1 ADC: Fix STM32 ValueLine ADC IRQ number selection. From
- David Sidrane.
- * STMicro STM32 Boards:
- - STM32F429I Discovery: Correct some bad commits that broke the LTDC
- display example. From Marco Krahl.
- * TI Tiva:
- - GPIO Interrupts: Fix a bug of GPIO falling-edge interrupt for tiva.
- From Young.
- * C Library:
- - math: Add a NAN test on 'x' in asin function of lib_asin.c. Suggested
- by Pierre-noel Bouteville.
- * Build/Configuration System:
- - Several Makefiles: Add .PHONY definitions to prevent 'clean up to date'
- message weirdness when 'make clean' is done with no .config or
- Make.defs file.
- NuttX-7.17 Release Notes
- ------------------------
- The 117th release of NuttX, Version 7.17, was made on July 25, 2016,
- and is available for download from the Bitbucket.org website. Note
- that release consists of two tarballs: nuttx-7.17.tar.gz and
- apps-7.17.tar.gz. These are available from:
- https://bitbucket.org/nuttx/nuttx/downloads
- https://bitbucket.org/nuttx/apps/downloads
- Both may be needed (see the top-level nuttx/README.txt file for build
- information).
- Additional new features and extended functionality:
- * File System and Block and MTD Drivers:
- - drivers/mtd: Add a driver of IS25xP SPI flash devices. Based on
- sst25xx driver. From Marten Svanfeldt.
- * Networking and Network Drivers:
- - Break out internal interface psock_ioctl().
- * Common Device Drivers:
- - PTYs: Added support for pseduo-terminals: Device drivers that can be
- used for communications between tasks (usually with re-directed I/O).
- Based on existing pipe logic.
- - Button upper half driver: Added support for poll().
- - CAN: Add support for poll. From Paul Alexander Patience.
- - GPIO: Add support for a simple GPIO driver. It supports only pre-
- configured input, output, and interrupting pins with basic input and
- output operations. Interrupt events can lead to notification via a
- signal.
- - I/O Expander: Shadow-Mode: The output- and configuration registers of
- the IO-Expander are held in the microcontrollers memory and only
- written to the IO-Expander. This reduces bus traffic and is more
- error-proof than the normal read-modify-write operation. Retry Mode:
- If enabled and an error occurs while writing to the IO-Expander the
- current transmission is automatically repeated once. From Michael
- Spahlinger.
- - Pipes/FIFOs: Add support to allocating different sizes for pipe and
- fifo buffers. Adds mkfifo2() and pipe2() which are just like mkfifo()
- and pipe(), but allow control of the size of the underlying, in-memory
- circular buffer. Move pipe() and mkpipe() to the C library, they are
- no longer core OS interfaces. Capability currenty used only by PTY
- logic to support, configurable, smaller buffers for PTYs.
- * SYSLOG/Debug Output:
- - SYSLOG: Consolidated all SYSLOG logic in drivers/syslog. Added an
- abstraction layer that supports: (1) redirection of SYSLOG outpout.
- This is usually so that you can boot with one SYSLOG output but
- transition to another SYSLOG output when the OS has initialialized,
- (2) adds common serialization of interrupt output as a configuration
- option. Without this configuration setting, interrupt level output
- will be asynchronous. And (3) vsyslog is now a system call and is
- usable with other-than-FLAT builds.
- - SYSLOG: syslog() will now automatically redirect output to
- lowsyslog() if called from an interrupt handler.
- - Extended SYSLOG logic so that we can send SYSLOG output to a file.
- - SYSLOG character device channel will now expand LF to CR-LF.
- Controllable with a configuration option.
- - Add a SYSLOG character device that can be used to re-direct output
- to the SYSLOG channel (Not be be confused the SYSLGO output to a
- character device).
- - Debug features are now enabled separately from debug output.
- (1) CONFIG_DEBUG is gone. It is replaced with CONFIG_DEBUG_FEATURES.
- (2) The macros dbg() and vdbg() have renamed as _err() and _info(),
- respectively. This also applies to all of the variants as well,
- XXdbg() and XXvdbg(). (3) Add a new debug level, _warn() (and
- all variants XXwarn(), XXvwarn(), etc.). (4) Debug assertions can
- now be enabled separately from debug output. (5) You can now enable
- subsystem/device driver debug output at different output levels. For
- example, CONFIG_DEBUG_FS no longer enables file system debug output
- It enables general file system debug logic and enables selection of
- CONFIG_DEBUG_FS_ERROR, CONFIG_DEBUG_FS_WARN, and CONFIG_DEBUG_FS_INFO.
- - Since the SYSLOG layer now automatically handles low-level vs.
- high-level output, the low-level (ll) variants of the debug macros
- were eliminated.
- - Reviewed all uses of *err(). These macro family should indicate
- only error conditions. Convert *err() to either *info() or add
- ERROR:, depending on if an error is reported.
- - _alert(): New debug macro: _alert(). This is high priority,
- unconditional output and is used to simplify and standardize crash
- error reporting.
- - Many CONFIG_DEBUG_* options did not have matching macros defined in
- include/debug.h. Rather, there were various definitions scattered
- throughout the sourse tree. These were collected together and
- centralized with single macro definitions in include/debug.h
- * Simulation Platform:
- - Added the simulated QSPI (N25Q) flash to the simulation and extened
- flash simulation capabilities to run with MTD drivers based on config
- options (currently m25p, sst26 and w25). From Ken Pettit.
- * Atmel SAMV7 Drivers:
- - SPI: SPI-Freq. 40MHz; VARSELECT; hw-features This change adds the
- following improvements:
- o Increase the allowed SPI-Frequency from 20 to 40 MHz.
- o Correct and rename the "VARSELECT" option This option was
- included in the code as "CONFIG_SPI_VARSELECT" but nowhere
- defined in a Kconfig file. The change renames it to
- "CONFIG_SAMV7_SPI_VARSELECT" and corrects the implementation
- according the datasheet of Atmel. In short, this option
- switches the processor from "fixed peripheral selection"
- (single device) to "variable peripheral selection" (multiple
- devices on the bus).
- o Add a new Function to the interface to control the timing and
- delays of the chip according the ChipSelect lines. This function
- can control the delay between the assertion of the ChipSelect and
- the first bit, between the last bit and the de-assertion of the
- ChipSelect and between two ChipSelects. This is needed to tune
- the transfer according the specification of the connected devices.
- o Add three "hw-features" for the SAMV7, which controls the behavior
- of the ChipSelect:
- - force CS inactive after transfer: this forces a (short) de-
- assertion of the CS after a transfer, even if more data is
- available in time
- - force CS active after transfer: this forces the CS to stay
- active after a transfer, even if the chip runs out of data.
- Btw.: this is a prerequisit to make the LASTXFER bit working
- at all.
- - escape LASTXFER: this suppresses the LASTXFER bit at the end
- of the next transfer. The "escape"-Flag is reset automatically.
- From Frank Benkert
- - TWISHS: Driver improvements from Michael Spahlinger.
- - GPIO-Driver fixed for Open-Drain Pins:
- o sam_gpioread: Now the actual line level from the pin is read
- back. This is extremely important for Open-Drain Pins, which
- can be used bidirectionally
- o Re-Implemented twi_reset-function and enhanced it so it can be
- called from inside the driver (see next point)
- o Glitch-Filter: Added a configuration option to enable the twi-
- built-in glitch filter
- o Added a "Single Master Mode": In EMC Testing the TWI-Bus got
- stuck because the TWI-Master detected a Multi-Master access (but
- there is no second master). With the option "Single Master" we
- detect these events and automatically trigger a twi_reset. We
- also do an automatic recovery if a slave got stuck (SDA stays
- low).
- With the above changes I²C-Bus reliability in harsh environments (eg.
- EMC) is greatly improved. The small change in the GPIO-Driver was
- necessary because otherwise you cannot read back the correct line
- status of Open-Drain Outputs and this is needed by the twi_reset
- function. From Michael Spahlinger
- * NXP Freescale LPC43xx Drivers:
- - EMC: Extend LPC43xx EMC code to support SDRAM on a dynamic memory
- interface. From Vytautas Lukenskas.
- * NXP Freescale Kinetis:
- - Kinetis K64: Add basic support for the K64 family. I leveraged the
- changes from https://github.com/jmacintyre/nuttx-k64f and merged
- into the existing kinetis code with a lot of changes and additions
- (like pin multiplexing definitions).
- * NXP Freescale Kinetis Drivers:
- - Add a KinetisUSB device controller driver. Derived from the pic32mx
- usb driver, which uses the same usb controller. From kfazz.
- - Kinetis pwm support, based on the KL pwm driver. From kfazz.
- - Kinetis Ethernet: Add support for the KSZ8081 PHY.
- - Kinetis Ethernet: Modified Ethernet driver to try all PHY addresses
- and then only fail if the driver cannot find a usable PHY address.
- This means that you no longer have to specific the PHY address in
- advance.
- - Kinetis Ethernet: Add support for CONFIG_NET_NOINTS. The driver no
- longer runs the networking at interrupt level but can defer interrupt
- work to the high-priority work queue.
- * NXP Freescale Kinetis Boards:
- - Teensy-3.x: Add USB support and a usbnsh configuration.
- From kfazz (2016-06).
- - Freedom-K64F: Add support for the NXP Freedom-K64F board at 120MHz.
- This is primarily the work of Jordan Macintyre. I leveraged this
- code from https://github.com/jmacintyre/nuttx-k64f which was, itself,
- a leverage from the old K60 TWR configuration. This includes
- significant corrections (LEDs, buttons, README, etc) and extensions
- and updates to match more recent BSPs.
- - Freedom-K64F: Added a configuration that supports networking.
- * STMicro STM32:
- - STM32 F1-4: Added support for the STM32F105R. From Konstantin
- Berezenko.
- - STM32 F4: Added support for the STM32FF76xxx and STM32FF7xx
- families. From David Sidrane.
- - STM32 F1-4: Add support for Tickless mode (two timer
- implementation). From Max Neklyudov.
- - STM32 L4: Add support for tickless OS, and incidentally timers,
- PWM, oneshot, free-running.... From ziggurat29.
- * STMicro STM32 Drivers:
- - STM32 F1-4: Add the up_getc() function to STM32 in order to support
- the minnsh configuration. From Alan Carvalho de Assis.
- - STM32 F7: Add SPI driver. From David Sidrane.
- - STM32 F7: Add SPI, I2C, and ADC drivers. From Lok Tep.
- - STM32 L4: Add ioctls to set/get CAN bit timing in stm32l4. Add
- ioctl hooks to allow future management of can id filters. From
- Sebastien Lorquet.
- - STM32 L4: Add some CAN mode IOCTL calls. These will be useful for
- device autotest when the application boots. They are redundant
- with the CONFIG_CAN_LOOPBACK option, which can now just be
- interpreted as a default setting. From Sebastien Lorquet.
- - STM32 F1-4: Port STM32L4 CAN IOCTLs to STM32. From Sebastien Lorquet.
- - STM32 L4: Implementation of loopback IOCTLs. From Sebastien
- Lorquet.
- - STM32 F7: Added SDMMC1 support for stm32F7 74-75. From Lok Tep.
- - STM32 F7: Add USB support. From Lok Tep.
- - STM32 F7: Added PWR, RTC, and BBSRAM support for stm32f7. From David
- Sidrane.
- - STM32 F7: Added STMF7xxx RTC. From David Sidrane.
- - STM32 F7: Added STM32F7 DBGMCU. From David Sidrane.
- - STM32 L4: Port support for both RX FIFOs from STM32 CAN. From Paul
- Alexander Patience.
- * STMicro STM32 Boards:
- - Added a minnsh configuration for the STM32F103-Minimum board. From
- Alan Carvalho de Assis .
- - Added support for the Nucleo-F767ZI board. From David Sidrane.
- - Nucleo-144/Nucleo-F767ZI: Add test for STM32 F7 SPI. From David
- Sidrane.
- - Nucleo-144: Added SDMMC support to Nucleo-144. From David Sidrane.
- - Olimex STM32-E4077: Add support for Olimex STM32 E407 board. From
- Mateusz Szafoni.
- - Nucleo-144: Added USB OTG device to Nucleo-144. From David Sidrane.
- - Nucleo-144: Added bbsram test to Nucleo-144. From David Sidrane.
- - STM32F4 Disovery: Add CAN support for STM32F4 Discovery. From
- Matthias Renner.
- - STM32F4 Disovery: added a canard configuration files. From
- Matthias Renner.
- - STM32F4 Discovery: Add FPU support for ostest for the STM32F4
- Disovery platform. From David Alessio.
- - STM32L476 Discovery: Update stm32l476 disco to include init code for
- smartfs and nxffs for cases where those fs are included in build.
- From ziggurat29.
- * C Library/Header Files:
- - include/assert.h: Check if NDEBUG is defined. From Paul Alexander
- Patience.
- - assert.h: Define static assert for C++ usage. From Paul Alexander
- Patience.
- - Add crc64 support. From Paul Alexander Patience.
- - hex2bin: Move the portable library portion of apps/system/hex2bin
- the C library with the OS internals. It is used in certain internal
- boot-loader builds.
- - Add raise().
- - libm: This change should significantly improve the performance of
- single precision floating point math library functions. The vast
- majority of changes have to do with preventing the compiler from
- needlessly promoting floats to doubles, performing the calculation
- with doubles, only to demote the result to float. These changes only
- affect the math lib functions that return float. From David Alessio.
- - printf(): If there are no streams, let printf() fall back to use
- syslog() for output.
- - Move pipe() and mkpipe() to nuttx/libc, they are no
- longer core OS interfaces. Capability currenty used only by PTY logi
- to support, configurable, smaller buffers for PTYs.
- - Move driver-related files from include/nuttx to include/nuttx/drivers.
- Move driver related prototypes out of include/nuttx/fs/fs.h and into
- new include/drivers/drivers.h.
- - include /nuttx/lib: Move library-related files from include/nuttx to
- include/nuttx/lib.
- * Build/Configuration System:
- - Custom Board Configuration: Add logic to support custom board
- directories that include a Kconfig file. During the context phase
- of the build, any Kconfig file in the custom board directory is
- copied into configs/dummy, replacing the existing Kconfig file with
- the target Kconfig file.
- - Remove the includes/apps link to apps/include. It is no longer
- used. From Sebastien Lorquet.
- * Tools:
- - tools/tesbuild.sh will now build NxWM configurations.
- * Appplication Build/Configuration System:
- - Change to the way that apps/ Kconfig files are generated in
- order to better support reuse of the apps/ directory in NuttX
- products. Changes include: Make the full tree use wildcards
- make.defs, Add empty preconfig rules to 'leaf' makefiles, Use
- directory.mk for recursive dir makefiles, Individual app kconfig
- fixes, Recursive Kconfig autogeneration, Add kconfig files for
- pcode and tiff, and fix a gitignore rule, From Sébastien Lorquet.
- - apps/include directory structure reorganized. There are no longer
- any header files in the apps/include/. directory. Rather, sub-
- directories were added to match the partitioning of apps/ sub-
- directories and the header files were moved into the appropriate
- sub-directory. This change is intended to help with some changes
- being considered by Sébastien Lorquet.
- - Call all includes from <apps/bla/bla.h> to "bla/bla.h". From Sebastien
- Lorquet.
- - Add apps/include to include path in top-level Make.defs file.
- * Applications: apps/nshlib:
- - Make NSH net-initialization be a configuration option. From Marten
- Svanfeld.
- - Add NTP client initialization in NSH network startup logic. From
- David S. Alessio .
- - 'ps' command now prints out the stack usage if stack coloration is
- enabled. From Frank Benkert.
- - Allow stack usage to be disabled on constrained systems. From David
- Sidrane.
- * Applications: apps/netutils:
- - NTP Client: Add retries. From David S. Alessio.
- - NTP Client: The NTP client will now optionally use pool.ntp.org as
- the NTP server; and reset the retry count upon success -- more robust.
- From David Alessio.
- - ESP8266: Add logic to set the BAUD rate. From Pierre-noel Bouteville.
- - ESP8266: In Kconfig, select ARCH_HAVE_NET when NETUTILS_ESP8266 is
- selected. This allows, among other things, support for network debug
- output. From Pierre-noel Bouteville.
- * Applications: apps/fsutils:
- - flash_eraseall: IOCTL wrapper for MDCIO_BULKERASE command. Was in
- nuttx/drivers/mtd. Moved to apps/fsutils because the call directly into
- the OS was incorrect.
- * Applications: apps/canutils:
- - canlib: Basic CAN utility library. From Sebastien Lorquet.
- * Platforms: apps/system:
- - flash_eraseall: Now uses the IOCTL wrapper at apps/fsutils/flash_eraseall.
- * Platforms: apps/platform:
- - Add platform files for Olimex STM32 E407. From Mateusz Szafoni.
- * Applications: apps/examples:
- - apps/examples/canard: Add canard example application. From
- Matthias Renner.
- - apps/examples/pty_test: PTY test program. From Alan Carvalho de
- Assis.
- Works-In-Progress:
- * IEEE802.14.5/6LowPAN. Hooks and framework for this effort were
- introduced in NuttX-7.15. Work has continued on this effort on
- forks from the main repositories, albeit with many interruptions.
- The completion of this wireless feature will postponed until at
- least NuttX-7.18.
- * i.MX6 SMP. Partially functional, but there is more that still
- needs to be done.
- Bugfixes. Only the most critical bugfixes are listed here (see the
- ChangeLog for the complete list of bugfixes and for additional, more
- detailed bugfix information):
- * Core OS:
- - semaphores: Need to set errno to EINVAL on errors in sem_post()
- and sem_wait(). From Paul Alexander Patience.
- * File System/Block Drivers/MTD Drivers:
- - Several MTD FLASH drivers nullify the freed 'priv' structure and
- failed to return NULL as stated in the comments. Result, will
- operate on a NULL pointer later. Noted by David Sidrane.
- - VFS ioctl(). Per comments from David Sidrane, file_ioctl() should
- not return succeed if the ioctl method is not supported. It
- probably should return ENOTTY in that case.
- - SST26 Driver: Before accessing the sst26 flash, the "Global Unlock"
- command must me executed, which I do in the sst26 driver. BUT re-
- reading the datasheet, the WREN instruction is required to enable
- the execution of this command. This was not done. I have no idea how
- the driver currently works except by chance. The writes should never
- happen at all, the flash is half-enabled! From Sebastien Lorquet.
- - N25Qxx Driver: Alter the notion of 'blocksize' to be equivalent to
- 'flash write page size' in order to align with assumptions in the
- smartfs driver (at least, maybe other things do as well). Correct a
- bug that was previously masked by having blocksize=eraseblocksize
- which would cause buffer overflows and delicious hardfaults.
- Trivial spelling changes in comments, etc. From ziggurat29.
- - SmartFS: Fix a 32-byte memory leak. From Ken Pettit.
- - SMART MTD layer: Fixes freesector logic error when sectorsPerBlk=256,
- adds DEBUGASSERT for invalid geometry and additional memory debug
- logic. Also fixes the dangling pointer on error bug. From Ken
- Pettit.
- * Common Drivers:
- - USB CDC/ACM Device Class: cdcacm_unbind leaks write request objects.
- This arises due to freeing the bulk IN endpoint before the loop
- that frees the requests via cdcasm_freereq. That function checks
- the parameters and skips the freeing if either is NULL. Freeing
- the bulk IN enpoint will cause the first param to be NULL, thereby
- bypassing the free operation. To fix, I moved the release of the
- bulk IN endpoint until after to loop (much as was the case for the
- OUT and read requests, which did not exhibit the problem). From
- ziggurat29.
- - Pipes and FIFOs: Add missing configuration for pipe ring buffer
- size. From Frank Benkert.
- - UART 16550: Handle when CONFIG_SERIAL_UART_ARCH_IOCTL is not
- enabled. From Heath Petersen.
- - Common Serial Upper Half: Fix a race condition noted by Stefan
- Kolb. Between the test if the TX buffer is full and entering a
- critical section, bytes may be removed from the TX buffer making
- the wait unnecessary. The unnecessary wait is an inefficiency,
- but not really a problem. But with USB CDC/ACM it can be a problem
- because the entire TX buffer may be emptied when we lose the race.
- If that happens that uart_putxmitchar() can hang waiting for data
- to be removed from an empty TX buffer.
- - USB MSC Device Class: Add locks when removing request from queue.
- From Wolfgang Reissnegger.
- - USB MSC Device Class: Fix reversed logic on waiting for SCSI thread
- start. The scsi thread was waiting for the wrong condition.
- However, this was masked by the fact that the code creating the
- scsi thread was also holding usbmsc_scsi_lock(priv) while
- initializing data, hence this lock synchronized the scsi thread
- start with init completion. From Wolfgang Reissnegger.
- * Graphics and Graphic Drivers:
- - Correct conditional compilation in ST7565 LCD driver. From Pierre-
- noel Bouteville
- * Networking:
- - In both IPv6 and IPv4 incoming logic: (1) Should check if the
- packet size is large enough before trying to access the packet
- length in the IP header. (2) In the comparison between the IP
- length and the full packet length, need to subtract the size of
- he link layer header before making the comparison or we will get
- false positives (i.e., the packet is really too small)
- - TCP Networking: While working with version 7.10 I discovered a
- problem in TCP stack that could be observed on high network load.
- Generally speaking, the problem is that RST flag is set in
- unnecessary case, in which between loss of some TCP packet and its
- proper retransmission, another packets had been successfully sent.
- The scenario is as follows: NuttX did not receive ACK for some sent
- packet, so it has been probably lost somewhere. But before its
- retransmission starts, NuttX is correctly issuing next TCP packets,
- with sequence numbers increasing properly. When the retransmission
- of previously lost packet finally succeeds, tcp_input receives the
- accumulated ACK value, which acknowledges also the packets sent in
- the meantime (i.e. between unsuccessful sending of lost packet and
- its proper retransmission). However, variable unackseq is still set
- to conn->isn + conn->sent, which is truth only if no further
- packets transmission occurred in the meantime. Because of incorrect
- (in such specific case) unackseq value, few lines further condition
- if (ackseq <= unackseq)is not met, and, as a result, we are going to
- reset label. From Jakub Lagwa.
- * ARMv7-M:
- - ARM stack check: Fix double fault on IDLE task with stack size = 0.
- From David Sidrane.
- * Atmel SAMV7 Drivers:
- - CAN: CAN Message Filtering fixed: (1) stdfilters didn't work because
- the filter was never enabled (wrong number of bits to shift), and
- (2) Filters were never used because the configuration register
- cannot be written without using the initialization mode. Both bugs
- are fixed by this change. Filtering has been tested with both
- standard and extended identifiers and is now working properly. From
- Michael Spahlinger.
- * Atmel SAMA5:
- * Atmel SAM3/4 Drivers:
- - Fix some errors in AFEC header file. From OrbitalFox.
- - DAC: DACC_WPMR_WPKEY_MASK -> DACC_WPMR_WPKEY. From Wolfgang
- Reissnegge.
- - Timer: Fix ops check in TCIOC_STOP. From Wolfgang Reissnegge.
- - I2C: Fix reversed logic in twi_startmessage(). From Wolfgang
- Reissnegger.
- - SAM3/4 UDP: Fix handling of endpoint RX FIFO banks. This fixes
- a race condition where the HW fills a FIFO bank while the SW is
- busy, resulting in out of sequence USB packets.
- * Atmel SAMV7 Drivers:
- - USBHS Device: This change solves a problem which causes data loss
- while sending data via USB. This problem is caused by an incorrect
- handling of the endpoint state in the USB driver sam_usbdevhs. This
- leads under some circumstances to situations in which an DMA
- transfer is setup while a previous DMA transfer is currently active.
- Amongst other things I introduced the new endpoint state
- USBHS_EPSTATE_SENDING_DMA for the fix. To reproduce the problem, I
- used a program which send as many data as possible via a CDC/ACM
- device and verified the received data on the PC. From Stefan Kolb.
- * NXP Freescale Kinetis Drivers:
- - Timers: Support up to 8 channels per timer. From kfazz.
- * NXP Freescale Kinetis Boards:
- - Teensy 3.x clock fixes: The High Gain bit in MCG_C1 was preventing
- teensy from booting except after a programming session. The second
- change doesn't appear to change any functionality, but complies with
- restrictions in the k20 family reference manual on FEI -> FBE clock
- transiions. From kfazz.
- * NXP Freescale LPC17xx Drivers:
- - LPC17 Ethernet: Needs to correctly ignore PHYID2 revision number
- when comparing PHY IDs.
- * NXP Freescale LPC43xx Drivers:
- - Fix errors in GPIO interrupt logic. From v01d (phreakuencies)
- - Ethernet: Correct auto-negotiation mode in the LPC43xx Ethernet.
- From Alexander Vasiljev
- - Writing zero to NVIC_IRQ_ENABLE has no effect. Disable interrupts
- with NVIC_IRQ_CLEAR. From Paul Alexander Patience.
- - SPIFI: If CONFIG_SPIFI_SECTOR512 undefined, lpc43_bwrite doesn't do
- actual write (probably copy/paste errors). Still not sure about
- current state of lpc43_spifi implementation, but for me NXFFS works
- with this change. From Vytautas Lukenskas.
- * Qemu-i486:
- - Fix qemu-i486/ostest/Make.defs test for M32. From Heath Petersen.
- * SiLabs EFM32 Drivers:
- - Fix EFM32 FLASH conditional compilation. From Pierre-noel
- Bouteville
- - Writing zero to NVIC_IRQ_ENABLE has no effect. Disable interrupts
- with NVIC_IRQ_CLEAR. From Paul Alexander Patience.
- * STMicro STM32:
- - STM32 F1-F4: In PWM driver, just update duty if frequency is not
- changed and PSM started. This removeis glitch or blinking when
- only duty is frequently changed. From Pierre-noel Bouteville.
- * STMicro STM32 Drivers:
- - STM32 F7: Fixed STM32F7 DMA stm32_dmacapable. DMA working on SDMMC.
- From David Sidrane.
- - STM32 F1-F4 Timer Driver: Change calculation of per- timer pre-scaler
- value. Add support for all timers
- - STM32 F1-F4: Correct conditional compilation in STM32 timer capture
- logic. From Pierre-noel Bouteville
- - STM32 F1-F4: Fix STM32 DMA code and configuration for STM32F37X chips.
- From Marten Svanfeldt.
- - STM32 F1-F4: Fix compilation errors in debug mode of stm32_pwm.c.
- From Konstantin Berezenko.
- - STM32 F1-F4: Correct the CAN2 RX IRQ number for stm32f10xx chips.
- From Konstantin Berezenko.
- - STM32 F1-F4: Move backup domain reset to earlier in the
- initialization sequence (stm32_rcc.c() in order to avoid disabling
- LSE during RTC initialiation. From Alan Carvalho de Assis.
- - STM32 F1-F4: When configuring a GPIO via stm32_configgpio() the
- function will first set the mode to output and then set the initial
- state of the gpio later on. If you have an application with an
- externaly pulled-up pin, this would lead to a glitch on the line
- that may be dangerous in some applications (e.G. Reset Line for
- other chips, etc). This changes sets the output state before
- configuring the pin as an output. From Pascal Speck .
- - STM32 F7: Apply Pascal Speck's GPIO STM32 change to STM32 L4.
- - STM32 L4: Apply Pascal Speck's GPIO STM32 change to STM32 L4.
- From Sebastien Lorquet.
- - STM32 F7: BUGFIX: PLLs IS2 and SAI P Calculation. From David
- Sidrane.
- - STM32 L4: STM32 CAN fixes need to be backported to STM32L4 as well.
- - STM32 F1-F4 and L4: Writing zero to NVIC_IRQ_ENABLE has no effect.
- Disable interrupts with NVIC_IRQ_CLEAR. From Paul Alexander
- Patience.
- - STM32 F7: STMF7xxx RTC: (1) Remove proxy #defines, (2) Ensure the
- LSE(ON) etal are set and remembered in a) A cold start (RTC_MAGIC
- invalid) of the RTC, and b) A warm start (RTC_MAGIC valid) of the
- RTC but a clock change. The change was needed because in bench
- testing a merge of the latest's STM32 53ec3ca (and friends) it
- became apparent that the sequence of operation is wrong in the
- reset of the Backup Domain in the RCC code. PWR is required before
- the Backup Domain can be futzed with. !!!This Code should be tested
- on STM32 and if needed rippled to the STM32 families. From David
- Sidrane.
- - STM32 F1-F4: STM32 BBSRAM fixed (and formatted) flags. From David
- Sidrane.
- - STM32 F7: STM32F7 BBSRAM fixed (and formatted) flags. From David
- Sidrane.
- - STM32 L4: Fix incorrect clock setup for LPTIM1. From ziggurat29.
- - STM32 F4/L4 RTC ALARM: were enabling interrupts too early in the
- power-up sequence, BEFORE the interrupt system was being
- initialized.
- * STMicro STM32 Boards:
- - STM32 board.h: Fix STM32 timer input clock definitions. From David
- Sidrane.
- * TI Tiva Drivers:
- - Bug Fix in tiva_serial.c - UART5, UART6 and UART7 were not being
- configured as TTYS0 for printing over serial console. From Shirshak
- Sengupta.
- * C Library/Header Files:
- - include/signal.h: Change type of SIG_ERR, SIG_IGN, ... to
- _sa_handler_t. The type void does not work with the IAR toolchain.
- From Aleksandr Vyhovanec.
- - crc16: fix error. From Paul Alexander Patience.
- - strtoul() and strtoull(): Fix errno settings required by function
- definition. Resolved Bitbucket Issue #1. From Sebastien Lorquet.
- * Build/Configuration System:
- - Build system: This change fixes a build problem that only occurs
- when reconfiguring from Linux to Windows or vice-versa. It is a
- problem that was present but not usually experienced until two
- things happened: (1) The pre_config target was added to run before
- the menconfig operation and (2) the context target was added before
- the pre_config target in order to set up the correct symbolic links
- (in the apps/platform directory) needed by the pre_config target.
- But then now if you start with a Linux system and run 'make
- menuconfig' to switch to Linux, the context target will execute
- first and set up POSIX style symbolic links before doing the
- menuconfig. Then after the menuconfig, the make will fail on
- Windows if you are using a Windows native toolchain because that
- native toolchain cannot follow the Cygwin- style symbolic links.
- The fix here is to also execute the clean_context AFTER executing
- menuconfig. A lot more happens now: It used to be that doing
- 'make menuconfig' only did the menuconfig operation. Now it does
- context, pre_config, menuconfig, clean_context. Not nearly as
- snappy as it used to be.
- - Need to build the drivers/ directory even it file descriptors are
- not supported. There are things in the drivers/ directory that are
- still needed (like SYSLOG logic).
- - Remove all inclusion of header files from the apps/include
- directory from NuttX core logic. There should be no dependency on
- logic within NuttX on logic within apps/. This caused a lot of
- reshuffling of logic: binfmt pcode support, usbmonitor is now a
- kernel thread, TZ/Olson database moved to libc/zoneinfo.
- * Application Build/Configuration System:
- - Make sure that APPNAME is defined in all Makefiles that generate
- applications. From Sebastien Lorquet.
- * apps/builtins:
- - apps/builtins: exec_builtin was not using the provided open flags.
- As a result >> redirection was not working; it was treated the same
- as >.
- * apps/nshlib:
- - apps/nshilib: PS Command: When Priority Inheritance is enabled, the
- format of /proc/<PID>/status changes to show both the current
- priority and the thread’s base priority. This messes up the format
- of cmd_ps. From David Alessio.
- * apps/netutils:
- - apps/netutils, uIP webserver: Fix a data declaration in a header
- file.
- * apps/canutils:
- - apps/canutils/libuavcan: Fix for recent change to STM32 timer
- frequency definiitions.
- * apps/examples:
- - apps/examples/alarm: ioctl call was clobbering file descriptor.
- - apps/examples/can: Some variables were not declared in all required
- cases. From Sebastien Lorquet.
- - apps/examples/media: media example was intended to take either a
- command line argument, or a compiled-in default value from config.
- However, the default was ignored, leading to confusing error
- messages. From ziggurat29.
- NuttX-7.18 Release Notes
- ------------------------
- The 118th release of NuttX, Version 7.18, was made on October 8, 2016,
- and is available for download from the Bitbucket.org website. Note
- that release consists of two tarballs: nuttx-7.18.tar.gz and
- apps-7.18.tar.gz. These are available from:
- https://bitbucket.org/nuttx/nuttx/downloads
- https://bitbucket.org/nuttx/apps/downloads
- Both may be needed (see the top-level nuttx/README.txt file for build
- information).
- Additional new features and extended functionality:
- * Core OS:
- - Add standard adjtime() interface and basic timekeeping support.
- Normally used with an NTP client to keep system time in
- synchronization. From Max Neklyudov.
- - Use the oneshot timer with optional entropy to measure CPU load if
- so configured.
- * File System and Block and MTD Drivers:
- - Add Fujistu MB85RS256B ramtron support. From Beat Küng.
- - SPI-based MTD driver for Macronix MX25L3233F or MX25L6433F. From
- Aleksandr Vyhovanec.
- * Graphics/Display Drivers:
- - SH1106 0.96 OLED module support (SSD1306 compatible) + I2C fixes.
- From v01d (phreakuencies).
- * Sensor Drivers:
- - Add KXTJ9 Accelerometer driver from the Motorola Moto Z MDK.
- - Add MFRC522 RFID ISO14443 and Mifare transceiver driver. From Alan
- Carvalho de Assis.
- - Add driver for the LIS3MDL 3 axis magnetometer. From Alexander
- Entinger.
- - Add driver for the MLX90393 3 axis magnetometer. From Alexander
- Entinger.
- - Add driver for the LIS3DSH 3 axis accelerometer. From Alexander
- Entinger.
- - Add driver for the Bosch BMG160 3 axis gyroscope. From Alexander
- Entinger.
- - Add support for the Sensixs XEN1210 3D-board. This sensor is used
- on NANOSATC-BR2 a Brazillian CUBESAT project. From Alan Carvalho
- de Assis.
- - Add a new ioctl command (set MAXPOS) for Tiva QEI. From Young.
- * Other Common Device Drivers:
- - I/O Expander: Remove hard-coded PCA9555 fields from ioexpander.h
- definitons. Add support for an attach() method that may be used
- when any subset of pin interrupts occur.
- - I/O Expander Interface: Encode and extend I/O expander options to
- include interrupt configuration.
- - PCA9555 Driver: Replace the signalling logic with a simple callback
- using the new definitons of ioexpander.h. This repartitioning of
- functionality is necessary because (1) the I/O expander driver is
- the lower-lower part of any driver that uses GPIOs (include the GPIO
- driver itself) and should not be interacting directly with the much
- higher level application layer. And (2) in order to be compatible
- with the GPIO driver (and any arbitrary upper half driver), the
- PCA9555 should not directly signal, but should call back into the
- upper half. The upper half driver that interacts directly with the
- application is the appropriate place to be generating signal.
- - Add a skeleton I/O Expander driver (based on the PCA9555 driver).
- - Add PCF8574 I/O Expander driver.
- - GPIO driver: Add IOCTLs to get the pin type and to unregister a
- signal handler.
- - Add a GPIO lower-half driver that can be used to register a GPIO
- character driver for accessing pins on an I/O expander.
- - Add an SPI helper function that encapsulates and manages a sequence
- of SPI transfers.
- - Add an SPI character driver that will permit access to the SPI bus
- for testing purposes.
- - Add oneshot timer lower half interface definition.
- - Add an upper-half, oneshot timer character driver.
- - Add Audio Tone Generator for NuttX. From Alan Carvalho de Assis.
- - Add USB host support for composite devices. This feature is not
- well tested.
- - drivers/ioexpander: Add an (untested) TCA64XX I/O Expander driver
- leveraged from Project Ara.
- * Simulation Platform:
- - Add a simulated I/O Expander driver.
- - Add simulator-based test support for apps/examples/gpio.
- - Add a configuration useful for testing Mini Basic.
- - Add a simulated oneshot lowerhalf driver.
- * Atmel SAM3/4 Drivers:
- - SAM4CM: Add option to support oneshot timer without free-running
- timer. Add oneshot lower half driver.
- * Atmel SAMA5 Drivers:
- - SAMA5D: Add option to support oneshot timer without free-running
- timer. Add oneshot lower half driver.
- * Atmel SAMV7 Drivers:
- - SAMV71/SAME70: Add option to support oneshot timer without
- free-running timer. Add oneshot lower half driver.
- - Add support for SAMV7 DACC module. From Piotr Mienkowski.
- * NXP Freescale Kinetis Drivers:
- - Add support for I2C and RTC. From v01d (phreakuencies).
- * NXP Freescale Kinetis Boards:
- - Add teensy 3.x I2C support. From v01d (phreakuencies).
- * STMicro STM32:
- - Add IAR-style STM32F1xx vectors. Tested on STM32F103RB and
- STM32F107RC. From Aleksandr Vyhovanec.
- * STMicro STM32 Drivers:
- - Add timekeeping support for the STM32 tickless mode. From Max
- Neklyudov.
- - Add a oneshot, lower-half driver for STM32.
- - STM32 L4: Add oneshot lower half driver for STM32 L4.
- - STM32 L4: Add support for quadrature encoders on STM32L4. Sebastien
- Lorquet.
- * STMicro STM32 Boards:
- - stm32f103-minimum: Add board support to MFRC522 driver. From Alan
- Carvalho de Assis.
- - Add oneshot board initialization to stm32f103-minimum. From Alan
- Carvalho de Assis.
- - stm32f103-minimum: Add board configuration to initialize Audio Tone
- Generator. From Alan Carvalho de Assis.
- - stm32bufferfly2: Add support for the Kamami stm32butterfly2
- development board with optional ETH phy. From Michal Lyszczek.
- - stm32f103-minimum: Add board config support to SPI LCD module
- JLX12864G-086. From Alan Carvalho de Assis.
- - stm32l476-mdk: Support basic booting and nsh on Motorola MDK. The
- Motorola MDK is based off of an earlier version of NuttX.
- This only provides a basic NSH shell. From Jim Wylder.
- - STM32 F4 Discovery: Add support for XEN1210 3D-board. From Alan
- Carvalho de Assis.
- - stm32f103-minimum: Add stm32_bringup support and userled example to
- STM32F103 Minimum board. From Alan Carvalho de Assis.
- - Add support for qencoders on various nucleo boards. From Sebastien
- Lorquet.
- - olimex-stm32-e407: Add some networking configurations. From Mateusz
- Szafoni.
- * TI Tiva Drivers:
- - Add tiva PWM lower-half driver implementation. From Young.
- - Tiva QEI: Add QEI lower-half driver for Tiva series chip. From
- Young.
- * C Library/Header Files:
- - Separate XorShift128 PRNG from /dev/urandom and make it generally
- available.
- - Add POSIX type sig_atomic_t. From Sebastien Lorquet.
- - Add the difftime() function. The function depends on the toolchain-
- dependent CONFIG_HAVE_DOUBLE so is not available on tiny platforms.
- From Sebastien Lorquet.
- - Add support for remove(). From Sebastien Lorquet.
- - Add system() to stdlib.h. Actual implementation is in
- apps/system/system.
- * Build/Configuration System:
- - Rename arch/sh to arch/renesas.
- - Remove contactless drivers from drivers/wireless to drivers
- contactless. From Sebastien Lorquet.
- - Move all modem-related IOCTL commands to a common file to assure
- that they will be unique.
- * Tools:
- - Add sethost.sh. This is a script that you can use to quickly
- change the host platform from Linux to Windows/Cygwin. Might save
- you a lot of headaches.
- * Applications: apps/nshlib:
- - Add logic to support an NSH-specific system command.
- - Add printf command to NSH, e.g., controlling /dev/userleds from
- command line: nsh> printf \x01 > /dev/userleds. From Alan Carvalho
- de Assis.
- * Platforms: apps/system:
- - Port tee command from NetBSD.
- - Add a generic system command. Current implentation cannot use
- /bin/sh and spawns the custom NSH system command directly.
- * Platforms: apps/platform:
- - Add C++ support for STM32L476-MDK.
- * Platforms: apps/interpreters:
- - Add a port of Mini Basic, version 1.0, written by Malcom McLean and
- released under the Creative Commons Attribution license.
- * Applications: apps/examples:
- - Add a simple test of the GPIO driver.
- - Add RFID_READUID sample application. From Alan Carvalho de Assis.
- - Add Oneshot timer example.
- - Add a simple test of the system command.
- Works-In-Progress:
- * IEEE802.14.5/6LowPAN. Hooks and framework for this effort were
- introduced in NuttX-7.15. Work has continued on this effort on
- forks from the main repositories, albeit with many interruptions.
- The completion of this wireless feature will postponed until at
- least NuttX-7.19.
- Bugfixes. Only the most critical bugfixes are listed here (see the
- ChangeLog for the complete list of bugfixes and for additional, more
- detailed bugfix information):
- * Core OS:
- - Explicitly initialize the group tg_exitsem with sem_init(). The
- existing logic worked because the correct initialization value is
- all zero, but it is better to initialize the semaphore explicitly.
- - The TCB nchildren field should not be incremented when pthreads are
- created.
- - Move fields related to parent/child task relationship out of TCB
- into group structure where they belong. Child is a group, not a
- thread.
- - mq_send() was not setting the errno value on certain failures to
- allocate a message.
- - Define 'group' even if HAVE_GROUPID is not set. From Mateusz
- Szafoni.
- - Vector table should have dimension NR_IRQS, not NR_IRQS+1. From
- Sagitta Li.
- - pthreads: When a pthread is started, there is a small bit
- of logic that will run on the thread of execution of the new
- pthread. In the case where the new pthread has a lower
- priority than the parent thread, then this could cause both the
- parent thread and the new pthread to be blocked at the priority of
- the lower priority pthread (assuming that CONFIG_PRIORITY_INHERITANCE
- is not selected). This change temporarily boosts the priority of the
- new pthread to at least the priority of the new pthread to at least
- the priority of the parent thread. When that bit of logic has
- executed on the thread of execution of the new pthread, it will then
- drop to the correct priority (if necessary) before calling into the
- new pthread's entry point.
- * File System/Block Drivers/MTD Drivers:
- - FAT performance improvement. In large files, seeking to a
- position from the beginning of the file can be very time consuming.
- ftell does lssek(fd, 0, SET_CURR). In that case, that is wasted
- time since we are going to seek to the same position. This fix
- short-circuits fat_seek() in all cases where we attempt to seek to
- current position. Suggested by Nate Weibley.
- - MTD: Fixed cloned typos in several FLASH drivers. From Aleksandr
- Vyhovanec.
- - mount: Corrects a bad assertion noted by Pierre-noel Bouteville.
- Also fixes a reference counting problem in an error condition:
- When the mountpoint inode is found but is not an appropriate
- mountpoint, the reference count on the inode was not being
- decremented.
- * Common Drivers:
- - Various serial drivers: Fix FIONWRITE and add FIONSPACE. All
- implementations of FIONWRITE were wrong. FIONWRITE should return
- the number of bytes waiting in the outgoing send queue, not the free
- space. Rather, FIONSPACE should return the free space in the send
- queue.
- - Add missing prototype for btn_lower_initialize().
- - Make DAC sample structure packed. From Marc Rechté.
- * Networking:
- - TCP: tcp_ipvX_bind() not actually using the port selected with
- port==0. Also removes duplicate call to pkt_input(). Issues noted
- by Pascal Speck.
- - drivers/net: NET_TUN=y => NET_MULTIBUFFER=y. From Vladimir
- Komendantskiy.
- - slip driver: Fix calculations using MSEC_PER_TICK. If
- USEC_PER_TICK is less than 1000, then MSEC_PER_TICK will be
- zero. It will be inaccurate in any case.
- * Atmel SAM3/4 Drivers:
- - SAM3/4 GPIO: Enable peripheral clock for GPIO port when GPIO is
- configured as input. The value of a GPIO input is only sampled when
- the peripheral clock for the port controller the GPIO resides in is
- enabled. Therefore we need to enable the clock even when polling a
- GPIO. From Wolfgang Reissnegger.
- - All SAM Ethernet Drivers: Add support so that the drivers can be
- built with CONFIG_NET_MULTIBUFFER=y.
- - SAM3/4: Fix GPIO pull-up/down code. Enabling the pull-down resistor
- while the pull-up resistor is still enabled is not possible. In this
- case, the write of PIO_PPDER for the relevant I/O line is discarded.
- Likewise, enabling the pull-up resistor while the pull-down resistor
- is still enabled is not possible. In this case, the write of
- PIO_PUER for the relevant I/O line is discarded. From Wolfgang
- Reißnegger.
- * Atmel SAMV7 Drivers:
- - All SAM Ethernet Drivers: Add support so that the drivers can be
- built with CONFIG_NET_MULTIBUFFER=y.
- - SAM GPIO: Apply Wolfgang's change for SAM3/4 to SAMA5 and SAMV7.
- * Atmel SAMA5:
- - Add missing oneshot max_delay method.
- - All SAM Ethernet Drivers: Add support so that the drivers can be
- built with CONFIG_NET_MULTIBUFFER=y.
- - SAM GPIO: Apply Wolfgang's change for SAM3/4 to SAMA5 and SAMV7.
- * NXP Freescale LPC43xx Drivers:
- - LPC43xx serial: Fix typos in LPC43 serial driver. Found by Vytautas
- Lukenskas.
- - LPC43xx Serial: There are some small problems in LPC43xx RS485 mode
- configuration. In particular: (1) UART0,2,3 do not have DTR pins
- (different from UART1), so, Kconfig needs to be adjusted. (2)
- lpc43_uart.c in RS485 mode only configures DIR pin, but doesn't
- enable pin output for UART0,2,3. (3) should be option to reverse DIR
- control pin output polarity. (4) lpc43xx/chip/lpc43_uart.h doesn't
- have USART3 definitions. NOTE: I didn't modified and didn't tested
- USART1, as it has different hardware. From Vytautas Lukenskas.
- From Vytautas Lukenskas.
- * SiLabs EFM32 Drivers:
- - EFM32 SPI drivers adopted incompatible conventions (See STM32 for
- details of the issue).
- * STMicro STM32 Drivers:
- - STM32, STM32 L4, and EFM32 SPI drivers adopted incompatible
- conventions somewhere along the line. They set the number of bits
- to negative when calling SPI_SETBITS which had the magical side-
- effect of setting LSB first order of bit transmission. This is not
- only a hokey way to pass control information but is supported by no
- other SPI drivers. This change three things: (1) It adds
- HWFEAT_LSBFIRST as a new H/W feature. (2) It changes the
- implementations of SPI_SETBITS in the STM32 and EFM32 drivers so
- that negated bit numbers are simply errors and it adds the
- SPI_HWFEATURES method that can set the LSB bit order, and
- (3) It changes all calls with negative number of bits from all
- drivers: The number of bits is now always positive and
- SPI_HWFEATURES is called with HWFEAT_LSBFIRST to set the bit order.
- - Add missing SPI2 and SPI3 support for STM32F3F3. Add STM32F37XX DMA
- channel configuration. For STM32F37XX, SYSCFG_EXTICR_PORTE defined
- twice. From Alan Carvalho de Assis.
- - STM32: Make stm32_pwr_enablebkp thread safe. From Max Neklyudov.
- - Fix bad pllmul values for STM32F1XX connectivity line. STM32F1XX
- connectivity line supports only x4, x5, x6, x7, x8, x9 and x6.5
- values. From Michal Lyszczek.
- - STM32F3 SPI: Fix the number of bit setting for the F3. That and
- data packing work differently on the STM32F3 than for other STM32
- parts.
- - STM32 and STM32 L4: Enabling SPI DMA loses other bits in CR2.
- - STM32F3 SPI: Cannot write always 16-bit value to DR register
- because of how the F3 implements data packing.
- - STM32F411 and STM32F446 map i2c2_sda_4 to different alternate
- function numbers. From Konstantin Berezenko.
- - STM32 DMA Fix: Change stm32 adc dma callback to send channel
- number instead of index. From Konstantin Berezenko.
- - STM32 OTGFS device: Fix for lost first word from FIFO
- 1) Do not overwrite Reserved Bits in GINTSTS (per ref manual)*
- 2) Acknowledge all pending int on entry to ISR that are Only rc_w1*
- 3) Do not disable RXFVL*
- 4) Loop until RXFVL is cleared*
- 5) Only clear the NAK on the endpoint on the OTGFS_GRXSTSD_PKTSTS_SETUPDONE to not loose the first WORD of FIFO all the data (Bug Fix)
- Changed marked *are just driver clean up and ensure ints are not lost. The bug fix is #5
- Test case open putty and observer the Set/Get LineCoding. Without this fix #5 the Get will not match the Set, and in fact the data might be skewed by 4 bytes, that are lost from the FIFO if the OTGFS_DOEPCTL0_CNAK bit is set in the OTGFS_GRXSTSD_PKTSTS_SETUPRECVD as opposed to the OTGFS_GRXSTSD_PKTSTS_SETUPDONE
- Set Line Coding DATA1: 4B | 00 c2 01 00 00 00 08 | c8 1B
- Get Line Coding DATA1: 4B | .. .. .. .. 00 00 08 c8 .. 00 00 07 | 7a 72
- From David Sidrane.
- - STM32 L4 OTGFS device: Apply stm32 fix to stm32l4. From Sebastien
- Lorquet.
- - STM32 F7: Remove duplicate call to pkt_input from Ethernet driver.
- Issues noted by Pascal Speck.
- - STM32 L4: Add support for USART3-USART5. For STM32L4 parts, the
- higher number USART ports supported varies. Add the HAVE_USARTx
- definitions to the configuration to allow enabling the higher
- numbered USART ports. From Jim Wylder.
- - STM32 USB: Set USB address to avoid a failed assertion. From
- Pierre-noel Bouteville.
- - STM32 L4 and L7 USB: Pierre's assertion-avoidance change should
- also be applied to STM32 F7 and L4.
- - STM32, L4, and F7: Remove GPIO_ETH_RMII_TX_CLK. TX_CLK is not
- present in RMII. Mateusz Szafoni.
- - STM32 Ethernet: Correct typo in conditional logic. From Neil
- Hancock.
- - STM32 L4 USB Device: Fixed L4 USB Driver by avoiding SETUPDONE and
- EPOUT_SETUP. From David Sidrane.
- - STM32 SPI: stm32_modifycr2 should be available on all platforms if
- DMA is enabled.
- - STM32 DMA2D: fix an error in up_dma2dcreatelayer where an invalid
- pointer was returned when a certain underlying function failed.
- From Jens Gräf.
- * TI Tiva Drivers:
- - Fix two bugs of tiva pwm lower-half driver implementation. From
- Young.
- - Tiva Ethernet: Needs support for CONFIG_NET_MULTIBUFFER=y.
- * C Library/Header Files:
- - lib_dumpbuffer() now prints a large on-stack buffer first to avoid
- problems when the syslog output is prefixed with time. From
- Pierre-noel Bouteville.
- - libc/math: This fixes the following libc/math issues: (1) asin[f l]()
- use Newton’s method to converge on a solution. But Newton’s method
- converges very slowly (> 500,000 iterations) for values of x close to
- 1.0; and, in the case of asinl(), sometimes fails to converge (loops
- forever). The attached patch uses an trig identity for values of
- x > sqrt(2). The resultant functions converge in no more than 5
- iterations, 6 for asinl(). (2) The NuttX erf[f l]() functions are
- based on Chebyshev fitting to a good guess. The problem there’s a
- bug in the implementation that causes the functions to blow up with
- x near -3.0. This patch fixes that problem. It should be noted that
- this method returns the error function erf(x) with fractional error
- less than 1.2E-07 and that’s fine for the float version erff(), but
- the same method is used for double and long double version which
- will yield only slightly better precision. This patch doesn't
- address the issue of lower precision for erf() and erfl(). (3) a
- faster version of copysignf() for floats is included. From David S.
- Alessio.
- - strtod() was not returning endptr on error conditions.
- - libc/math: floor(), floorf(), and floorl(): Fix logic error. Was
- not correctly handling negative integral value.
- - isatty() should be prototyped in unstid.h, not termios.h. From
- Sebastien Lorquet.
- - nxglib: Fix handling of near-horizontal lines of width 1 in
- nxgl_splitline(). Missing handling for degenerate condition caused
- width 1 lines such as (0, 0) - (100, 10) to have gaps in the
- drawing. From Petteri Aimonen.
- * Build/Configuration System:
- - Top-Level Makefiles: Fix a chicken-and-egg problem. In the menuconfig
- target, the context dependency was executed before kconfig-mconf. That
- was necessary because the link at apps/platform/board needed to be set
- up before creating the apps/Kconfig file. Otherwise, the platform
- Kconfig files would not be included. But this introduces the chicken-
- and-egg problem in some configurations. In particular: (1) An NX
- graphics configuration is used that requires auto-generation of
- source files using cpp, (2) the configuration is set for Linux, but
- (3) we are running under Cygwin with (4) a Windows native toolchain.
- In this case, POSIX-style symbolic links are set up but the Windows
- native toolchain cannot follow them. The reason we are running
- 'make menuconfig' is to change from Linux to Cygwin, but the target
- fails. During the context phase, NX runs CPP to generate source files
- but that fails because the Windows native toolchain cannot follow
- the links. Checkmate. This was fixed by changing all of the make
- menuconfig (and related) targets. They no longer depend on context
- being run. Instead, they depend only on the dirlinks target. The
- dirlinks target only sets up the directory links but does not try
- to run all of the context setup; the compiler is never invoked; no
- code is autogenerated and things work.
- - CXXFLAGS: Add -fcheck-new whenever -fno-exceptions is used. From
- Beat Küng.
- * Tools
- - tools/refresh.sh: Recent complexities added to apps/ means that
- configuration needs the correct Make.defs file in place in order to
- configure properly.
- - tools/kconfig2html.c: Update to handle absolute paths when sourcing
- Kconfig files.
- - tools/mkfsdata.pl was still generating the old-style apps/include
- inclusion paths.
- * Application Build/Configuration System:
- - Add DIRLINK and DIRUNLINK tool definitions to apps/Make.defs.
- * apps/nshlib:
- - Fix FIFO_SIZE vs PIPE_SIZE.
- - Fix hex representation of IP address in Kconfig. Noted by Michal
- Lyszczek.
- - nsh_syscmds.c: missing semicolon. From Mateusz Szafoni.
- - In system command, don't try to flush output streams if stdio
- buffered I/O is not supported.
- * apps/canutils:
- - libuavcan: Under certain circumstances, DELIM is not be defined in
- Makefile.
- - Add definition for APPNAME in apps/canutils/canlib. From Sebastien
- Lorquet.
- * apps/gpsutils:
- - Fix an error minmea. From Aleksandr Vyhovanec.
- * apps/examples:
- - apps/examples/oneshot: If the requested delay is > max_delay, then
- break the delay up into several pieces.
- NuttX-7.19 Release Notes
- ------------------------
- The 119th release of NuttX, Version 7.19, was made on December 26, 2016,
- and is available for download from the Bitbucket.org website. Note
- that release consists of two tarballs: nuttx-7.19.tar.gz and
- apps-7.19.tar.gz. These are available from:
- https://bitbucket.org/nuttx/nuttx/downloads
- https://bitbucket.org/nuttx/apps/downloads
- Both may be needed (see the top-level nuttx/README.txt file for build
- information).
- Additional new features and extended functionality:
- * Core OS:
- - sched/semaphore, sched/phread/, libc/semaphore, libc/pthread: Add
- pthread_mutexattr_get/set_protocol and non-standard
- sem_get/set_protocol. These may use to enable or disable priority
- inheritance on a single semaphore.
- - Spinlocks: Added capability to provide architecture-specific memory
- barriers.
- - SMP: Add spin_trylock(). Use this in conditions where other CPUs need
- to stopped but we cannot call enter_critical_section().
- - sched note: Extend OS instrumentation to include some SMP events.
- Also add spinlock instrumentation; In SMP configurations, add a
- filter mask to log only notes from certain CPUs.
- - sched note: Permit spinlock and critical section notes in in-memory
- buffer iff sched_not_get() interfaces is disabled.
- - sched note: Add additional note to see if/when CPU is started in SMP
- mode.
- - sched note: Record ID enumeration now results on constant values; ID
- values do not change with configuration. This makes writing post-processing software much easier.
- - boardctl: Add new boardctl() command, BOARDIOC_NX_START, to start the
- NX server as a kernel thread.
- - pthreads: Add pthread_cleanup_push() and pthread_cleanup_pop().
- - pthreads: Added pthread_setcanceltype() and pthread_testcancel().
- - pthreads: Add support for cancellation points.
- - task_delete() now obeys all cancellation point semantics.
- - Add task_setcancelstate(), task_setcanceltype(), and
- task_testcancel(). These are non-standard interfaces analogous to the
- correponding pthread_ interfaces that provide cancellation controls
- for tasks.
- * Graphics/Display Drivers:
- - boardctl: Add new boardctl() command, BOARDIOC_NX_START, to start the
- NX server as a kernel thread.
- * Networking/Network Drivers:
- - Network drivers: Add option to use low-priority work queue to all
- Ethernet and MAC level drivers.
- - Network Drivers: Adapt all Ethernet (and other MAC) drivers to work
- as though CONFIG_NET_MULTIBUFFER were set. Remove all references to
- CONFIG_NET_MULTIBUFFER.
- - Eliminate CONFIG_NO_NOINTS. There is no longer any support for
- interrupt level processing of the network stack. Lots of files changed.
- * Other Common Device Drivers:
- - Vishay VEML6070: Add Vishay VEML6070 driver. From Alan Carvalho de
- Assis.
- * ARMv7-A
- - ARMv7-A/i.MX6: Add SCU register definitions. Add some controls to
- enable SMP cache coherency in SMP mode. Makes no difference, however
- -- cache still incoherent on i.MX6.
- - ARMv7 GIC: SGIs are non-maskable but go through the same path as
- other, maskable interrupts. Added logic to serialize SGI processing
- when necessary.
- * Atmel SAM3/4:
- - SAM3/4: Add SMP support for the dual-core SAM4CM. From Masayuki
- Ishikawa.
- * Atmel SAM3/4 Drivers:
- - Add support for the SAM5CMP-DB board. From Masayuki Ishikawa.
- * Atmel SAM3/4 Boards:
- - SAM4CMP-DB: Add support for the Atmel SAM4CMP-DB board running in an
- SMP configuration. From Masayuki Ishikawa.
- - SAM4CMP-DB: Add hooks to auto-mount the procfs file system on startup
- in board bring-up logic.
- * Atmel SAMV7 Drivers:
- - SAMv7: Register the watchdog device at the configured device path
- CONFIG_WATCHDOG_DEVPATH vs. hard-coded /dev/wdt. From Frank Benkert.
- * Calypso
- - Calyps: Remove all Calypso board configurations. Remove Calypso
- architecture support and support for Calypso SERCOMM driver.
- * Misoc LM32:
- - Misoc LM32: Adds basic support for the Misoc procoessors and the LM32
- in particular. From Ramtin Amin.
- - Misoc LM32: Add signal handling logic. From Ramtin Amin.
- - Misoc LM32: Add logic to flush/invalidate caches. From Ramtin Amin.
- * Misoc LM32 Drivers:
- - Misoc LM32 Serial: Add interrupting Misoc serial driver. From Ramtin
- Amin.
- - Misoc LM32 Timer: Add timer driver. From Ramtin Amin.
- - Misoc LM32: Add Misoc Ethernet driver From Ramtin Amin.
- * Misoc LM32 Boards:
- - Misoc LM32 Qemu: Board support for testing Misoc LM32 with Qemu. From
- Ramtin Amin.
- - Misoc LM32 Qemu: Integrate network support into configs/misoc/hello.
- From Ramtin Amin.
- - Misoc LM32 Qemu: Remove configs/misoc/include/generated directory. I
- suppose the intent now is that this is a symbolic link? DANGER!
- This means that you cannot compile this code with first generating
- these files a providing a symbolic link to this location! There is a
- sample directory containing generated sources. This is really only
- useful for performing test builds. You really must generate the Misoc
- architecture for a real-life build. From Ramtin Amin.
- * NXP Freescale i.MX6 Drivers:
- - i.MX6: Add an untested SPI driver taken directly from the i.MX1 port.
- * NXP Freescale Kinetis:
- - Kinetis: Added missing headers. Kinetis broke out SPI to
- kinetis/kinetis_spi.h. Broke out DMA to use the modern Nuttx chip
- inclusion - still STUBS. Add Kinetis support for ARMV7-M Common
- Vector and FPU. Allow CONFIG_ARMV7M_CMNVECTOR,
- CONFIG_STACK_COLORATION, CONFIG_ARCH_FPU. Fix i2c driver offset
- swapped for value in kinetis_i2c_putreg. From David Sidrane.
- * NXP Freescale Kinetis Drivers:
- - Kinetis: Add UID Unique ID. From Neil Hancock.
- * NXP Freescale Kinetis Boards:
- - Freedom-K64F board: Add support for UID Unique ID. From Neil Hancock.
- * NXP Freescale LPC17xx Boards:
- - Olimex-LPC1766-STK: Enable procfs in NSH configuration. Automount
- /proc on startup.
- * NXP Freescale LPC43xx Drivers:
- - LPC43xx: Add timer driver: From Alan Carvalho de Assis.
- - LPC43xx GPDMA driver: The GPDMA block is basically the same as the
- LPC17xx. Only the clock configuration is different and LPC43xx has
- four different DMA request sources, where LPC17xx has only two. From
- Alan Carvalho de Assis.
- * NXP Freescale LPC43xx Boards:
- - Bambino 200E: Add basic support to Micromint Bambino 200E board.
- This includes contributions from Jim Wolfman. From Alan Carvalho de
- Assis.
- - Bambino 200E: Add support for timer driver. From Alan Carvalho de
- Assis.
- * RGMP:
- - Remove RGMP and RGMP drivers.
- * RISC-V:
- - RISC-V: Add support for the RISC-V architecture and
- configs/nr5m100-nexys4 board. The board support on this is pretty
- thin, but it seems like maybe a good idea to get the base RISC-V stuff
- in since there are people interested in it. From Ken Pettit.
- * STMicro STM32 Drivers:
- - STM32 F3: Implemention of the STM32 F37xx SDADC module. There are
- also changes to ADC, DAC modules. SDADC has only been tested in DMA
- mode and does not support external TIMER triggers. This is a work in
- progress. From Marc Rechté.
- - STM32 F3: Add PWM driver support for STMF37xx. The changes have been
- tested successfuly for TIM4 and TIM17 (different IPs). From Marc
- Rechté.
- - STM32 F4: Support oversampling by 8 for the STM32 F4. From David
- Sidrane.
- - STM32 F4: Added Timers 2-5 and control of SAI and I2S PLLs. Added
- support for stmf469 SAI and I2S PLL configuration and STM446 fixes.
- From David Sidrane.
- - STM32 F4: Expanded OTGFS support to stm32F469 and stm32f446. Added
- missing bit definitions, Used stm32F469 and stm32f446 bit
- definitions, Removed unsed header file. From David Sidrane.
- - STM32 F4: Allow dma in 1 bit mode in STM32F4xxx. From David Sidrane.
- - STM32 F7: Allow the config to override the clock edge setting. From
- David Sidrane.
- - STM32 L4: Support Complementary PWM outputs on STM32L4. From
- Sebastien Lorquet.
- - STM32 L4: Add implementation of dumpgpio for stm32l4, was required
- for pwm debug. From Sebastien Lorquet.
- * STMicro STM32 Boards:
- - STM32F103 Minimum: Add button support. From Alan Carvalho de Assis.
- - STM32F103 Minimum: Add support to PWM on STM32F103-Minimum board.
- From Alan Carvalho de Assis.
- - STM32F103 Minimum: Add RGB LED support on STM32F103 Minimum board.
- From Alan Carvalho de Assis.
- - STM32F103 Minimum: Add Vishay VEML6070 driver support to the
- STM32F103-Minimum board. From Alan Carvalho de Assis.
- - Nucleo-F303RE: Add STM32 F303RE hello configuration. From Marc
- Rechté.
- - Nucleo-L476: Support PWM testing on board Nucleo L476. From
- Sebastien Lorquet.
- - Nucleo L476: Add support for timers to Nucleo L476. From Sebastien
- Lorquet.
- - Hymini STM32v: Enable CONFIG_RTC in the hymini-stm32v/nsh2
- (kitchensink) config. From Maciej Wójcik.
- - Olimex STM32-p407: Add support for the Olimex STM32 P407 board.
- * TI Tiva Drivers:
- - Tiva PWM: Support PWM_PULSECOUNT feature for TI tiva. From Young.Mu.
- * Xtensa/ESP32
- - Xtensa ESP32: Basic architectural support for Xtensa processors and
- the Expressif. ESP32 added.
- - Xtensa ESP32: Add EXPERIMENTAL hooks to support lazy Xtensa
- co-processor state restore in the future.
- - Xtensa ESP32: Basic port is function in both single CPU and dual CPU
- SMP configurations. There is an NSH configuration for each CPU
- configuration. Outstanding issues include missing clock configuration
- logic, missing partition tables to support correct configuration from
- FLASH, and some serial driver pin configuration issues.
- - Xtensa ESP32: Add stack checking logic.
- * Xtensa/ESP32 Boards:
- - ESP32 Core v2: Basic support for Expressif ESP32 Core v2 board
- added. The initial release includes an NSH and an SMP test
- configuration.
- - ESP32 Core v2: Add configuration to support linking NuttX for
- execution out of IRAM.
- - ESP32 Core v2: Automatically mount /proc at start-up.
- - ESP32 Core v2: Add an OS test to verify the port.
- * C Library/Header Files:
- - libc/locale: Add a dummy setlocale() function to avoid drawing the
- function from newlib. Add clocale header file.
- - include/locale.h: Modify locale.h to add localeconv() and lconv
- structure. From Alan Carvalho de Assis.
- - libc/locale: Allows c++ code to compile with or without
- CONFIG_LIBC_LOCALE and will generate a link error if
- CONFIG_LIBC_LOCALE is not defined and setlocale is referenced. With
- CONFIG_LIBC_LOCALE defined setlocale will act as if MB string is not
- supported and return "C" for POSIX. C and "". From David Sidrane.
- - libc/wchar: Add wcslen, wmemchr, wmemcmp, wmemcpy wmemset, btowc,
- mbrtowc, mbtowc, wcscmp, wcscoll, and wmemmove to NuttX. From Alan
- Carvalho de Assis.
- - libc/wctype: Add functions wcrtomb, wcslcpy, wcsxfrm, wctob, wctomb,
- wctype, localeconv, strcoll, strxfrm, swctype, towlower, towupper and
- wcsftime. Add wctype.h; Move lib_wctype.c to libc/wctype. From Alan
- Carvalho de Assis.
- - include/ctype.h : Add isblank() macro to ctype.h. From Alan Carvalho
- de Assis.
- - lic/stdlib: Add strtof() and strtold() as simply a copy of strtod
- with types and limits changed.
- - sscanf(): Use strtof() instead of strtod() if a short floating point
- value was requested. The should help performance with MCUs with
- 32-bit FPU support with some additional code size.
- - sscanf(): Add scansets to the scanf function. Enabled
- CONFIG_LIBC_SCANSET option. From Aleksandr Vyhovanec.
- - include/inttypes.h: Add architecture-specific inttypes.h. From Paul
- A. Patience.
- - C Library: Allow option to enable IP address conversions even when
- the IP address family is not supported.
- * Build/Configuration System:
- - The Smoothie project needs to compile C++ inside config/boardname/src/
- to use with High Priority Interruption, then I modified the board
- configs Makefile to support it. It works fine for the first time
- compilation, but if we execute "touch config/boardname/src/Pin.cxx"
- and execute "make" it will not detect that Pin.cxx was modified. I
- think there is some other place I should modify, but I didn't find
- it. From Alan Carvalho de Assis.
- * Tools:
- - tools/: Add tools/showsize.sh.
- * NSH: apps/nshlib:
- - NSH: dd command will show statistics. From Masayuki Ishikawa.
- * Applications: apps/system:
- - apps/system/sched_note: Extend to include additions to instumentation
- for SMP.
- - apps/system/sched_note: Add support for spinlock notes.
- - apps/system/sched_note: Add support for new scheduler instrumentation.
- * Platforms: apps/platform:
- - ESP32 Core v2: Add platform support for the ESP32 core v2 board.
- - Olimex STM32-p407: Add platform support for the Olimex STM32 P407.
- * Graphics: apps/graphics
- - graphics/traveler/tcledit and libwld: Add an X11 Tcl/Tk tool that can
- be used to edit Traveler world files.
- - Graphics: Remove all NX server taks. Instead, call boardctl() to the
- NX server kernel thread.
- * Applications: apps/examples:
- - examples/buttons: Add a new buttons example that uses the button
- character driver instead of the architecture buttons directly. From
- Alan Carvalho de Assis.
- - examples/cctype: Add an example to verify cctype functions.
- - Remove RGMP example.
- - examples/ostest: Extend the pthread cancellation test to exercise
- pthread_cleanup_push() (and pthread_cleanup_pop() indirectly via
- pthread_cancel() and pthread_exit().
- - examples/ostest: enhance pthread cancellation test some.
- Works-In-Progress:
- * IEEE802.14.5/6LowPAN. Hooks and framework for this effort were
- introduced in NuttX-7.15. Work has continued on this effort on
- forks from the main repositories, albeit with many interruptions.
- The completion of this wireless feature will postponed until at
- least NuttX-7.20.
- Bugfixes. Only the most critical bugfixes are listed here (see the
- ChangeLog for the complete list of bugfixes and for additional, more
- detailed bugfix information):
- * Core OS:
- - sched/semaphore: Within the OS, when a thread obtains a semaphore
- count it must call sem_addholder() if CONFIG_PRIORITY_INHERITANCE is
- enabled. If a count is available, then sem_wait() calls
- sem_addholder(), otherwise it waited for the semaphore and called
- sem_addholder() when it eventually received the count. This caused a
- problem when the thread calling sem_wait() was very low priority.
- When it received the count, there may be higher priority threads
- "hogging" the CPU that prevent the lower priority task from running
- and, as a result, the sem_addholder() may be delayed indefinitely.
- The fix was to have sem_post() call sem_addholder() just before
- restarting the thread waiting for the semaphore count. This problem
- was noted by Benix Vincent who also suggested the solution.
- - Many files: Make sure that priority inheritance is not enabled for
- semaphores whose primary use is signaling (vs locking of resources) by
- calling sem_setprotocol().
- - sched/semaphore: sem_trywait() no longer modifies the errno value
- UNLESS an error occurs. This allows these functions to be used
- internally without clobbering the errno value. From Freddie Chopin.
- - sched/clock: Correct clock initialization. The correct range for the
- month is 0-11 but is entered as 1-12 in the .config file. Add ranges
- to START_YEAR, MONTH, and DAY in sched/Kconfig.
- - sched/clock: Correct calculation for the case of Tickless mode with a
- 32-bit timer. In that case, the calculation was returning millisecond
- accuracy. That is not good when the timer accuracy is < 1 msec. From
- Rajan Gill.
- - Work Queue: When queuing new LP work, don't signal any threads if
- they are all busy. From Heesub Shin.
- - Work Queue: Signal sent from work_signal() may interrupt the low
- priority worker thread that is already running. For example, the
- worker thread that is waiting for a semaphore could be woken up by the
- signal and break any synchronization assumption as a result. It also
- does not make any sense to send signal if it is already running and
- busy. This change fixes it. From Heesub Shin.
- - Fix DEBUGASSERT() in group_signal.c. From Masayuki Ishikawa.
- - Eliminate bad boardctl() commands: Remove all references to
- BOARDIOC_PWMSETUP and board_pwm_setup(). Remove all references to
- BOARDIOC_ADCSETUP and board_adc_setup(). Remove
- BOARDIOC_CAN_INITIALIZE. CAN initialization is now done in the board
- initialization logic just like every other device driver.
- - pthreads: Fix an error in pthread_mutex_destroy(). An error could
- occur while destroying a mutex after a pthread has been canceled while
- holding the mutex.
- - task_restart: Make sure new task starts with pre-emption disabled and
- not in a critical section.
- - Enter/leave Critical Sections. Major redeign to
- enter/leave_critical_section logic to deal with the case where
- interrupts are disabled only on the local CPU. In this case, some
- rather complex spinlocks must be used to maintain the critical section
- accross all CPUs.
- - SMP Critical Sections: Fixes for the SMP case: (1) Change order for
- SMP case in enter_critical_section: (1) Disable local interrupts
- BEFORE taking spinlock and (2) If SMP is enabled, if any interrupt
- handler calls enter_critical_section(), it should take the spinlock.
- - SMP wdogs: Wdog timers use a tasking interface that to manipulate
- wdogs, and a different interface in the timer interrupt handling logic
- to manage wdog expirations. In the single CPU case, this is fine.
- Since the tasking level code calls enter_critical_section, interrupts
- are disabled and no conflicts can occur. But that may not be the case
- in the SMP case. Most architectures do not permit disabling
- interrupts on other CPUs so enter_critical_section must work
- differently: Locks are required to protect code. this change adds
- locking (via enter_critical section) to wdog expiration logic for the
- the case if the SMP configuration.
- - SMP vfork(): Fix a race condition in the SMP case. Existing logic
- depended on the fact that the child would not run until waitpid was
- called because the child had the same priority as the parent. BUT in
- the SMP case that is not true... the child may run immediately on a
- different CPU.
- - SMP: This change adds a new internal interfaces and fixes a problem
- with three APIs in the SMP configuration. The new internal interface
- is sched_cpu_pause(tcb). This function will pause a CPU if the task
- associated with 'tcb' is running on that CPU. This allows a different
- CPU to modify that OS data stuctures associated with the CPU. When
- the other CPU is resumed, those modifications can safely take place.
- The three fixes are to handle cases in the SMP configuration where one
- CPU does need to make modifications to TCB and data structures on a
- task that could be running running on another CPU. Those three cases
- are task_delete(), task_restart(), and execution of signal handlers.
- In all three cases the solutions is basically the same: (1) Call
- sched_cpu_pause(tcb) to pause the CPU on which the task is running,
- (2) perform the necessary operations, then (3) call up_cpu_resume() to
- restart the paused CPU.
- - SMP: Add logic to avoid a deadlock condition when CPU1 is hung waiting
- for g_cpu_irqlock with interrupts interrupts and CPU0 is waiting for
- g_cpu_paused.
- - SMP: Enforce this rule: Tasks which are normally restored when
- sched_unlock() is called must remain pending (1) if we are in a
- critical section, i.e., g_cpu_irqlock is locked , or (2) other CPUs
- still have pre-emption disabled, i.e., g_cpu_schedlock is locked. In
- those cases, the release of the pending tasks must be deferred until
- those conditions are met.
- * File System/Block Drivers/MTD Drivers:
- - AT24XX EEPROM MTD driver: Added EEPROM timeout. Fromo Aleksandr
- Vyhovanec.
- - fs/procfs: Fix procfs status for SMP case.
- * Graphics/Graphic Drivers:
- - Fonts: Correct some default font IDs. From Pierre-Noel Bouteville.
- * Common Drivers:
- - usbhost/enumerate: Fix possible buffer overwrite. From Janne Rosberg.
- - usbhost/composite: Fix compile; missing semicolons. From Jann Rosberg.
- - syslog: Fixes required for file syslog output. From Max Kriegleder.
- - SPI configuration: Fix Kconfig warning. This change moves the
- ARCH_HAVE_SPI options outside the check for SPI. Those options don't
- depend on SPI, and Kconfig files in arch/ enable them even if SPI
- isn't enabled. Source the driver's Kconfig in drivers/Kconfig only
- if support for the driver is enabled prevents us from defining these
- ARCH_HAVE options in the driver's Kconfig. We should probably remove
- the other checks in drivers/Kconfig and check if the drivers are
- enabled only in their Kconfig. From Paul A. Patience.
- - drivers/timer: Remove the timer driver TIOC_SETHANDLER IOCTL call.
- This calls directly from the timer driver into application code. That
- is non-standard, non-portable, and cannot be supported. Instead, add
- timer driver hooks to support signal notification of timer
- expiration. Signal notification logic added by Sebastien Lorquet.
- - All timer lower half drivers. Port Sebastien's changes to all other
- implementations of the timer lower half.
- - USB MSC Device: Fix length of mode6 sense reply packet. From
- Wolfgang Reißnegger.
- - USB Composite Host: Fix end offset in usbhost_copyinterface(). From
- Janne Rosberg.
- - USB CDC/ACM Host: Add CDC_SUBCLASS_ACM and CDC_PROTO_ATM to
- supported class and proto. From Janne Rosberg.
- - SSD1306: Fix errors in SPI mode configuration. From Gong Darcy.
- - CDC/ACM Device Class: uart_ops_s portion of cdcacm will not be
- initialized with correct functions if CONFIG_SERIAL_DMA is selected.
- * Networking/Network Drivers:
- - drivers/net/tun.c: Fix bug in TUN interface driver. From Max Nekludov.
- * ARMv7-A:
- - ARMv7-A SMP: Add SMP logic to signal handling.
- * ARMv7-M:
- - ARMv7-M: Fix double allocation of MPU region in mmu.h.
- * ARMv7-R:
- - ARMv7-R: Fix compilation error. This change fixes compilation errors
- on MPU support for ARMv7-R. From Heesub Shin.
- - ARMv7-R: fix invalid drbar handling. In ARMv7-R, [31:5] bits of DRBAR
- is physical base address and other bits are reserved and SBZ. Thus,
- there is no point in passing other than the base address. From Heesub
- Shin.
- - ARMv7-R: Remove the redundant update on SCTLR. mpu_control() is
- invoking cp15_wrsctlr() around SCTLR update redundantly. From Heesub
- Shin.
- - ARMv7-R: Add new Kconfig entries for D/I-cache. Unlike in ARMv7-A/M,
- Kconfig entries for data and instruction caches are currently missing
- in ARMv7-R. This change adds those missing Kconfig entries. Actual
- implmenetation for those functions will be added in the subsequent
- patches. From Heesub Shin.
- - ARMv7-R: Add cache handling functions. This change adds functions for
- enabling and disabling d/i-caches which were missing for ARMv7-R.
- From Heesub Shin.
- - ARMv7-R: Fix typo in mpu support. s/ARMV7M/ARMV7R/g. From Heesub Shin.
- - ARMv7-R: Fix CPSR corruption after exception handling. A sporadic
- hang with consequent crash was observed when booting. It seemed to be
- caused by the corrupted or wrong CPSR restored on return from
- exception. NuttX restores the context using code like this: msr spsr,
- r1. GCC translates this to: msr spsr_fc, r1. As a result, not all
- SPSR fields are updated on exception return. This should be: msr
- spsr_fsxc, r1. On some evaluation boards, spsr_svc may have totally
- invalid value at power-on-reset. As it is not initialized at boot, the
- code above may result in the corruption of cpsr and thus unexpected
- behavior. From Heesub Shin.
- - ARMv7-R: Fix to restore the Thumb flag in CPSR. Thumb flag in CPSR is
- not restored back when the context switch occurs while executing thumb
- instruction. From Heesub Shin.
- * Atmel SAM3/4 Drivers:
- - SAM3/4 UDP: Add delay between setting and clearing the endpoint RESET
- bit in sam_ep_resume(). We need to add a delay between setting and
- clearing the endpoint reset bit in SAM_UDP_RSTEP. Without the delay
- the USB controller will (may?) not reset the endpoint. If the
- endpoint is not being reset, the Data Toggle (DTGLE) bit will not to
- be cleared which will cause the next transaction to fail if DTGLE is
- 1. If that happens the host will time-out and reset the bus. Adding
- this delay may also fix the USBMSC_STALL_RACEWAR in usbmsc_scsi.c,
- however this has not been verified yet. From Wolfgang Reißnegger.
- - SAM3/4: Remove unused 'halted' flag from UDP driver. From Wolfgang
- Reißnegger.
- - SAM3/4: Remove 'stalled' flag from the UDP driver. This flag is not
- necessary because the state of the endpoint can be determined using
- 'epstate' instead. From Wolfgang Reißnegger.
- * Atmel SAM3/4 Boards:
- - SAM4S Xplained Pro: Configuration uses old, improper timer interface.
- CONFIG_TIMER disabled in configuration. Remove obsolete timer
- initialization logic.
- * Atmel SAMV7 Drivers:
- - SAMv7 USBDEVHS: A problem occurred with the SAMV7 USBDEVHS driver if
- the USB cable is unplugged while a large amount of data is send over
- an IN endpoint using DMA. If the USB cable is plugged in again after a
- few seconds it is not possible to send data over this IN endpoint
- again, all other endpoints work as expected. The problem occurs
- because if the USB cable is unplugged while an DMA transfer is in
- flight the transfer is canceled but the register SAM_USBHS_DEVDMACTRL
- is left in an undefined state. The problem was fixed the problem by
- resetting the register SAM_USBHS_DEVDMACTRL to a known state.
- Additionally all pending interrupts are cleared. From Stefan Kolb.
- - SAMV7 MCAN: Prevent Interrupt-Flooding of ACKE when not connected to
- CAN-BUS. An Acknowledge-Error will occur every time no other CAN Node
- acknowledges the message sent. This will also occur if the device is
- not connected to the can-bus. The CAN-Standard declares, that the Chip
- has to retry a given message as long as it is not sent successfully
- (or it is not cancelled by the application). Every time the chip tries
- to resend the message an Acknowledge-Error-Interrupt is generated. At
- high baud rates this can lead in extremely high CPU load just for
- handling the interrupts (and possibly the error handling in the
- application). To prevent this Interrupt-Flooding we disable the ACKE
- once it is seen as long we didn't transfer at least one message
- successfully. From Frank Benkert.
- - SAMV7 MCAN: Make delete_filter functions more robust. From Frank
- Benkert.
- * Atmel SAMA5 Drivers:
- - SAMA5 PWM: Driver does not build when executing from SDRAM before
- board frequencies are not constant. Rather, the bootloader configures
- the clocking and we must derive the clocking from the MCK left by the
- bootloader. This means lots more computations. This is untested on
- initial change because I don't have a good PWM test setup right now.
- * Misoc LM32:
- - Misoc LM32: Corrects a bug that never occured in qemu on simulation or
- real fpga. The error was that the r1 register was being modified out
- of context switching and not restoring it. From Ramtin Amin
- * NXP Freescale i.MX6:
- - i.MX6 interrupt handling: Additional logic needed to handle nested
- interrupts when an interrupt stack is used. Nesting can occur because
- SGI interrupts are non-maskable.
- * NXP Freescale LPC43xx Drivers:
- - LPC43xx serial: Fix a typo in ioctl TIOCSRS485 ioctl. From Vytautas
- Lukenskas.
- - LPC43xx serial: Restore RS485 mode on serial port open (if RS485 is
- enabled via menuconfig). From Vytautas Lukenskas.
- - LPC43xx SD/MMC: Correct some definitions on SMMC control register in
- lpc43_sdmmc.h. From Alan Carvalho de Assis.
- - LPC43xx SD card: Correct pin configuration options needed for SD card
- pins. From Alan Carvalho de Assis.
- * SiLabs EFM32:
- - EFM32: Fix a compilation error. From Pierre-noel Bouteville.
- * STMicro STM32 Drivers:
- - STM32 CHxN channels are always outputs. From Sebastien Lorquet.
- - STM32 DAC: Fix shift value whenever there are is a DAC2 and, hence,
- up to three interfaces. From Marc Rechté.
- - STM32 F1: Add TIM8 to STM32F103V pinmap. From Maciej Wójcik.
- - STM32 F1: Fix for F1 RTC Clock, tested on F103. From Maciej Wójcik.
- - STM32 F3: STM32F303xB and STM32F303xC chips have 4 ADCs. From Paul
- A. Patience.
- - STM32 F4: A new implementation of the STM32 F4 I2C bottom half. The
- common I2C as this did not handled correctly in the current
- implementation (see also https://github.com/PX4/NuttX/issues/54). The
- changes almost exclusively affect the ISR. From Max Kriegleder.
- - STM32 F4 OTGHS Host: If STM32F446 increase number of channels to
- 16. From Janne Rosberg.
- - STM32 F4: I think, that Size is (highest address+1 - Base address).
- Base address has been removed and if address+count >= size we are
- outside of the Flash. From David Sidrane.
- - STM32 F4: Fix ADC compilation error when DMA isn't enabled. From Paul
- A. Patience.
- - STM32 F4: STM32F427 was rebooting. Over reached family. From David
- Sidrane.
- - STM32 F4: Added STM32F469 RAM size and deliberated STM32F446 size.
- From David Sidrane.
- - STM32 F4: Typo in stm32f76xxxx_pinmap.h edited online with
- Bitbucket. From David Sidrane.
- - STM32 F7: stm32_i2c.c Dejavu. Fixes a bug previously found in the
- F4. From David Sidrane.
- - STM32 F7: OTGDEV fixed typo. From David Sidrane.
- - STM32 F7: Fix to SPI-Master driver. Without this the chip select
- decoding feature will not work properly. From Michael Spahlinger.
- - STM32 F7: STM32F7 SD/MMC driver depends on CONFIG_SDIO_DMA which is
- only defined in stm32/Kconfig. Changed to CONFIG_STM32F7_SDMMC_DMA
- and defined in stm32f7/Kconfig.
- - STM32 F7: Fix some STM32F7 copy paste errors. From David Sidrane.
- - STM32 L4: Complementary PWM outputs on STM32L4" (1) too many
- parentheses when calculating max chan count and (2) channel 4 does not
- have a complementary output. From Sebastien Lorquet.
- - STM32 L4: Fix I2C devices RCC registers. From Sebastien Lorquet.
- - STM32 L4: Enable and renaming for 32l4 UARTs 4 and 5. From Sebastien
- Lorquet.
- - STM32 L4: Change the way to configure quadrature encoder prescalers.
- From Sebastien Lorquet.
- - STM32 L4: Correct USART1/2 definitions. Use default mbed UART4
- settings. From Sebastien Lorquet.
- * STMicro STM32 Boards:
- - STM32F103 Minimum: Fix Timers 2 to 7 clock frequencies. From Alan
- Carvalho de Assis.
- - Nucleo-F303RE: Remove duplicate setting from board.h. From Marc
- Rechté.
- - Nucleo F303RE: Various fixes to get the ADC configuration building
- again after PR. Refresh all configurations.
- - Nucleo L476RG: Add better selection of timer.
- * TI Tiva Boards:
- - DK-TM4C129x: Typo fix. From Wolfgang Reißnegger.
- * Xtensa ESP32:
- - ESP32 core v2: Flush the UART TX buffer in the esp32 serial shutdown
- routine. The ROM bootloader does not flush the FIFO before handing
- over to user code, so some of this output is not currently seen when
- the UART is reconfigured in early stages of startup. From Angus
- Gratton.
- - Xtensa ESP32: Corrects a problem with dispatching to signal
- handlers: Cannot vector directly to the signal handling function as
- in other ABIs under the Xtensa Window ABI. In that case, we need to
- go through a tiny hook when performs the correct window call (call4)
- otherwise registers will be scrambled in the signal handler.
- * Xtensa ESP32 Boards:
- - ESP32 core v2: Changes the openocd config file's default flash
- voltage from 1.8V to 3.3V. This is not necessary right now, but may
- save some hard-to-debug moments down the track (3.3V-only flash
- running at 1.8V often half-works and does weird things...). From
- Angus Gratton.
- * C Library/Header Files:
- - libc/stdio: Fixes sscanf() %sn where strlen(data) < n. From David
- Sidrane.
- - libc/stdio: Include wchar.h in lib_libvsprintf.c to fix compilation
- error. From Alan Carvalho de Assis.
- - include/sys/time.h: timersub macro modified per recommendations of
- phreakuencies.
- - include/ctype.h and cxx/cctype: Implement ctype.h functions as inline
- if possible. cctype can then properly select namespace.
- - include/: Fix a number of header files with mismatched 'extern C {'
- and '}'.
- - libc/unisted: Change brings strtol() and related functions more
- conformant with POSIX. Corner cases like strtol(-2147483648, NULL,
- 10) now pass clang -fsanitize=integer without warnings. From Juha
- Niskanen.
- - libc/unistd: sleep() was returning remaining nanoseconds (kind of),
- instead the remaining seconds. From Eunbong Song.
- - termios.h: Fix CRTSCTS define to include input and output flow. From
- Lorenz Meier.
- * Build/Configuration System:
- - configs/*/defconfig: The buttons example was changed to archbuttons.
- As a result all of the button configurations are broken and need some
- renaming in the defconfig files. Noted by Frank Berkert.
- - config/*/defconfgs: More fallout from name change of
- apps/examples/buttons to archbuttons.
- - configs: All QE encoder files. Last change made timer hard-coded to
- 3. Make configurable.
- - configs: Remove all traces of the no-longer existent ARCHBUTTONS
- example. Remove all button configurations that depended on the
- obsoleted ARCHBUTTON example.
- - minnsh Configurations: Remove minnsh configurations and support
- logic: up_getc() and lowinstream. This was an interesting exercise
- to see just how small you could get NuttX, but otherwise it was not
- useful: (1) the NSH code violated the OS interface layer by callup
- up_getc() and up_putc() directly, and (2) while waiting for character
- input, NSH would call up_getc() which would hog all of the CPU. Not a
- reasonable solution other than as a proof of concept.
- * Application Build/Configuration System:
- - Make.defs: Using wrong link script if native window tool used with
- Cygwin.
- * apps/platform:
- - ESP32 Core v2 Platform: Fix some naming that prevented building the
- C++ support.
- * apps/nshlib:
- - NSH Library: nsh_getdirpath(), use snprint instead of sprintf to
- avoid possibility of buffer overrun. Noted by Chung Hwan Kim.
- * apps/system:
- - Remove std_readline(). This called up_getc() and up_putc() directly,
- violating the POSIX OS interface.
- * apps/netutils:
- - FTPD: Fixed bug that didn't free ftpd ressources on exit. From Pascal
- Speck.
- - NTP client: Fix missing left parenthesis. From Pierre-Noel Bouteville.
- - cJSON: Import patch to fix:cJSON_PrintUnformatted() behaves unexpected
- if an empty array shall be printed to text. from Jerome Lang
- 2012-04-19. From Pierre-Noel Bouteville.
- - esp8266 update cosmetic and many bug fix. From Pierre-Noel Bouteville.
- - FTPD: Fix bug un ftpd file or socket may be not closed. From
- Pierre-Noel Bouteville.
- * apps/modbus:
- - Modbus Master is missing many files and doesn't compile at all. More
- details in
- https://groups.yahoo.com/neo/groups/nuttx/conversations/topics/13734.
- From Vytautas Lukenskas.
- * apps/examples:
- - The examples/qencoder app was trying to init the encoder by a direct
- call into the board, cheating in a local header to declare the
- normally unavailable function prototype. From Sebastien Lorquet.
- - apps/examples/timer: Should detach signal handler before exiting.
- - examples/qencode: The examples/qencoder app was trying to init the
- encoder by a direct call into the board, cheating in a local header to
- declare the normally unavailable function prototype. From Sebastien
- Lorquet.
- - apps/examples/archbuttons: Removed becaue it violates OS interface
- principles.
- - examples/adc, pwm, can: Remove all usage of BOARDIOC_ADCTEST_SETUP,
- BIOARDIOC_PWMSETUP. Remove BOARDIOC_CAN_INITIALIZE. CAN
- initialization is now done in the board initialization logic just like
- every other device driver.
- - examples/ostest: Add some delays to the pthread cancellation test.
- With deferred cancellation enabled, things happen more asynchronously.
- NuttX-7.20 Release Notes
- ------------------------
- The 120th release of NuttX, Version 7.20, was made on March 8, 2017,
- and is available for download from the Bitbucket.org website. Note
- that release consists of two tarballs: nuttx-7.20.tar.gz and
- apps-7.20.tar.gz. These are available from:
- https://bitbucket.org/nuttx/nuttx/downloads
- https://bitbucket.org/nuttx/apps/downloads
- Both may be needed (see the top-level nuttx/README.txt file for build
- information).
- Additional new features and extended functionality:
- * Core OS:
- - Kernel Modules: Module initializer may now return a symbol table.
- - Modules: Extend the module interface so that we can access symbols
- exported by the module.
- - Shared Libraries: In the FLAT build mode, kernel modules may be
- used to provide minimal shared library functionality.
- - Modules/Shared Libraries: Add support for dependencies between
- modules.
- - Module Library: Add build a configuration logic for a shared module
- library.
- - Shared Libraries: Implement module based shared libraries for the
- PROTECTED mode build.
- - Interrupt handling: irq_attach() now includes an argument of type
- xcpt_t that retained with the handler address. That argument is
- then provided to the interrupt handler when the interrupt occurs.
- The common parameter passing replaces the ad hoc parmater passing
- implemented in current drivers. From Mark Schulte.
- - Adapt many drivers to utilize the IRQ argument feature.
- - All functions that used to return an xcpt_t old handler value, now
- return an int error code. The oldhandler value is no longer useful
- with the recent changes to the interrupt argument passing. Some of
- the functions effected include board_button_irq(), arch_phy_irq(),
- STM32 EXTI functions (Alarm, COMP, PVD), GPIO interrupt logic like
- kinetis_pinirq(), stm32_gpiosetevent(), and others.
- - IRQ subsystem: Add support for smaller interrupt tables as
- described at
- http://www.nuttx.org/doku.php?id=wiki:howtos:smallvectors . This
- is partially the work of Mark Schulte.
- * File Systems/Block and MTD Drivers
- - Pseudo File System: Add support for soft links in the top-level
- pseudo file system.
- - Soft links: Add an implementation of readlink().
- - Add fstat() support. Implement fstat() method in binfs, romfs,
- unionfs, tmpfs, nxffs, nfx, hostfs, procfs, and smartfs.
- - fstat: Add fstat() support to FAT. From Alan Carvalho de Assis.
- * Graphics/Display Drivers:
- - Fonts: Add support for Tom Thumb small mono-space font. From Alan
- Carvalho de Assis.
- - Graphics: Separated of font cache from graphics/nxterm. Now in
- libnx/nxfronts where it can be shared with other grapics
- applications.
- * Networking/Network Drivers:
- - Ethernet drivers: Add framework for serialization in the case where
- multiple low-priority work queues are used.
- * Other Common Device Drivers:
- - Add capabilities() method to SDIO interface. Remove
- CONFIG_SDIO_WIDTH_D1_ONLY. That should not be a global propertie,
- but rather a capability/limitation of single slot when there may be
- multiple slots.
- - Removed dmasupported() method from the SDIO interface. That is now
- a bit in the capability set.
- - drivers/sensors: Add driver for the ST L3GD20 3 axis gyro. From
- raiden00.
- * Atmel SAM3/4:
- - SAM3/4: Add support for ATSAM4S4C. From Wolfgang Reißnegger.
- * NXP Freescale i.MX6 Boards:
- - Sabre 6quad: Enable examples/smp test in i.MX6 SMP/NSH
- configurations.
- * NXP Freescale Kinetis:
- - Kinetis: Added support for CHIP_MK60FN1M0VLQ12 chip. From Maciej
- Skrzypek.
- - Kinetis: Add support for K64/K66 RTC lower half driver. From Neil
- Hancock.
- - Kinetis: Extensive modification of MCG support based feature
- configuration. From David Sidrane.
- - Kinetis: Add support for K66 family. From David Sidrane.
- - Kinetis: Created a kinetis SIM versioning scheme pulled in by
- Kinetis chip.h. From David Sidrane.
- - Created a kinetis PMC versioning scheme pulled in by Kinetis
- chip.h. From David Sidrane.
- - Kinetis: Extend clock configuration logic. Refactor
- implementation. From David Sidrane.
- * NXP Freescale Kinetis Drivers:
- - Kinetis Ethernet: Kinetis Support RMII clock source select. This
- defined the RMII clock source select bits and allows the selection
- to be made via Kconfig. From David Sidrane. Freedom-K66F uses
- ENET_1588_CLKIN as RMII clock
- - Kinetis Serial: Added configurable 1|2 stop bits.
- HAVE_SERIAL_CONSOLE -> HAVE_UART_CONSOLE to be consistent with
- HAVE_LPUART_CONSOLE naming. From David Sidrane.
- - Kinetis LPserial: Add LPUART serial driver and Clock
- configuartaion to freedom-k66f board. From David Sidrane.
- - Kinetis USB device: Refactor clocking in kinetis_usbdev. From
- David Sidrane.
- * NXP Freescale Kinetis Boards:
- - Add support for NXP Freedom-k66f development board. From David
- Sidrane.
- - Kinetis Freedom K66F: Add Ethernet support. From David Sidrane.
- - Add twr-k64f120m config. From Marc Rechté.
- * NXP Freescale LPC43xx Boards:
- - Bamboo-200E: Add netnsh configuration. From Alan Carvalho de Assis.
- - Add usbnsh config to Bambino 200E board. From Alan Carvalho de
- Assis.
- * STMicro STM32:
- - STM32 F7: Allow board to configure HSE clock in bypass-mode. This
- is needed to enable HSE with Nucleo-F746ZG board. From Jussi
- Kivilinna.
- - STM32 F7: stm32_allocateheap: allow use DTCM memory for heap.
- STM32F7 has up to 128KiB of DTCM memory that is currently left
- unused. This change adds DTCM to main heap if
- CONFIG_STM32F7_DTCMEXCLUDE is not enabled. From Jussi Kivilinna.
- - Add basic support for the STM32F334. From Mateusz Szafoni.
- - STM32F33XX DAC, OPAMP, COMP, ADC, HRTIM headers. From Mateusz
- Szafoni.
- * STMicro STM32 Drivers:
- - STM32 F7 SDMMC: Add support for single bit operation on SDMMC2.
- - STM32 L4: Port STM32L4 SAI driver from MDK.
- - STM32 L4: Bring power management logic from Motrola MDK into NuttX.
- - STM32 L4: Bring LPTIM driver in from the Motorola MDK.
- - STM32 L4 COMP: Port from Motorola MDK.
- * STMicro STM32 Boards:
- - STM32F429i Discovery: Add support for NxWM on STM32F429i-Disco
- board. From Alan Carvalho de Assis.
- - STM32F103 Minimum: Add support for nRF24 on STM32F103-Minimum
- board. From Alan Carvalho de Assis.
- - Olimex STM32 P407: Add a NSH protected build configuration; Enable
- procfs/ in all configurations.
- - Olimex STM32 P407: Add support for on-board microSD slot.
- - STM32F429i Discovery: Add support for the L3GD20 driver. From
- raiden00.
- - STM32F103 Minimum: Add support to QEncoder on STM32F103 Minimum
- board. From Alan Carvalho de Assis.
- - Olimex STM32 P407: Add external SRAM support.
- - Add basic support for the Nucleo F334R8 board. From Mateusz
- Szafoni.
- - STM32F103 Minimum: Add SDCard support over SPI on STM32F103-Minimum
- board. From Alan Carvalho de Assis.
- - STM32F103 Minimum: Add support to USB Device on STM32F103-Minimum
- board. From Alan Carvalho de Assis.
- * C Library/Header Files:
- - compiler.h: packed_struct replaced by begin_packed_struct and
- end_packed_struct. Now support IAR style packed structures. From
- Aleksandr Vyhovanec.
- - Math library: Leverage optimized ARMv8-M functions from BSD license
- ARM file.
- - Shared libraries: Add a non-standard dllfnc.h function to set the
- symbol table.
- - C Library: Add a support for setvbuf(). This is a collaborative
- effort. Alan Carvalho de Assis did the initial prototype.
- - C Library: Add setbuf() which is a trivial wrapper around setvbuf().
- - C library: Add swab().
- - C library: Add strtoimax and strtoumax.
- - C library: Add ffs(), rindex(), an index(). Add strings.h. Move
- strcasecmp, strncasecmp, bzero, bcmp, and bcopy to where they
- belong in strings.h.h, not string.h. bzero, bcmp, and bcopy are
- legacy functions; the contemporary counterparts should be used
- instead.
- - C library: Add fstatfs().
- - Update cwchar. Add cwctype.
- * Build/Configuration System:
- - Add configuration support for builds with Ubuntu under Windows 10.
- * Tools:
- - tools/noteinfo.c: A hack tool that I use to analyze some sched_note
- output. Needs a home and may be useful to others.
- - tools/mkconfig.c: Add logic to keep all of the buffering options in
- sync.
- * NSH: apps/nshlib:
- - NSH: Add support for the 'ln' command.
- - NSH ls command: if node is a symobolic link, use readlink() to get
- and the display the target of the symblic link.
- - NSH: Add readlink command.
- * Applications: apps/examples:
- - apps/examples/nxtext: Make line spacing configurable.
- - apps/system/zmodem/host/nuttx/compiler.h synchronized with
- nuttx/nuttx/include/nuttx/compiler.h. From Aleksandr Vyhovanec.
- - apps/examples/sotest: Add a test for shared libraries.
- - apps/examples/ostest: Add a test of setvbuf().
- - apps/examples/stat: Add a simple test for stat(), fstat(),
- statfs(), and fstatfs().
- Works-In-Progress:
- * IEEE802.14.5/6LowPAN. Hooks and framework for this effort were
- introduced in NuttX-7.15. Work has continued on this effort on
- forks from the main repositories, albeit with many interruptions.
- The completion of this wireless feature will postponed until at
- least NuttX-7.21.
- Bugfixes. Only the most critical bugfixes are listed here (see the
- ChangeLog for the complete list of bugfixes and for additional, more
- detailed bugfix information):
- * Core OS:
- - SMP: There were certain conditions that we must avoid by preventing
- the release of the pending tasks while withn a critical section.
- But this logic was incomplete; there was no logic to prevent other
- CPUs from adding new, running tasks while on CPU is in a critical
- section. This commit corrects this. This is matching logic in
- sched_addreadytorun to avoid starting new tasks within the critical
- section (unless the CPU is the holder of the lock). The holder of
- the IRQ lock must be permitted to do whatever it needs to do.
- - SMP: Make checks for CPU lock set more robust. There are certain
- conditions early in initialization on during interrupt handling
- where things need to be done a little differently.
- - sched_cpulocked: Avoid use of spinlock. That has been reported to
- cause a deadlock (2016-12-28).
- - SMP: Fix a gap where we may try to make modifications to the task
- lists without being in a critical sections. That permits
- concurrent access to the tasks lists and many subtle problems.
- This fix just remains in the critical section throughout the
- operation (and possible until the task is restore in the event of a
- context switch). Makes a big difference in stability.
- - SMP: Fix an error in critical section logic when performing a
- context switch from an interrupt handler. The g_cpu_irqset bit was
- not being set for the CPU so other CPUs did not know about the
- critical section.
- - SMP Signals: Fix some SMP signal delivery logic. Was not handling
- some critical sections correctly and was missing logic to signal
- tasks running on other CPUs.
- - SMP: Fix timer related issues: Round robin and sporadic
- scheduling were only being performed for tasks running on the CPU
- that processes the system timer interrupt. Similary, CPU load
- measurements were only be processed for running on the CPU that
- receives the sampling interrupt.
- - sched_note: Fix spinlock instrumentation. From Masayuki Ishikawa.
- - In all implementations of _exit(), use enter_critical_section() vs.
- disabling local interrupts.
- - sigtimedwait: When timer expires, up_unblock_task() is called.
- This is okay in the single CPU case because interrupts are disable
- in the timer interrupt handler. But it is insufficient in the SMP
- case. enter_ and leave_critical_section() must be called in order
- to manage spinlocks correctly.
- - Fix a compile error: in sched_cpuload.c:Line136, the variables ts
- and secs are not defined if CONFIG_CPULOAD_ONESHOT_ENTROPY = 0.
- However, these variables are used regardless of
- CONFIG_CPULOAD_ONESHOT_ENTROPY at lines~180:onwards. From Rajan Gill.
- - CPU load: Correct computation of the nominal period to use when the
- source is a oneshot timer.
- - Cancellation points: Fix some backward logic in conditional
- compilation.
- - Remove an unused variable when calling sigwaitinfo() and
- sigtimedwait(). From Masayuki Ishikawa.
- * File System/Block and MTD Drivers:
- - procfs: Correct to snprintf-related errors in fs_procfsproc.c.
- Resolves issue #24.
- - Add logic to VFS rename: If target of rename exists and is a
- directory, then the source file should be moved 'under' the target
- directory. POSIX also requires that if the target is a file, then
- that old file must be deleted.
- - Fix open() a block device with
- CONFIG_DISABLE_PSEUDOFS_OPERATIONS=y. From Masayuki Ishikawa.
- - File System: Don't build block driver proxy if PSEUDOFS_OPERATIONS
- are disabled.
- - sendfile(): Fix error introduced with commit
- ff73be870e38959b0aaee5961dc47b4b58dc2d86. Noted by Maciej Wójcik.
- * Graphics/Graphic Drivers:
- - NxWM configurations. If using a 7-bit character set, then the
- cursor character cannot be 137 (graphic block). Use 95
- (underscore) instead.
- - NX server: Correct message queue names. Should not be at /dev,
- but rather relative to /var/mqueue.
- * Common Drivers:
- - MMCSD_SDIO: Only wait for card ejected if card detection is
- supported. From Alan Carvalho de Assis.
- - Typos withim mtd/ with Macronix MX25L. In
- NuttX/drivers/mtd/Make.defs letters X between M and 25 are
- missing. Noted by Oleg Evseev.
- - USBMSC: Always set LUN readonly flag. From Wolfgang Reißnegger.
- - drivers/lcd: ssd1306_configspi() must have global scope.
- - MMC/SD SDIO: Some drivers need to start DMA before sending CMD24
- and some AFTER. From Alan Carvalho de Assis.
- - drivers/tone.c: Handle configuration with multiple PWM channels.
- This resolves issue #30: Audio Tone Generator and PWM Multiple
- Output Channel options.
- - drivers/tone.c: 50% duty needs to be expressed a a fixed precision
- number.
- - drivers/spi/Kconfig: There is too much SPI in the configuration
- menu; SPI Driver Support menu is empty. From Maciej Wójcik.
- - option to enable Memory Card debug output was hidden with SD cards
- connected through SPI. From Maciej Wójcik.
- - usbhost_cdcacm: fix tx outbuffer overflow and remove now invalid
- assert. From Janne Rosberg.
- * Networking/Network Drivers:
- - Networking: Fixed some issues that prevented IPv6 from working with
- IPv4 enabled. From Pascal Speck.
- - Networking: fixed a nullptr-dereference on iob_clone. From Pascal
- Speck.
- - Ethernet: Need two work structures (minimum) in all Ethernet
- drivers so that pending poll work is not lost when an interrupt
- occurs.
- * ARMv7-R:
- - I found an issue inside the cp15_coherent_dcache function: The
- "mcr CP15_BPIALLIS(r0)" should only be used with SMP
- configurationa. In non-SMP configuration this instruction could
- become undefined. From Manohara HK.
- * Atmel SAM3/4 Drivers:
- - SAM3/4: GPIO bit numbering typo fixes. From Wolfgang Reißnegger.
- * Atmel SAM3/4 Boards:
- - Add missing sched_note_*() calls in sam4cm SMP functions.
- * NXP/Freescale Kinetis:
- - Kinetis: Fixed wrong MCG VDIV calculation on new NXP K60. From
- Maciej Skrzypek.
- - Kinetis: Need to set HAVE_UART_DEVICE when UART4 is selected. From
- Maciej Skrzypek.
- - Kinetis MCG: Wrong FRDIV set in MCG_C1. From Maciej Skrzypek.
- * NXP/Freescale Kinetis Drivers:
- - Kinetis Serial: Fixed compile error when UART5 is selected. From
- Maciej Skrzypek.
- - Kinetis SDHC - Enable clock after selected. From David Sidrane.
- - Kinetis: Correct some SPI and I2C configuration issues. From
- David Sidrane.
- - Kinetis Ethernet: Add #define for number of loops for auto
- negotiation to complete. From Marc Rechté.
- - Kinetis Werial: Fixed up_rxint - did not disable the RX
- interuppts. There was an OR where and AND NOT was needed. From
- David Sidrane.
- * NXP/Freescale LPC43xx:
- - LPC43 pinset definitions: Add more 1 bit to pinset to reach
- SFSCLK0-SFSCLK3. Remove PINCONFIG_DIGITAL. From Alan Carvalho de
- Assis.
- * NXP/Freescale LPC43xx Drivers:
- - LPC43 serial: Correct conditional logic that selects /dev/ttySN.
- Problem noted by Alan Carvalho de Assis.
- * NXP/Freescale i.MX6:
- - i.MX6: Fix clearing GPT status register. From Masayuki Ishikawa.
- * STMicro STM32:
- - STM32, STM32L4 Oneshot: Fix logic so that it can support multiple
- oneshot timers.
- - STM32 F7: Added missing ARCH_HAVE_RESET for F7. From David Sidrane.
- - STM32: Add missing STM32_BKP_BASE. From David Sidrane.
- - STM32 and STM32F7: Fixes the BKP reference counter issue. From
- David Sidrane.
- * STMicro STM32 Drivers:
- - Fix for SAMv7 SPI: DLYBS value was calculated, but never written to
- any registers. This led to incorrect timings on the bus. From
- Michael Spahlinger.
- - STM32 QEncoder: Fix QEncoder driver, based on STM32L4 driver. From
- Alan Carvalho de Assis.
- - STM32 QEncoder: Enable clocking to the timer on QE setup; disable
- clock on QE teardown.
- - STM32 Ethernet: Need two work structures so that pending poll work
- is not lost when an interrupt occurs. This change has also been
- ported to all all other effected Ethernet drivers.
- - STM32 OTGHS host: stm32_in_transfer() fails and returns NAK if a
- short transfer is received. This causes problems from class
- drivers like CDC/ACM where short packets are expected. In those
- protocols, any transfer may be terminated by sending short or NUL
- packet. From Janne Rosberg. Adapted Janne Rosberg's patch to
- STM32 OTGHS host to OTGFS host, and to similar USB host
- implementations for STM32 L4 and F7.
- * STMicro STM32 Boards:
- - STM32F4 Discovery: Fix issues with QEncoder support. From Alan
- Carvalho de Assis.
- * C Library/Header Files:
- - Add debug assertion in libdtoa to catch attempts to use floating
- point output formats from within an interrupt handler. That will
- cause assertions or crashes downstream because __dtoa will attempt
- to allocate memory. From Pierre-noel Bouteville.
- - libc: Fix ARMv7-A/R memcpy assembly.
- - Fix return value if x is NaN. From Aleksandr Vyhovanec.
- * apps/nshlib:
- - NSH: Eliminate a warning when all memory inspection commands are disabled.
- * apps/graphics:
- - apps/graphics/traveler/tools: Fix linkage issue. The -lm should
- come after -o binname. From Alan Carvalho de Assis.
- * apps/netutils:
- - The CONFIG_NETUTILS_HTTPD_PATH constant is used by httpd_mmap.c and
- httpd_sendfile.c but It was not present in Kconfig menu. From
- Maciej Wójcik.
- * apps/examples:
- - Configurations that enable OSTEST must not disable signals.
- - apps/examples/ostest: Was ignoring
- CONFIG_EXAMPLES_OSTEST_FPUTESTDISABLE.
- - In apps/examples/mtdpart/mtdpart_main.c where
- CONFIG_EXAMPLES_MTDPART_NPARTITIONS defining is checked should be
- #ifndef instead of #ifdef. Noted by Oleg Evseev.
- NuttX-7.21 Release Notes
- ------------------------
- The 121st release of NuttX, Version 7.21, was made on June 6, 2017,
- and is available for download from the Bitbucket.org website. Note
- that release consists of two tarballs: nuttx-7.21.tar.gz and
- apps-7.21.tar.gz. These are available from:
- https://bitbucket.org/nuttx/nuttx/downloads
- https://bitbucket.org/nuttx/apps/downloads
- Both may be needed (see the top-level nuttx/README.txt file for build
- information).
- Additional new features and extended functionality:
- * Core OS:
- - pthread rwlocks: Add an implementation for read/write locks
- (rwlocks) into the pthread library. These locks are writer
- priority, such that if any writers come in they are given priority
- for writing. From Mark Schulte.
- - pthread robust mutexes: Implement robust mutex support:
- pthread_mutex_lock() and trylock() will return EOWNERDEAD if the
- mutex is locked by a thread that no longer exists. Add
- pthread_mutex_consistent() to recover from this situation. Keep
- list of all mutexes held by a thread in a list in the pthread's TCB.
- When pthread exits or is cancelled, mutexes held by thread are
- marked inconsistent and the highest priority thread waiting for the
- mutex is awakened. There is a configuration option to (a) support
- only robust mutexes, (b) support only traditional unsafe mutexes,
- or (c) Support both unsafe and robust mutexes via
- pthread_mutexattr_get/setrobust().
- - pthread cancellation points: Add logic to disable cancellation
- points within the OS. This is useful when an internal OS function
- that is NOT a cancellation point calls an OS function which is a
- cancellation point. In that case, irrecoverable states may occur if
- the cancellation is within the OS. From Juha Niskanen.
- - clock: Add clock_resynchronize and use subseconds RTC. Add
- clock_resynchronize for better synchronization of CLOCK_REALTIME and
- CLOCK_MONOTONIC to match RTC after resume from low-power state. Add
- up_rtc_getdatetime_with_subseconds under
- CONFIG_ARCH_HAVE_RTC_SUBSECONDS to allow initializing (and
- resynchronizing) system clock with subseconds accuracy RTC. From
- Jussi Kivilinna.
- - clock: Add new type ssystime_t for relative 64-bit ticks, change
- ticks<->time conversion functions to use ssystime_t. From Jussi
- Kivilinna.
- - clock: Add testing for 32-bit overflow of 64-bit system timer. From
- Jussi Kivilinna.
- * File Systems/Block and MTD Drivers
- - drivers/mtd/w25.c: Erase sector only if it is not in erased state.
- From Jussi Kivilinna.
- * Graphics/Display Drivers:
- - drivers/lcd: Extend st7565 driver to include support for the
- AQM_1248A. From Masayuki Ishikawa.
- - drivers/lcd: Add driver for Nokia 5110 (Philips PCD8544). From Alan
- Carvalho de Assis.
- * Networking/Network Drivers:
- - Extensive modifications to support wireless network (see below).
- - TUN driver: Implement TAP (OSI layer 2) mode. Enable by setting the
- IFF_TAP flag instead of the IFF_TUN flag in ifr_flags. From Thomas
- Keh.
- - Add user-space networking stack API (usrsock). User-space
- networking stack API allows user-space daemon to provide TCP/IP
- stack implementation for NuttX network. Main use for this is to
- allow use and seamless integration of HW-provided TCP/IP stacks to
- NuttX. For example, user-space daemon can translate /dev/usrsock
- API requests to HW TCP/IP API requests while rest of the user-space
- can access standard socket API, with socket descriptors that can be
- used with NuttX system calls. From Jussi Kivilinna.
- - net/: Network driver now retains Ethernet MAC address in a union so
- that other link layer addresses may be used in a MULTILINK
- environment.
- * Wireless Networking/Wireless Drivers:
- - BCM43362: Support for Broadcom's BCM43362 WiFi chip was contributed
- by Simon Piriou as part of the port of the Particle Photon board.
- Only station functionality is available at present. This work
- includes not on the WiFi driver, but the support Particle Photon
- board, the infrasture for IEEE 802.11 FullMAC networking including
- the network device interface, WiFi configuration, AP scanning and
- authentication and association with an AP.
- - IEEE 802.11 networking tools and support.
- - IEEE 802.15.4 MAC support. This is an effort that was started some
- time back by Sebastien Lorquet (with some help from Matte Poppe).
- Recently, Anthony Merlino has taken on this effort and has made
- some significant progress. Using the Microchip MRF24J40 module with
- the Mikroe Clicker2-STM32 board along with a PC-based IEEE 802.15.4
- sniffer, Anthonly has verified correct transmittion and receipt of
- basic frames.
- - Microchip MRF24J40: As mentioned above, this IEEE 802.15.4 radio
- driver is now basically functional.
- - IEEE 802.15.4 Network Driver: A driver that interfaces the NuttX
- network with the IEEE 802.15.4 MAC has been developed but is still
- incomplete and has not been verified.
- - IEEE 802.15.4 Network Loopback Driver: A simple IEEE 802.15.4 MAC
- loopback driver was developed. This driver allowed for parallel
- development of the IEEE 802.15.4 MAC and 6LoWPAN.
- - 6LoWPAN: The Contiki 6LoWPAN stack has been ported so that works
- within the NuttX networking framework and interfaces with the new
- IEEE 802.15.4 MAC via the network driver. Live testing with
- IEEE 802.15.4 radios has not yet been done; all testing has used
- the loopback driver. There are no known problems and the stack
- is ready for additional testing.
- - Add option to enable wireless debug output.
- * Other Common Device Drivers:
- - Add entropy pool and strong random number generator. Entropy pool
- gathers environmental noise from device drivers, user-space, etc.,
- and returns good random numbers, suitable for cryptographic use.
- Based on entropy pool design from *BSDs and uses BLAKE2Xs algorithm
- for CSPRNG output. Patch also adds /dev/urandom support for using
- entropy pool RNG and new 'getrandom' system call for getting
- randomness without file-descriptor usage (thus avoiding file-
- descriptor exhaustion attacks). The 'getrandom' interface is similar
- as 'getentropy' and 'getrandom' available on OpenBSD and Linux
- respectively. From Jussi Kivilinna.
- - XBox One controller: Adds USB host driver support for the XBox One
- controller. Currently only the latest version (XBox One X)
- controller works. The older XBox One controllers do not enumerate
- correctly. From Brian Webb.
- - drivers/analog: Add basic COMP driver. From Mateusz Szafoni.
- - drivers/analog: Add driver for the LTC1767L ADC. From Martin
- Lederhilger.
- - drivers/analog: Add basic OPAMP driver. From Mateusz Szafoni.
- - drivers/sensors: Add driver for ST HTS221 humidity sensor. From
- Juha Niskanen.
- - drivers/sensors: Add driver for ST LPS25H pressure sensor. From
- Juha Niskanen.
- - drivers/sensors: Add driver for ST LIS2DH accelerometer. From Timo
- Voutilainen.
- - drivers/usbmisc: Add driver for Fairchild FUSB301 USB type-C
- controller. From Harri Luhtala.
- - RTC: Add interface for check if RTC time has been set. New
- interface allows checking if RTC time has been set. This allows to
- application to detect if RTC has valid time (after reset) or should
- application attempt to get real time by other means (for example, by
- launching ntpclient or GPS). From Jussi Kivilinna.
- - Buttons: Change return value of board_buttons() and the type of
- btn_buttonset_t to uint32_t so that more than 8 buttons can be
- supported.
- - drivers/syslog: Use monotonic clock for timestamp when available.
- From Jussi Kivilinna.
- - SPI: Add an instance argument to the SPIDEV definitions. Thus,
- instead of specifying a FLASH device, for example, as SPI_FLASH, you
- would now use SPI_FLASH(0) where the "instance" argument now
- distinguishes multiple FLASH devices on the same SPI bus. From
- Sebastien Lorquet.
- - IOBs: Move from net/iob to a better location in mm/iob where they
- can be shared outside of the networking logic. Current also used
- by IEEE 802.15.4 MAC and by syslog (when buffering enabled).
- - syslog: Add option to buffer SYSLOG output to avoid interleaving.
- Uses new shareable IOBs. Additional logic to assure that the the
- write from the buffer is a single atomic write in normal debug
- output.
- - drivers/can: Move CAN subsystem to its own directory and put device
- drivers there. From Alan Carvalho de Assis.
- - drivers/can: Add Microchip MCP2515 CAN Bus controller driver. From
- Alan Carvalho de Assis.
- - drivers/audio: Add cs43l22 audio driver. From Taras Drozdovsky.
- - drivers/input: Add Cypress MBR3108 CapSense touch button driver.
- From Juha Niskanen.
- * Simulation
- - configs/sim/sixlowpan: Configuration for testing the 6LoWPAN with
- the IEEE 802.15.4 loopback network driver.
- * Infineon XMC4xxx:
- - arch/arm/src/xmc4: Initial, partial support for Infineon XMC4xxx.
- * Infineon XMC4xxx Boards:
- - XMC4500 Relax: Add basic board support infrastructure of Infineon
- XMC4500 Relax Lite v1. Basic serial, LED, and button button support
- for a simple NSH configuration. There are still stome remaining
- issues with serial communications.
- * MicroChip PIC32MX Boards:
- - pic32mx7mmb: Add support for the Pinquino toolchain.
- - pic32mx7mmb: Add support for PROCFS file system.
- * NXP Freescale Kinetis:
- - Kinetis: Allow board to add pullups on SDHC lines. From David
- Sidrane.
- - Kinetis: Use optional BOARD_OSC_CR and BOARD_OSC_DIV in clock
- configuration. From David Sidrane.
- * NXP Freescale Kinetis Drivers:
- - Kinetis: Add Timer PWM Module (TPM) to K66 chip. From David
- Sidrane.
- - Kinetis: Added HW flow control and termios. From David Sidrane.
- - Kinetis: Add ARCH_HAVE_I2CRESET. From David Sidrane.
- * NXP Freescale LPC43xx:
- - Add support for LPC4337FET256. From Andreas Bihlmaier.
- * STMicro STM32:
- - Change STM32 tickless to use only one timer. From Konstantin
- Berezenko.
- - STM32 F7: Add support for LSE RTC and enable RTC subseconds. From
- Jussi Kivilinna.
- - STM32 L1: stm32l15xx_rcc: Add support for using MSI as system
- clock. From Juha Niskanen.
- - STM32 L1: stm32l15xxx_rcc: configure medium performance voltage
- range and zero wait-state when allowed by SYSCLK setting. Zero
- wait-state for flash can be configured when: (1) Range 1 and
- SYSCLK <= 16 Mhz, (2) Range 2 and SYSCLK <= 8 Mhz, or (3) Range 3
- and SYSCLK <= 4.2 Mhz. Medium performance voltage range (1.5V)
- can be configured when SYSCLK is up to 16 Mhz and PLLVCO up to
- 48 Mhz. From Juha Niskanen.
- - STM32 F0: Add basic support for STM32F0. From Alan Carvalho de
- Assis.
- - STM32 F0: Add basic support for STM32F07x family.
- - STM32 L1: stm32l15xx_rcc: Allow board to configure HSE clock in
- bypass-mode. Allows using MCO output from ST-link chip (on Nucleo
- and Discovery boards) as HSE input. From Juha Niskanen.
- - STM32 L1: Add support for STM32L152CC, STM32L152RC and STM32L152VC.
- From Juha Niskanen.
- - STM32 F0: Add support for HSI48.
- - STM32 L4: Add support for the STM32L496XX family. From Juha
- Niskanen.
- - STM32 L4: modularize Kconfig to support different product
- lines/families. This is modeled after STM32F7. Idea is to declare
- each chip in Kconfig but allow for flash size override. Commit adds
- many STM32L4_HAVE_XXX feature test macros. From Juha Niskanen.
- - STM32 L4: Separate SYSCFG into product line specific files for
- clarity. From Juha Niskanen.
- - STM32 L4: Add support for many new MCUs from the STM32L4X3XX
- product line. From Juha Niskanen.
- - STM32 L4: Add dbgmcu header files. From Juha Niskanen.
- - STM32 F410: Add support for STM32F410. STM32F410 is a version of
- STM32F4 with 32 KB of RAM and 62 or 128 KB of flash. From Gwenhael
- Goavec-Merou.
- * STMicro STM32 Drivers:
- - SDIO: Extensions to support the SDIO interface to the BCM43362 from
- Simon Piriou.
- - STM32 F2: Add USB OTG HS support for stm32f20xxx cores. From Simon
- Piriou.
- - STM32 F2, F4, and F7: Add BOARD_DISABLE_USBOTG_HSULPI flag. From
- Simon Piriou.
- - STM32 F33: Move DMA logic to a separate files + add ADC support.
- From Mateusz Szafoni.
- - STM32 F3: Add COMP support. From Mateusz Szafoni.
- - STM32 F33: Support for COMP character driver. From Mateusz Szafoni.
- - STM32 F4: Implement DMA support for the STM32F4 I2C. From Rajan Gill.
- - STM32 F7: Add stm32 RNG support. This is copied from stm32l4.
- Tested on STM32F746ZG board. From Juha Niskanen.
- - STM32 L1: Add STM32L162VE to chip.h. From Juha Niskanen.
- - STM32 F4: Add I2C3 SDA pin mapping for STM32F411. From no1wudi.
- - STM32 L1: stm32_flash: Add EEPROM writing for STM32L15XX. From
- Juha Niskanen.
- - STM32 F7: Serial: Add interface to get uart_dev_t by USART number,
- stm32_serial_get_uart. From Jussi Kivilinna.
- - STM32 F4: Provide TIM5 definition for STM32F429. From Matias v01d.
- - STM32 F0: Add an untested port of the F1 USB device to the STM32F0.
- - STM32 F0: Add support for the STM32F09X family. From Juha
- Niskanen.
- - STM32 F0: Initial cut at I2C driver. Still a work in progress.
- From Alan Carvalho de Assis.
- - STM32 F33: Add OPAMP support. From Mateusz Szafoni.
- - STM32 L4: stm32l4_i2c: Add I2C4 code. From Juha Niskanen.
- - STM32 L4: Add GPIO_PORTI definition. From Juha Niskanen.
- - STM32 F7 Serial: Allow configuring Rx DMA buffer size. From Jussi
- Kivilinna.
- - STM32 L4: Firewall for stm32l4x3xx. Not tested for any product
- family, but now it at least compiles. L496 devices can have one bit
- wider Volatile Data Segment. From Juha Niskanen.
- - STM32 TIM: Add method to get timer width. Freerun timer: Use timer
- width to get the correct clock rollover point.
- - STM32 L4: Add internal flash write support. From Juha Niskanen.
- - STM32 L4: Port stm32l4_serial_get_uart function from STM32F7. From
- Juha Niskanen.
- - STM32 Ethernet: Add support for KSZ8081 PHY interrupts. From
- Sebastien Lorquet.
- - STM32 F4: Add I2S driver. From Taras Drozdovsky.
- - STM32 L4: Add IWDG peripheral. This is the same as for STM32
- except that prescale and reload can be changed after watchdog has
- been started, as this seems to work on L4. From Juha Niskanen.
- - STM32 F7: Add SPI DMA support. From Jussi Kivilinna.
- * STMicro STM32 Boards:
- - Support for the Particle Photon board was contributed by Simon
- Piriou. The Photon board is based on a STM32F205G MCU with and on-
- board BCM43362 WiFi chip that interfaces via the STM32's SDIO
- interface. Board configuration support includes, in addition,
- buttons, LEDS, IWDG, USB OTG HS, and procfs support. Configurations
- available for nsh, usbnsh, and wlan configurations.
- - Clicker2-STM32: Support for the Mikroelektronika Clicker 2 for
- STM32 was added by Anthony Merlino. This board, along with the
- MRF24J40 Click board is the platform used to deveop the IEEE
- 802.15.4 support. The boad configuration includes the MRF24J40
- initialization logic and SPI support. Configurations exist for nsh,
- knsh, usbnsh, and mrf24j40-radio.
- - Nucleo_F334R8: Add ADC example. From Mateusz Szafoni.
- - Nucleo-F334R8: Add COMP support. From Mateusz Szafoni.
- - Nucleo-F334R8: Use new COMP driver. From Mateusz Szafoni.
- - Adds USB host support to stm32f411-disco board. From Brian Webb.
- - Add stm32f0discovery board support. From Alan Carvalho de Assis.
- - Nucleo-F072RB: Add board configuration.
- - Nucleo-F334R8: Add OPAMP support. From Mateusz Szafoni.
- - Nucleo-F072RB: Add support for the I2C driver used by I2C tools.
- - Nucleo-L496ZG: Add nucleo-l496zg board files. From Juha Niskanen.
- - Nucleo-F091RC: Add nucleo-f091rc board files. From Juha Niskanen.
- - Nucleo-L432KC: Add nucleo-l432kc board files. From Sebastien
- Lorquet.
- - Nucleo-L452RE: Add nucleo-l452re board files. From Juha Niskanen.
- - stm32f103-miniumum: Add board support to use the Nokia 5110
- LCD display driver. From Alan Carvalho de Assis.
- * C Library/Header Files:
- - C library: Add strerror_r().
- - C Library: Add wcstoull(), swprintf(), wcstod(), wcstof(), wcstol(),
- wcstold(), wcstoul(), wcstoll() functions. Add mbsnrtowcs() and
- wcsnrtombs() (just returning success). Add mbtowc() and wctomb() to
- C++ std namespace. From Alan Carvalho de Assis.
- - C Library: Add ffsl(), ffsll(), fls(), flsl(), flsll() and use
- GCC's __builtin_ctz/__builtin_clz for faster implementation of these.
- From Jussi Kivilinna.
- - fixedmath: Add square root and b32_t conversion operators. From
- Jussi Kivilinna.
- - locale.h: Add a bogus definition of locale_t.
- - C library: Versions mbrlen and mbsrtowcs taken and adapted from
- FreeBSD code (at https://github.com/freebsd/freebsd/). From Matias
- v01d.
- * Build/Configuration System:
- - Include C++ library in 'make export'. From Alan Carvalho de Assis.
- - configs: Remove all setenv.sh and setenv.bat files. Remove all
- references to setenv.sh and setenv.bat from all config README files.
- - Kconfig/deconfigs: Add CONFIG_ARCH_TOOLCHAIN_GNU to indicate that
- the toolchain is based on GNU gcc/as/ld. This is in addition to the
- CPU-specific versions of the same definition.
- - Move prototype for up_cxxinitialize() from nuttx/include/nuttx/arch.h
- to apps/include/platform/cxxinitialize.h.
- * Tools:
- - Add initialconfig.c so that perhaps in the future we will be able to
- use this to generate a new configuration from scratch (rather than
- having to derive new configurations from existing configurations).
- NOTE: Not yet intregated into the build system.
- * NSH: apps/nshlib:
- - Added support for set [{+|-}{e|x|xe|ex}] [<name> <value>]. Set the
- 'exit on error control' and/or 'print a trace' of commands when
- parsing scripts in NSH. The settinngs are in effect from the point
- of exection, until they are changed again, or in the case of the init
- script, the settings are returned to the default settings when it
- exits. Included child scripts will run with the parents settings and
- changes made in the child script will effect the parent on return.
- Use 'set -e' to enable and 'set +e' to disable (ignore) the exit
- condition on commands. The default is -e. Errors cause script to
- exit. Use 'set -x' to enable and 'set +x' to disable (silence)
- printing a trace of the script commands as they are ececuted. The
- default is +x. No printing of a trace of script commands as they are
- executed. From David Sidrane.
- - Print expanded variables if -x. From David Sidrane.
- - ifconfig command: Extend ifconfig to support 6LoWPAN. Adapt to
- some changes in configuration variable usage.
- - Network initialization: If IEEE802.11 selected use wlan0 instead of
- eth0 for network device name.
- - Network initialization: NSH now has configuration options to select
- the wireless properties. It builds the configuration structure and
- passes this to wpa_driver_wext_associate() so that it will set the
- network as configured.
- - Network initialization: Add a new option CONFIG_NSH_NETLOCAL that
- will suppress some built in operations and will support manual
- configuration of a wireless network through command line tools.
- * Examples/Tests: apps/examples:
- - examples/xbc_text: Adds a test program for the XBox One controller
- driver. From Brian Webb.
- - examples/ostest: Add a test of robust mutexes.
- - examples/ostest: Add tests for pthread_rwlock. Adding tests to be
- used to verify the pthread_rwlock lock works. From Mark Schulte.
- - examples/ostest: Additional test for rwlock and one for cancel
- cleanup handlers. From Juha Niskanen.
- - examples/usrsocktest: Add application for USRSOCK testing. From
- Jussi Kivilinna.
- - examples/nettest: Adapt for use in testing 6LoWPAN.
- - examples/nettest: If doing loopback, but not using the official
- loopback device, then use the server should use the configured client
- IP address.
- - examples/udpblaster: Several fixes to work with 6LoWPAN.
- - examples/udpblaster: Add logic to bind the local UDP socket to a
- well-known address.
- - examples/configdata: Add stacksize and priority. From Juha Niskanen.
- * Network Utilities: apps/netutils:
- - netutils/netlib: Add IEEE 802.11 wireless IOCTL wrappers.
- - netutils/netlib: Add a helper function to convert a string to a
- 6LoWPAN node address.
- - netlib and NSH: Add logic to get/set the IEEE802.15.4 PAN ID.
- - netutils/dhcpc: Make the network device name a configuration
- option. Was hardcoded to eth0 but may, instead, need to be wlan0.
- - netutils/dhcpc: Remove hard-coded interface device. Now passed as
- a parameter to dhcpc_open(). From Sebastien Lorquet.
- * Wireless Utilities: apps/wireless:
- - wireless/wapi: Port of Wapi wireless services. The original
- depended on features not supported by NuttX: Removed logic that
- depends on Linux netlink. Removed functionality that depended on
- the Linux procfs: This includes only 1) listing of available
- interfaces and 2) listing of all routes.
- - wireless/wapi: Create command line Wapi application based on
- Wapi sample code.
- - wireless/wapi: wpa_driver_wext_associate() now accepts a
- configuration parameter that can be used to specify the wireless
- properties.
- - wireless/wapi: Add basic wapi_event_stream_extract implementation.
- From Simon Piriou.
- - wireless/ieee802154: Add iwpan and i8sak tools. iwpan is similar
- in concept to wapi. From Anthony Merlino (i8sak was originally
- by Sebastien Lorquet).
- - wireless/ieee802154/libmac: IEEE 802.15.4 MAC library.
- - wireless/wext: Add drivers_wext from the WPA supplicant; Integrate
- into NSH. From Simon Piriou.
- * System Utilities (apps/system)
- - apps/system/dhcpc: Add a command to renew or establish a lease on an
- IPv4 address.
- - apps/system/ntpc: Add a command to start or stop the NTPC daemon.
- - apps/system/ramtest: Make stacksize and priority conigurable.
- * Platform-Specific Support (apps/platform)
- - apps/platform: Create gnu/ subdirectory that contains the one and
- only GNU C++ initialization function. Remove all other C++
- initialization functions.
- Bugfixes. Only the most critical bugfixes are listed here (see the
- ChangeLog for the complete list of bugfixes and for additional, more
- detailed bugfix information):
- * Core OS:
- - Priority inheritance: When CONFIG_SEM_PREALLOCHOLDERS==0, there is
- only a single, hard-allocated holder structure. This is problem
- because in sem_wait() the holder is released, but needs to remain in
- the holder container until sem_restorebaseprio() is called. The call
- to sem_restorebaseprio() must be one of the last things the
- sem_wait() does because it can cause the task to be suspended. If in
- sem_wait(), a new task gets the semaphore count then it will fail to
- allocate the holder and will not participate in priority
- inheritance. This fix is to add two hard-allocated holders in the
- sem_t structure: One of the old holder and one for the new holder.
- - Priority inheritance: sem_holder sem_findholder missing
- inintalization of pholder. sem_findholder would fail and code
- optimization covered this up. From David Sidrane.
- - Partial Fix priority inheritance CONFIG_SEM_PREALLOCHOLDERS=0. From
- David Sidrane.
- - Priority inheritance: sem_boostholderprio prevent overrun of
- pend_reprios. The second case rtcb->sched_priority <=
- htcb->sched_priority did not check if there is sufficient space in
- the pend_reprios array. From David Sidrane.
- - lp_worker: Guard from pend_reprios overflow. From David Sidrane.
- - Priority inheritance: Fixes improper restoration of base_priority in
- the case of CONFIG_SEM_PREALLOCHOLDERS=0. The call to
- sem_restorebaseprio_task context switches in the
- sem_foreachholder(sem, sem_restoreholderprioB, stcb); call prior to
- releasing the holder. So the running task is left as a holder as is
- the started task. Leaving both slots filled thus failing to perform
- the boost/or restoration on the correct tcb. This PR fixes this by
- releasing the running task slot prior to reprioritization that can
- lead to the context switch. To faclitate this, the interface to
- sem_restorebaseprio needed to take the tcb from the holder prior to
- the holder being freed. In the failure case where sched_verifytcb
- fails it added the overhead of looking up the holder. There is also
- the additional thunking on the foreach to get from holer to
- holder->tcb. An alternate approach could be to leve the interface
- the same and allocate a holder on the stack of sem_restoreholderprioB
- copy the sem's holder to it, free it as is done in this pr and and
- then pass that address sem_restoreholderprio as the holder. It could
- then get the holder's tcb but we would keep the same sem_findholder
- in sched_verifytcb. From David Sidrane.
- - Priority inheritance: Fixes improper restoration of base_priority.
- From David Sidrane.
- - sem_holder: Indexing error. From David Sidrane.
- if (sem->holder[0].htcb != NULL || sem->holder[**1**].htcb != NULL)
- - realloc(): When realloc() has to fall back to calling malloc(), size
- including overhead was being provided to malloc(), causing a slightly
- larger allocation than needed. Noted by initialkjc@yahoo.com.
- - scheduler: Fix tg_flags check with GROUP_FLAG_NOCLDWAIT. From Masayuki
- Ishikawa.
- - scheduler: Fix CHILD_FLAG_EXITED in include/nuttx/sched.h. From
- Masayuki Ishikawa.
- - binfmt/elf: Fix offset value when calling elf_read() in
- elf_symname(). From Masayuki Ishikawa.
- - binfmt/elf: Fix offset value when calling elf_read() in
- elf_sectname(). From Masayuki Ishikawa.
- - There can be a failure in IOB allocation to some asynchronous
- behavior caused by the use of sem_post(). Consider this scenario:
- (1) Task A holds an IOB. There are no further IOBs. The value of
- semcount is zero. Task B calls iob_alloc(). Since there are not
- IOBs, it calls sem_wait(). The value of semcount is now -1. (2)
- Task A frees the IOB. iob_free() adds the IOB to the free list and
- calls sem_post() this makes Task B ready to run and sets semcount to
- zero NOT 1. There is one IOB in the free list and semcount is zero.
- When Task B wakes up it would increment the sem_count back to the
- correct value. (3) But an interrupt or another task runs occurs
- before Task B executes. The interrupt or other tak takes the IOB off
- of the free list and decrements the semcount. But since semcount is
- then < 0, this causes the assertion because that is an invalid state
- in the interrupt handler. So I think that the root cause is that
- there the asynchrony between incrementing the semcount. This change
- separates the list of IOBs: Currently there is only a free list of
- IOBs. The problem, I believe, is because of asynchronies due
- sem_post() post cause the semcount and the list content to become out
- of sync. This change adds a new 'committed' list: When there is a
- task waiting for an IOB, it will go into the committed list rather
- than the free list before the semaphore is posted. On the waiting
- side, when awakened from the semaphore wait, it will expect to find
- its IOB in the committed list, rather than free list. In this way,
- the content of the free list and the value of the semaphore count
- always remain in sync.
- - binfmt: Fix .dtor memory allocation. From Masayuki Ishikawa.
- * File System/Block and MTD Drivers:
- - SmartFS: If whence is SEEK_END, the file offset shall be set to the
- size of the file plus offset. Noted by eunb.song@samsung.com.
- - mtd/progmem: Fix incorrect target address calculation.
- progmem_read/write() is incorrectly calculating the target address,
- expecting the offset argument is given in a block number. This is
- completely wrong and as a result invalid flash region is accessed.
- Byte-oriented read/write interfaces of mtd device accept the target
- address in a byte offset, not a block number. From Heesub Shin.
- - procfs: Fix wrong member IDs are displayed when 'cat
- /proc/<pid>/group/status'. From Nobutaka Toyoshima.
- - procfs: Fix incorrect uptime with CONFIG_SYSTEM_TIME64. From
- Masayuki Ishikawa.
- - vfs/poll: round timeout up to next full tick. Calling poll() with
- timeout less than half tick (thus MSEC2TICK(timeout) => 0) caused
- returning error with EAGAIN. Instead of rounding timeout down, value
- should be rounded up. Open Group spec for poll says:
- "Implementations may place limitations on the granularity of timeout
- intervals. If the requested timeout interval requires a finer
- granularity than the implementation supports, the actual timeout
- interval will be rounded up to the next supported value." From Jussi
- Kivilinna.
- - mtd/config: erase block between block read and write. From Juha
- Niskanen.
- - mtd: Build RAMTRON and AT45DB drivers only if selected. From Juha
- Niskanen.
- - mtd/config: Fix byte read interface test. From Juha Niskanen.
- - mtd: Fix some unallocated and NULL pointer issues. rwb->wrflush and
- rwb->wrmaxblocks in rwbuffer could get unallocated values from
- ftl_initialize() in some configurations. Also fixes related assert:
- up_assert: Assertion failed at file:rwbuffer.c line: 643
- that can happen with the following configuration:
- CONFIG_FTL_WRITEBUFFER=y
- CONFIG_DRVR_WRITEBUFFER=y
- # CONFIG_FS_WRITABLE is not set
- These problems are caused by CONFIG variable differences between the
- buffer layers. TODO: This is not a perfect solution. readahead
- support has similar issues. From Juha Niskanen.
- - net procfs: Fix buffer corruption and refactor netdev_statistics.c.
- From Masayuki Ishikawa.
- - FAT: Fix 'Missing unlock' in fs_fat32.c. From Masayuki Ishikawa.
- - VFS fdopen: Add missing file stream flags clearing. Clear file
- stream structure regardless of config options. Structure clearing is
- needed as previous use of stream list entry might leave fs_flags
- set. From Harri Luhtala.
- - mtd/smart: Fix use of uninitialized variable. From Jussi Kivilinna.
- - mtd/w25.c: Enable short delay after sector/chip erase. From Jussi
- Kivilinna.
- - mtd/config: Add some error checks for I/O errors. From Juha
- Niskanen.
- * Graphics/Graphic Drivers:
- - net procfs: Some long lines were being generated that cause buffer-
- related problems and corrupted output.
- * Networking/Network Drivers:
- - Fixed wrong assert on udp dgram send. From Pascal Speck.
- - TCP/IPv6: Fix a compile issue when IPv6, but not IPv4 is enabled.
- - net/socket/accept: Fix building with CONFIG_NET_LOCAL_STREAM. From
- Jussi Kivilinna.
- - Argument of network device IOCTL should be unsigned long, just as
- will all other IOCTL methods.
- - net/socket: Fix cloning of local and raw sockets. From Jussi
- Kivilinna.
- - TCP: Wait for 3-Way Handshare before accept() returns. From Simon
- Piriou.
- - TCP: Send RST if applicaiton 'unlistens()' before we complete the
- connection sequence.
- - TCP: An RST received during the 3-way handshake requires a little
- more clean-up.
- - IPv6: Fix net_ipv6_pref2mask(). From Masayuki Ishikawa.
- - network IOCTL commands: The only place in net/netdev/netdev_ioctl.c
- where the interface state should change is for SIOCSIFFLAGS. The
- other ones .. SIOCSIFADDR, SIOSLIFADDR, SIODIFADDR .. should not
- change the link state. From Sebastien Lorquet.
- - TCP: Fix tcp_findlistner() in dual stack mode. From Masayuki
- Ishikawa.
- * Common Drivers:
- - Fix as5048b by adding missing frequency parameter. From Andreas
- Bihlmaier.
- - multiple fixes in nrf24l01 driver: (1) signal POLLIN if there is
- already data in the FIFO, (2) send ETIMEDOUT to userspace after 2
- seconds if TX IRQ was not received, (3) handle FIFO overflow, (4)
- handle invalid pipes/empty FIFO, and (5) multiple cosmetics (missing
- static, duplicate define, missing \n). From Leif Jakob.
- - input/mxt: Prevent overriding i2c transfer return value.
- put_reg/get_reg function was overriding i2c transfer error code with
- i2creset return value, that lead to OK status although actual
- transfer failed. From Juha Niskanen.
- - drivers/audio/wm8904: WM8904 has same problem as that fixed by Juha
- Niskanen in the MaxTouch driver.
- - UART 16550: Missing left parenthesis in function prototype. This is
- Bitbucket Issue #41.
- - USBMSC: Fix a wrong lun number issue. From Masayuki Ishikawa.
- - drivers/i2c: Fix compile issues if CONFIG_DISABLE_PSEUDOFS_OPERATIONS
- is enabled.
- - drivers/serial: I discovered a problem in the file
- drivers/serial/serial.c concerning the function uart_close(…). In the
- case that a serial device is opened with the flag O_NONBLOCK the
- function uart_close(…) blocks until all data in the buffer is
- transmitted. The function close(…) called on an handle opened with
- O_NONBLOCK should not block. The problem occurred with a CDC/ACM
- device. From Stefan Kolb.
- - drivers: Fix some bad NULL checks. From Juha Niskanen.
- - drivers: Rename newly introduced up_i2creset to I2C_RESET. From
- Juha Niskanen.
- - drivers/bch: BCH character driver bch_ioctl() always returns -ENOTTY
- for DIOC_GETPRIV command. It should returns OK if DIOC_GETPRIV
- command succeeds. From EunBong Song.
- - Replace sprintf() with snprintf() in pipe.c. From Nobutaka Toyoshima.
- - drivers/bch: Fix 'Missing Unlock' in bchdev_driver.c. From Masayuki
- Ishikawa.
- - button_upper: Fix interrupt enabling for poll-events. From Jussi
- Kivilinna.
- - drivers/{sensors,usbmisc}: Fix uninitialized I2C frequency. From
- Juha Niskanen.
- * ARM:
- - Set EABI stack alignment for all ARM architectures (remove OABI
- code). From David Cabecinhas.
- - Remove redundant interrupt stack coloring and OABI code. From David
- Cabecinhas.
- - Fix off-by-one interrupt stack allocation in 8-byte aligned
- architectures. From David Cabecinhas.
- * ARMv6-M:
- - CONFIG_DEBUG_HARDFAULT should be available for Cortex-M0 too.
- * Microchip/Atmel SAM3/4 Drivers:
- - SAM3/4: Fixed configurations for TWI master. Obviously an
- incomplete port from SAMA5.
- * Microchip/Atmel SAMv7 Drivers:
- - SAMV7: Watchdog: Fix Forbidden Window Value. According the Datasheet
- the WDD Value is the lower bound of a so called Forbidden Window and
- to disable this we have to set the WDD Value greater than or equal to
- the WDV Value. This seems to be a bug in the datasheet. It looks
- like we have to set it to a greater value than the WDV to really
- disable this Thing. When triggering the Watchdog faster than the
- (very slow) clock source of the Watchdog fires, this Forbidden Window
- Feature resets the System if WDD equals to WDV. This Changeset
- disables the Forbidden Window by setting the WDD Value to the Maximum
- (0xfff) Value possible. From Frank Benkert.
- - SAMV7 EMAC: Add conditional logic to account the fact that the
- SAMV71 has 6 rather than 3 queues after version 1. From Ian McAfee.
- * NXP/Freescale Kinetis Drivers:
- - Kinetis: Fixed GPIO _PIN_OUTPUT_LOWDRIVE swapped with
- _PIN_OUTPUT_OPENDRAIN. From David Sidrane.
- - Ensure interrupts are back on BEFORE running code dependant on
- clock_systimer. From David Sidrane.
- - Kinetis k66, k64, k60, k40, k20: Pin mux configure all I2C signals as
- Open Drain. The output structure of the GPIO for I2C needs to be
- open drain. When left at the default, one can observe on a scope the
- slave contending with the push-pull during the ACK. From David
- Sidrane.
- - Kinetis K66: Fixed TMP2_CH1 definition. From David Sidrane.
- - Kinetis K66: Define ALT1 to match ref manual. From David Sidrane.
- - Kinetis K66: GPIO and pin mux cleanup. From David Sidrane.
- - Kinetis ADC: Various corrections and updates. From David Sidrane.
- * NXP/Freescale LPC43xx:
- - Add missing PINCONF_INBUFFER in several places of
- lpc4310203050_pinconfig.h. From Andreas Bihlmaier.
- - Fix logic in preprocessor checks and correct arguments to
- lpc43_pin_config initialization. From Andreas Bihlmaier.
- * NXP/Freescale LPC43xx Drivers:
- - Fix logic error in lpc43_adc. From Andreas Bihlmaier.
- - Use correct macro for irqid (fortunately both point to
- LPC43_IRQ_EXTINT+18). From Andreas Bihlmaier.
- - Actually write modified value to register. From Andreas Bihlmaier.
- - Increase number of supported PWM channels from 4 to 6. From Andreas
- Bihlmaier.
- * Silicon Labs EFM32 Drivers:
- - EFM32 I2C: Fix timeout calculation. From Masayuki Ishikawa.
- * STMicro STM32:
- - As discovered by dcabecinhas. This fix assume the 8 byte alignment
- options for size stack size or this will overwrite the first word
- after TOS. See
- https://github.com/PX4/Firmware/issues/6613#issuecomment-285869778.
- From David Sidrane.
- - STM32 F7: In stm32_allocateheap.c There are 5 not 4 configurations.
- From David Sidrane.
- * STMicro STM32 Drivers:
- - STM32, STM32 F7, STM32 L4: OTG host drivers: Do not do data toggle
- if interrupt transfer is NAKed. Sugested by webbbn@gmail.com.
- - Save elapsed time before handling I2C in stm32_i2c_sem_waitstop().
- This change follows the same logic as in previous fix to
- stm32_i2c_sem_waitdone(). It is possible that a context switch
- occurs after I2C registers are read but before elapsed time is saved
- in stm32_i2c_sem_waitstop(). It is then possible that the registers
- were read only once with "elapsed time" equal 0. When scheduler
- resumes this thread it is quite possible that now "elapsed time" will
- be well above timeout threshold. In that case the function returns
- and reports a timeout, even though the registers were not read
- "recently". Fix this by inverting the order of operations in the loop
- - save elapsed time before reading registers. This way a context
- switch anywhere in the loop will not cause an erroneous "timeout"
- error. From Freddie Chopin.
- - STM32, STM32 F7, and STM32 L4: Clone Freddie Chopin's I2C change to
- similar STM32 I2C drivers. From David Sidrane.
- - STM32: OTG host implementations of stm32_in_transfer() must obey the
- polling interval for the case of isochronous and interrupt endpoints.
- - STM32: Fix erase sector number for microcontrolers with more than 11
- sectors. Erase a sector from the second bank cause the bit 4 of SNB
- being set but never unsed, so trying to erase a sector from the first
- bank was acually eraseing a sector from the second bank. From José
- Roberto de Souza.
- - STM32: Make up_progmem thread safe. Writing to a flash sector while
- starting the erase of other sector have a undefined behavior so lets
- add a semaphore and syncronize access to Flash registers. But for
- the semaphore to work it needs to be initialized so each board needs
- call stm32_flash_initialize() on initialization, so to avoid runtime
- problems it is only using semaphore and making it thread safe if
- initialized, after all boards starts to call stm32_flash_initialize()
- we can remove the boolean and the check. From José Roberto de Souza.
- - STM32: Add workaround for flash data cache corruption on
- read-while-write. This is a known hardware issue on some STM32 see
- the errata of your model and if you make use of both memory banks you
- should enable it. From José Roberto de Souza.
- - STM32 Flash fixes. From José Roberto de Souza.
- - STM32 Flash: Missing unlock on F1 HSI off path. From David Sidrane.
- - STM32 F4 I2C: I needed to use DS3231, I remember that in past it
- worked ok, but now for stm32f4xx is used another driver (chip
- specific, stm32f40xxx_i2c.c) and DS3231 driver doesn't work. After
- investigating a problem I found that I2C driver (isr routine) has a
- few places there it sends stop bit even if not all messages are
- managed. So, e.g., removing stm32_i2c_sendstop (#1744) and adding
- stm32_i2c_sendstart after data reading helps to make DS3231 working.
- From Alexander Oryshchenko; verified by David Sidrane.
- - STM32 F7 Serial: Serial fix for dropped data: (1) Revert the
- inherited dma bug from the stm32. see
- https://bitbucket.org/nuttx/nuttx/commits/df9ae3c13fc2fff2c21ebdb098c520b11f43280d
- for details. And (2) Most all CR1-CR3 settings can not be configured
- while UE is true. Threfore we make all operation atomic and disable
- UE and restore it's originalstate on exit. From David Sidrane.
- - STM32 L1: Fix IWDG and WWDG debug mode stop for STM32L15XX. From
- Juha Niskanen.
- - STM32 F7: Fix UART7 and UART8 IFLOWCONTROL options. From Jussi
- Kivilinna.
- - STM32 F7: Add warning for RXDMA + IFLOWCONTROL combination.
- Combination of RXDMA + IFLOWCONTROL does not work as one might
- expect. Since RXDMA uses circular DMA-buffer, DMA will always keep
- reading new data from USART peripheral even if DMA buffer underruns.
- Thus this combination only does following: RTS is asserted on USART
- setup and deasserted on shutdown and does not perform actual RTS
- flow-control. Data loss can be demonstrated by doing long up_mdelay
- inside irq critical section and feeding data to RXDMA+IFLOWCONTROL
- UART. From Jussi Kivilinna.
- - STM32 F7 Serial: Do not stop processing input in SW flow-control
- mode. From Jussi Kivilinna.
- - STM32 L4 DMA: Correct bad channel definition. From Sebastien Lorquet.
- - STM32 F7: Warn if no DMA2 configured when using ADC with DMA. Also
- correct ADC channel numbers that DMA callback passes to upper half
- driver. From Juha Niskanen.
- - STM32 F7 ADC: Do not override ADCPRE_DIV when measuring
- internal voltage. From Juha Niskanen.
- - STM32 L4: Don't think these chips have DPFPU, DTCM or ITCM. From
- Juha Niskanen.
- - STM32 F7 Flash: macro naming errors, there is no FLASH_CONFIG_F for
- F7. From Juha Niskanen.
- - STM32 L4: stm32l4x6xx_pinmap: Update I2C4 and DCMI pins. From Juha
- Niskanen.
- - STM32 L4: stm32l4_i2c: change wrong macro to CONFIG_I2C_POLLED. From
- Juha Niskanen.
- - Fix STM32F7 I2C interrupt handler. From Jussi Kivilinna.
- - STM32: Serial Allow configuring Rx DMA buffer size. From David
- Sidrane.
- - STM32 CAN: I had the problem that the transmit FIFO size (= actual
- elements in FIFO) was slowly increasing over time, and was full after
- a few hours. The reason was that the code hit the line
- "canerr("ERROR: No available mailbox\n");" in stm32_cansend, so
- can_xmit thinks it has sent the packet to the hardware, but actually
- has not. Therefore the transmit interrupt never happens which would
- call can_txdone, and so the size of the FIFO size does not decrease.
- The reason why the code actually hit the mentioned line above, is
- because stm32can_txready uses a different (incomplete) condition than
- stm32can_send to determine if the mailbox can be used for sending,
- and thus can_xmit forwards the packet to stm32can_send.
- stm32can_txready considered mailboxes OK for sending if the mailbox
- was empty, but did not consider that mailboxes may not yet be used if
- the request completed bit is set - stm32can_txinterrupt has to
- process these mailboxes first. Note that I have also modified
- stm32can_txinterrupt - I removed the if condition, because the CAN
- controller retries to send the packet until it succeeds. Also if the
- condition would not evaluate to true, can_txdone would not be called
- and the FIFO size would not decrease also. From Lederhilger Martin.
- - STM32 Serial: Fix freezing serial port. Serial interrupt
- enable/disable functions do not disable interrupts and can freeze
- device when serial interrupt is received while execution is at those
- functions. Trivially triggered with two or more threads write to
- regular syslog stream and to emergency stream. In this case, freeze
- happens because of mismatch of priv->ie (TXEIE == 0) and actually
- enabled interrupts in USART registers (TXEIE == 1), which leads to
- unhandled TXE interrupt and causes interrupt storm for USART. From
- Jussi Kivilinna.
- - STM32 I2C: Make private symbols static. From Juha Niskanen.
- - STM32 L4 GPIO: Put back EXTI line source selection. From Juha
- Niskanen.
- - STM32 L4 RTC: Store RTC MAGIC to backup reg, not to address zero.
- From Juha Niskanen.
- * STMicro STM32 Boards:
- - Disable serial console on stm32f103-minimum usbnsh example project
- config. Devices enumerate after this change. From Bob Ryan.
- - Nucleo-144: Default for choice in Kconfig was not one of the
- possible choices.
- - Nucleo-F4X1RE User LEDS: Issue #51 reports compilation problems with
- stm32_userled.c. Reported by Gappi92.
- * TI Tiva Drivers:
- - Tiva I2C: Correct an error in conditional compilation.
- - Tiva SSI: Resolves issue 52 'Copy-Paste error in
- tiva_ssibus_initialize()' submitted by Aleksandr Kazantsev.
- * C Library/Header Files:
- - C Library vsnprintf(): Fix precision for string formatting. Fixes
- use of format precision to truncate input string. From Jussi
- Kivilinna.
- - C Library vsnprintf(): If size is zero, then vsnprintf() should
- return the size of the required buffer without writing anything.
- From Jussi Kivilinna.
- - C Library netdb: in dns_query_callback, ret != -EADDRNOTAVAIL
- condition consumes error returns including EAGAIN in this case,
- dns query retransmission doesn't work. From Ritajina.
- - C Library netdb: Fix time info in lib_dnscache.c. From Masayuki
- Ishikawa.
- - C Library netdb: Fix bugs in lib_gethostbynamer.c. This fix sets
- h_name in struct hostent returned by gethostbyname(). From Masayuki
- Ishikawa.
- - C Library Defect Workaround: replace '%6.6u' format with an
- equivalent '%06u'. From Tomasz Wozniak.
- * Tools
- - Fix mksyscall host binary name. From Alan Carvalho de Assis.
- * Applications (apps/)
- - Fix some calls to task_create(): argv[0] is the first parameter, not
- the name of the task.
- - Bitbucket Issue 5: I found an unexpected behavior in apps/
- configuration generation. Adding external symbolic link in apps/
- directory and using Make.defs for Kconfig generation, Kconfig file
- has a wrong path in the source argument. It contains original dir
- path outside of the source tree instead path to sub-directory in
- apps/. The problem is connected with make/system symbolic link path
- resolution. Corrected by a patch submitted by Artur Madrzak with
- Issue 5.
- - apps/: Make more globals static to avoid name clashes. From Juha
- Niskanen.
- * NSH: apps/nshlib:
- - NSH library: In nsh_argexand(), if CONFIG_NSH_ARGCAT is defined but
- CONFIG_NSH_CMDPARMS defined and/or CONFIG_DISABLE_ENVIRON not
- defined, then there is a situation that causes an infinite loop in
- the parser. Noted by Freddie Chopin.
- - NSH library: Fix building when CONFIG_NET_USRSOCK enabled with other
- link-layers. From Jussi Kivilinna.
- - NSH library: Fix some warnings about integer/pointer casts of
- different sizes (probably only effects 64-bit simulation).
- - NSH library: Fix open flags in nsh_codeccmd.c. From Masayuki
- Ishikawa.
- - I need to look at the registers that are at or around 0xe000ef90.
- Using mw and xd, I see that nsh does not support pointers greater
- than 0x7fffffff. A quick look at the source shows that the pointers
- for those two commands are set with calls to strtol() rather than
- strtoul(). Changing the two pointer-setting instances to strtoul()
- fixes the problem, at least for my architecture/config. From Ian
- McAfee.
- - NSH library: Fix a resource leak in cmd_hexdump(). From Nobutaka
- Toyoshima.
- * Examples/Tests: apps/examples:
- - apps/examples/hidkbd: Remove call to arch_usbhost_initialize().
- That is violation of the OS interfacing rules and will no longer be
- supported. USB host should be initialized as part of the normal
- board bring-up logic as with any other devices and should not involve
- illegal calls from applications into the OS.
- - apps/examples/usbterm: Removed because it is not very useful and
- because it can be configured to use an illegal call into the OS.
- - examples/mm: Fix Makefile. Built-in was not being registered.
- - examples/hidkbd: Add some missing configuration settings.
- - examples/random: Avoid stack overflows. From Juha Niskanen.
- - examples/nettest: Fix an error in pre-processor expression.
- - examples/mtdpart: Prevent part array overflow. mtdpart examples
- create partions and allocate from 1 index not a 0 index to part[]
- array. This cause buffer overflow for part array. This change fixes
- this problem. From EunBong Song.
- - examples/can: Fix can example app to print data when
- CONFIG_EXAMPLES_CAN_READ is defined. From Alan Carvalho de Assis.
- * Network Utilities: apps/netutils:
- - Not a clean fix, but at least makes DHCP working with
- CONFIG_NETDEV_MULTINIC. From Andreas Bihlmaier.
- - Ensure netlib will not be broken when setip will not bring the
- network up anymore. From Sebastien Lorquet.
- * CAN Utilities: apps/canutils:
- - Fix libcanard github download link to get it compiling correctly.
- From Alan Carvalho de Assis.
- - Fix to use the new canardInit() function. From Alan Carvalho de
- Assis.
- * System Utilities (apps/system)
- - system/dhcpc: Add missing argument of fprintf.
- * Tools (apps/tools):
- - The dedicated windows tool at tools/mkkconfig.bat uses $APPSDIR,
- which is not a windows shell variable, and is left uninitialized, but
- in fact should be the current directory. From Sebastien Lorquet.
- NuttX-7.22 Release Notes
- ------------------------
- The 122nd release of NuttX, Version 7.22, was made on September 9, 2017,
- and is available for download from the Bitbucket.org website. Note
- that release consists of two tarballs: nuttx-7.22.tar.gz and
- apps-7.22.tar.gz. These are available from:
- https://bitbucket.org/nuttx/nuttx/downloads
- https://bitbucket.org/nuttx/apps/downloads
- Both may be needed (see the top-level nuttx/README.txt file for build
- information).
- Additional new features and extended functionality:
- * Core OS:
- - pthreads: Move functions from sched/pthreads to libc/pthreads. These
- functions just coordinate other OS interface calls but are not a
- fundamental OS interfaces and, hence, do not belong within the OS:
- pthread_yield(), pthread_once(), pthread_cond_init(),
- pthread_cond_destroy(), pthread_barrier_init(),
- pthread_barrier_destroy(), and pthread_barrier_wait().
- - Add power-related debug output.
- * File Systems/Block and MTD Drivers
- - RAMTRON: Add support for splitting block writes in chunks. Some
- Re-RAMs like MB85AS4MT have a write buffer size limitation. From
- Boris Astardzhiev.
- - MTD: Add driver for Macronix QuadSPI flash memory. From Simon Piriou.
- * Graphics/Display Drivers:
- - SSD1306 LCD Driver: (1) Separate lcd_dev_s setup to separate object.
- g_oleddev takes 1 KiB because framebuffer and was allocated to .data
- section because of lcd_dev_s function pointer setup. Move lcd_dev_s
- setup out, so that g_oleddev goes to .bss and avoid wasting ROM. (2)
- Fix memory corruption caused by ssd1306_getrun(). ssd1306_getrun was
- writing one extra byte (with value 0) past target buffer when pixlen
- is multiple of 8. When pixlen was not multiple of 8, last byte of
- buffer was fully cleared, instead of modifying only the (pixlen % 8)
- bits of last byte. (3) Add support for board power control.
- ThingseeOne has regulator for controlling display power on/off. Patch
- adds support for board based power control to SSD1306 driver. (4) Add
- DD-12864WO-4A/SSD1309 support to SSD1306 driver. From Jussi Kivilinna.
- * Networking/Network Drivers:
- - Sockets: Support listening sockets in the getsockname() function.
- From Roland Takacs.
- - IP Forwading: At the IP level, network may be configured to forward
- IP packets that are not destined for the target through a different
- network device, decrementing the packet TTL.
- - IP forwarding: Add optional support to forward broadcast and
- multicast packets. Add missing ICMP support.
- - ICMPv6: Add 6LoWPAN and IP forwarding support.
- - ICMPv6: Support source link-layer address option in RA. From
- Masayuki Ishikawa.
- - TUN Driver: Add definitions that will permit TUN-only networking.
- - Socket I/F: Created a socket interface used to provide socket support.
- Each address family has an interface that describes how to perform
- socket operations on that address family. Currently only a couple of
- methods are defined in the socket interface call table
- - Remove CONFIG_NET_MULTILINK. This increases code size by a little,
- but greatly reduces the complexity of the network code.
- - Network procfs: Add support for routing tables at proc/net/route.
- - Network procfs: Add support for network procfs statistics for the
- PF_IEEE802154 address family.
- - Network Driver Backlog: Remove driver based backlog support. This
- affects the entire network, but is used by only one driver. The only
- supported RX backlog is now via common read-ahead buffering.
- * Wireless Networking/Wireless Drivers:
- - IEEE 802.15.4 MAC / MRF24J60 Driver: Extensive updates for
- association/beacon-enabled networks. From Anthony Merlino.
- - IEEE 802.15.4 MAC / MRF24J60 Driver: Hook in setdevmode from newly
- added radio attribute setting. From Anthony Merlino.
- - IEEE 802.15.4 MAC: Supports get request for coordinator address. From
- Anthony Merlino.
- - IEEE 802.15.4 MAC: Notify radio layer of changes in devmode. From
- Anthony Merlino.
- - IEEE 802.15.4: Add special attribute that can be used to perform a
- regdump of the radio. From Anthony Merlino.
- - IEEE 802.15.4 loopback driver: Better simulation addressing: short
- and extended addresses, panid, and IP address conversion.
- - IEEE 802.15.4 Network Driver: Add logic to setup the network mask,
- update the MAC-based IPv6 addressing when the network is brought up.
- The idea is that addressing changes are supposed to occur only while
- the network is down but won't take effect until the network is up
- again.
- - PktRadio: Add an infrastructure to support networking on generic
- (non-IEEE 802.15.4) packet radios.
- - PktRadio Loopback Driver: Add a PktRadio loopback network driver to
- testing testing with 6LoWPAN and PktRadios on the simulator.
- - Spirit Network Driver: The Spirit1 radio (SPSGRF-915) is the first
- generic PktRadio Network driver. Based on STMicros STack packets
- with 8-bit addressing. We need to use the STack packets in order to
- provide the source address and automatic ACKing.
- - Network procfs: Fix so that PktRadio address are shown correctly.
- - Networking: Add support for some packet radio IOCTL commands.
- - 6LoWPAN: Added handling for TCP and ICMPv6 packets.
- - 6LoWPAN: Add configurable support for 6LoWPAN star topology. With
- this change, the endpoints which are the 'points' of the star will
- forward all traffic to the coordinator. The coordinator is assumed to
- be the 'hub' of the star. This function also used IPv6 forwarding.
- - 6LoWPAN: The original, Contiki-based design used only a single buffer
- for reassemblying larger packets. This could be a problem issue for
- hub configurations which really need the capability concurrently
- reassemble multiple incoming streams concurrently. These was also a
- design issue in that the reassembly buffer could be corrupted by
- outgoing packets. The design was extended to support multiple
- reassembly buffers, each associated with the reassembly tag and source
- address. This assures that there can be be no corruption of the
- reassembly once it has started.
- - 6LoWPAN PktRadio: Now radio agnostic. All IEEE 802.15.4 dependencies
- have been removed or isolated so that 6LoWPAN can be used with any
- kind of packet radio. This involved things like: (1) generalizing
- the representation of radio MAC meta-data, (2) changes to handle
- variable-length radio addresses, (3) removal of all explicit IEEE
- 802.15.4 types, references, and interfaces, (4) a new radio driver
- interface to return 'capabilities' of the drvier.
- - ICMPv6: Update so that ICMPv6 can be used with 6LoWPAN.
- - IPv6 Neighbor: Update table format to support IEEE 802.15.4 MAC
- addresses.
- - PF_IEEE802154 Address Family: Add support for the PF_IEEE802154
- address family socket type. This socket is similar to the PF_PACKET,
- "raw" packet address family except that: (1) it supports only
- SOCK_DRAM, not SOCK_RAW, and (2) works only with IEEE 802.15.4
- MAC-based radios. This address family permits simple access to IEEE
- 802.15.4 IOCTLs and frame-level network transfers.
- * Other Common Device Drivers:
- - Dynamically configurable USB composite devices: We developed a huge
- Changeset over a year ago to make USB Composite configuration
- dynamical and be able to instantiate the CDC/ACM multiple times inside
- this device. We use this feature to switch between one in typical USB MSC + CDC/ACM configuration and up to three CDCACMs dynamically.
- I've changed the interface for some USB-Functions to receive also the
- dynamic configuration. From Frank Benkert.
- - Franks' change remained on a branch until all issues were resolved.
- the current version in Master is complete and ready for use.
- - power: battery_charger: Add ioctl for charging input current. From
- Juha Niskanen.
- - SMPS driver: Add generic upper-half driver for SMPS. From Mateusz
- Szafoni.
- - LED Driver: Add support for inverted LEDS. From Jeff.
- - LED Driver: Add lightness correction for RGB LED driver. From Jeff.
- - LTC4151 Driver: Add driver for LTC4151 current and voltage monitor.
- From Giorgio Groß.
- - Serial TERMIOS: tcdrain() implementation based on a new term ioctl.
- From Sebastien Lorquet.
- - Serial TERMIOS: Add support for TCFLUSH. From Sebastien Lorquet.
- - syslog: Add option to use the CLOCK_MONOTONIC for time stamping. From
- Jussi Kivilinna.
- - HC-SR04 Driver: Add support to HC-SR04 distance sensor. From Alan
- Carvalho de Assis.
- - COMP Driver: Add poll support. From Pekka Ervasti.
- - BQ2429X Driver: Add driver for TI BQ2429X battery charger. From Juha
- Niskanen.
- - ADC Driver: Add poll support. From Juha Niskanen.
- - BCH Driver: Add poll support. From Jussi Kivilinna.
- - RTC Driver: Extend the RTC framework with an alarm read ioctl
- (RTC_RD_ALARM). Through it consumer could get configuration settings
- about previously scheduled hardware alarms (active status, hours,
- minutes, seconds). From Boris Astardzhiev.
- * Simulation
- - sim/ipforward: Add an IP forwarding configuration using TUN devices
- and apps/examples/tun.
- - Console: Add non blocking read to devconsole driver. From Simon
- Piriou.
- - Networking: Poll for TX frames to speed up driver. From Simon Piriou.
- - pf_ieee802154: Add configuration for testing PF_IEEE802154 address
- family sockets.
- - ARM Simulator: Adds necessary functionality to build Simulator under
- ARM Linux. Tested only on Raspberry3. Currently setjmp/longjmp do not
- save/restore floating point registers. From Nickolay Semyonov.
- * MicroChip/Atmel SAML21 Drivers:
- - SAML21 I2C driver. Developed for and contributed with permissin from
- Filament company. From Alan Carvalho de Assis.
- - SAMD/L21 USB Driver: Add a USB driver. Developed for Filament Inc.
- by Offcode, LTD. From Janne Rosberg.
- * MicroChip/Atmel SAMv7 Boards:
- - SAMV71-XULT: Add support for the MRF24J40 radio and create a
- mrf24j40-starhub configuration.
- - SAME70-Xplained: Add MRF24J40 support.
- * NXP Freescale Kinetis Drivers:
- - Kinetis USB Improvements: usbdev clean up ensuring proper use of HW.
- Rework suspend and resume logic so they perform properly. Made attach
- and detach functions optional. As they do not make sense for a bus
- powered device. From David Sidrane.
- - Kinetis SPI driver: From David Sidrane.
- - Kinetis: I2C driver added I2C3, reference counting and reset.
- Refactored the driver to support reference counting and reset added
- I2C3. From David Sidrane.
- - Kinetis RTC: Implementation of the alarm read function.
- * NXP Freescale Kinetis Boards:
- - configs/teensy-3.x USB: Define USBOTG-FS Read from FLASH access in
- board config. Allow the board config to define the USBOTG-FS to have
- Read access to FLASH. From David Sidrane.
- - configs/teensy-3.x: Removed call to khci_usbattach. The call is not
- need by the driver if CONFIG_USBDEV_BUSPOWERED=y. On a USB powered device if we are running we are attached. From David Sidrane.
- - freedom-k66f: Use SPI driver. Initalize SPI1 on connector J6. No
- real use, as of yet. From David Sidrane.
- * NXP Freescale LPC43xx:
- - LPC43xx: Modify up_allocate_(k)heap() to support PROTECTED mode. From
- Alan Carvalho de Assis.
- * NXP Freescale LPC4xx Boards:
- - configs/Bambino: Add protected mode configuration to Bambino board.
- From Alan Carvalho de Assis.
- * On Semiconductor LC823450
- - LC823450: Initial support for ON Semiconductor LC823450. From Masayuki
- Ishikawa.
- - LC823450: eMMC/SD and USB support for LC823450. From Masayuki Ishikawa.
- * On Semiconductor LC823450 Boards
- - LC823450-XGEVK: LC823450-XGEVK board support. From Masayuki
- Ishikawa.
- - LC823450-XGEVK: Add eMMC/SD and USB support. From Masayuki Ishikawa.
- * STMicro STM32:
- - STM32 L4: Add support for the STM32L475 family.
- - STM32 L4 RCC: Enable ADC clock source. From Juha Niskanen.
- - STM32: Allow clock frequencies > 168 Mhz on stm32f427/429. We need
- to enable the power overdrive for this case. This change allows the
- required bits to be set in proper sequence. It also modifies the
- local register access operations to allow more than 16-bit registers.
- From Sebastien Lorquet .
- - STM32 F4: Add support for STM32F433RC. From Alan Carvalho de Assis.
- - STM32 F7: Add new configuration option for enabling flash ART
- Accelerator and flash prefetcher. From Jussi Kivilinna.
- * STMicro STM32 Drivers:
- - STM32 TIM: Add the set counter function for stm32 timers. From
- Sergey Ustinov.
- - STM32 HRTIM: Update HRTIM definitions. Add HRTIM driver. From
- Mateusz Szafoni.
- - STM32 HRTIM: Add HRTIM character driver. From Mateusz Szafoni.
- - STM32 HRTIM: Fix DAC triggers configuration, Add missing master timer
- logic, enable DAC triggering. From Mateusz Szafoni.
- - STM32 HRTIM: Add DMA configuration. From Mateusz Szafoni.
- - STM32 HRTIM: Add burst mode configuration. From Mateusz Szafoni.
- - STM32 RTC: Port Boris Astardzhiev's RTC change for STM32L4 to STM32.
- - STM32 DAC: Add support for HRTIM triggering. Separate dma buffer
- configuration for channels. From Mateusz Szafoni.
- - STM32 DAC: Conditional logic for timer triggering, fix TSEL
- configuration when HRTIM, DMA request remapping, Add DMA buffers
- initialization logic. From Mateusz Szafoni.
- - STM32 DAC: Support external triggering for DMA transfer. From Mateusz
- Szafoni.
- - STM32 L1 TIM: Add base address for TIM11. From Juha Niskanen.
- - STM32 F4 FLASH: Enable/disable the flash write protection on any
- sector. I have verified it to work on the STM32 F427. From Sebastien
- Lorquet.
- - STM32 F4 Clocking: To use an external oscillator module (not just a
- crystal) with the STM32F4, one needs to enable the HSEBYP bit in the
- RCC_CR register. This change allows an integrator to define
- STM32_RCC_CR_HSEBYP in their board.h file if they want this
- configuration. From Jeff.
- - STM32 F4 USB: I'm working on bringing up USB full-speed support on
- STM32F405. My board does not include a USB power switch, VBus
- sensing, over current detection, or ID pin. This commit add a
- config STM32_OTGFS_VBUS_ CONTROL which lets us selectively disable
- VBus sensing and control. I also sneaked in a change to disable the
- configgpio call for the ID pin, which is only used in OTG mode which
- isn't supported yet. The only pins that need to be initialized should
- be OTGFS_DP and OTGFS_DM. From Jeff.
- - STM32 FLASH: Add CONFIG_STM32_STM32F469 support. From David Sidrane.
- - STM32 COMP: Add default INM configuration and some missing COMP
- 1,3,5,7 code. From Mateusz Szafoni.
- - STM32 F33: Add missing SYSCFG CFGR3 definitions. From Mateusz Szafoni.
- - STM32 L4 Serial: Allow configuring Rx DMA buffer size. From Juha
- Niskanen.
- - STM32 L4 COMP: Input minus pin extended selection. From Juha Niskanen.
- - STM32 L4 COMP: Bind to upper half comp driver. From Pekka Ervasti.
- - STM32 L4 DAC: Port from STM32. Add ADC register definitions. From
- Juha Niskanen.
- - STM32 L4 DAC: Add option for routing DAC output to ADC. Actually
- write something to the DAC DMA buffer. From Juha Niskanen.
- - STM32 L4 DAC: Separate DMA buffer configuration for channels. From
- Juha Niskanen.
- - STM32 L4 ADC: Implement peripheral. From Juha Niskanen.
- - STM32 F7: Definitions for I2C4, SDMMC2. Adapted RAM start / size to
- internal SRAM. From Titus von Boxberg.
- - STM32 F7 I2C4: I2C4_SDA can also be on GPIO PB7. From Titus von
- Boxberg.
- - STM32 F7 LTDC: Option for DSI output, inconsistency: the stm32f746
- does not feature a DSI interface. compilable with LTDC_INTERFACE and
- LTDC_USE_DSI. From Titus von Boxberg.
- - STM32 F7 Clocking: Added functions for DSI clock source selection.
- From Titus von Boxberg.
- - STM32 F7 Clocking: Enable APB2 DSI clock. From Titus von Boxberg.
- - STM32 F7 LTDC: No board specific dithering values used; corrected
- dithering init. Corrected LIPOS/LIPCR calculation. Change only
- polarity bits in LTDC_GCR. From Titus von Boxberg.
- - STM32 F7 Reset: Added function for reset. From Titus von Boxberg.
- - STM32 F7 DMA: DMA add dcache alignment check in stm32_dmacapable. In
- the case dcache write-buffed mode is used (not write-through) buffer
- alignment is required for DMA transfers because a)
- arch_invalidate_dcache could lose buffered writes data and b)
- arch_flush_dcache could corrupt adjacent memory if the maddr and the
- mend+1, the next next address are not on ARMV7M_DCACHE_LINESIZE
- boundaries. From David Sidrane.
- - STM32 F7 SDMMC: SDMMC remove widebus limitation on DMA. There is no
- documantation for the STM32F7 that limits DMA on 1 bit vrs 4 bit
- mode. From David Sidrane.
- - STM32 F7 SDMMC: SDMMC add dcache alignment check in
- dma{recv|send}setup. In the case where CONFIG_SDIO_PREFLIGHT is not
- used.
- - STM32 F7 RTC: Port Boris Astardzhiev's RTC change for STM32L4 to
- STM32F7.
- * STMicro STM32 Boards:
- - STM32F103-Minimum: Add GPIO device driver example. From Alan
- Carvalho de Assis.
- - STM32F103-Minimum: Add small hello example for STM32F103-Minimum
- board. From Alan Carvalho de Assis.
- - STM32F103-Minimum: Add support for SmartFS on Winbond W25 SPI NOR
- Flash. From Alan Carvalho de Assis.
- - STM32F103-Minimum: (1) Enable CONFIG_MTD_PARTITION in Kconfig if flash
- partition is enabled and (2) Update the README.txt file with info
- needed to get SmartFS working. From Alan Carvalho de Assis.
- - Nucleo-F334R8: Add HRTIM initialization. From Mateusz Szafoni.
- - Nucleo-F334R8: UART2 is default serial port (STLINK Virtual Port).
- From Mateusz Szafoni.
- - Clicker2-STM32: Add a configuration that was used with the MRF24J60
- for 6loWPAN testing.
- - Clicker2-STM32: Allow both IEEE 802.15.4 MAC character and network
- devices to be registered.
- - Clicker2-STM32: Add configurations to support the endpoint and hub
- roles in a star topology.
- - Clicker2-STM32: Add support for per-function-call stack checking.
- From Anthony Merlino.
- - Clicker2-STM32: Configure EDBG SPI CS just to make that it is
- disabled.
- - STM32F4 Discovery: Add logic to register the button driver and the
- user led driver if so configured. From Jan Pobrislo.
- - STM32F4-Discovery: Add a configuration for testing libc++. From Alan
- Carvalho de Assis.
- - B-L475E-IOT01A: Add support for the STMicro B-L475E-IOT01A board.
- From Simon Piriou.
- - B-L475E-IOT01A: Add support for the SPSRGF/Spirit1 radio module. Add
- a configuration for testing sprit radio.
- - B-L475E-IOT01A: Add configurations to support a star topology.
- - B-L475E-IOT01A: Add basic support for external Macronix QuadSPI flash
- memory. From Simon Piriou.
- - B-L475E-IOT01A: Enable UDP broadcast test in the spirit-starhub
- configuration.
- - STM32F334-DISCO: Add STM32F334-DISCO basic support. From Mateusz
- Szafoni.
- - STM32F746-Disco: Add ADC3 support. From Ivan Ucherdzhiev.
- - STM32L476-Disco: Add a knsh configuration that may be used to test
- the PROTECTED build mode.
- - STM32F769I-DISCO: Initial port to STM32F769I-DISCO. From Titus von
- Boxberg.
- * C Library/Header Files:
- - Move TUN ioctl command to include/nuttx/net/ioctl.h so that it will
- always be unique.
- - Math Library: Port gamma() and lgamma() from FreeBSD to NuttX. From
- Alan Carvalho de Assis.
- - C++: Compilation with recent C++ compiler needs an overloaded delete
- operator that includes a size_t size argument. New sized delete
- operators are only for C++14 and above.
- * Build/Configuration System:
- - Initial clang compile. From Goran Mekic.
- - Add CLANG definitions in Kconfig and Toolchain.defs.
- - drivers/wireless/ieee802154: Moved radios to individual
- sub-directories. From Anthony Merlino.
- - Makefile.unix: Add savedefconfig target. From Gwenhael Goavec-Merou.
- - Add Gwenhael's change to Makefile.win and update README.txt to
- described the new make target.
- - All defconfig files are now in the compressed format created with
- 'make savedefconfig.' The original .config file can be reconstituted
- using 'make olddefconfig.'
- - Build System: It is no longer necessary to have a unique Make.defs
- file for each configuration. A board may share a common Make.defs
- file in the scripts directory. Duplicate Make.defs files removed;
- common Make.defs file moved to the scripts/ sub-directory for each
- board.
- - Networking: Move INET socket interface out of net/sockets to its own
- directory net/inet.
- * Tools:
- - testbuild.sh: Added -x to fail build on errors for continous
- integration (CI). On CI we want to know ASAP of a failure. From
- David Sidrane.
- - Improve configure.sh behavior: (1) enable to call from top directory.
- (2) enable to designate direct path for config. (3) install .gdbinit
- if the target has. From Hidetaka Takano.
- - Update tools/configure.c to same functionality as configure.sh. Add
- an array of optional file names. Currently, .gdbinit is the only
- optional file but other things like IDE-specific project files might
- need to be copied as well.
- - tools/configure.sh will now copy Eclipse project files if they are
- present in the board directory file.
- - Update configure.sh, configure.bat, configure.c: With compressed
- format, part of the installation requires that we run 'make
- olddefconfig' to restore the uncompressed defconfig format. Also,
- while I was at it, I also added options to select host platform on
- configure command line.
- - tools/refresh.sh: Now runs make savedefconfig before copying the new
- defconfig file in place; Also, added a new option --defaults. Since
- the number of defaults that you now have to answer is so large, the
- option lets you just accept the default values. So it works just like
- --silent but still prompts you for the decision to save or discard the
- new defconfig file.
- - tools/refresh.sh: Update so that it can find the Make.defs file in
- the new location.
- * NSH: apps/nshlib:
- - NSH Library: Add a Telnetd command. This is needed when network
- initialization is deferred. In that case, telnet daemon cannot be
- started until the network is finally initialized. The telnetd command
- was added just for that case: So that the telnet daemon can be
- started from the NSH command line after the network is configured.
- - NSH Library: Misc changes needed for PktRadio support.
- - NSH Library: Extend ifconfig command so that it can set variable
- length packet radio addresss.
- - NSH Library: Update addroute and delroute command. The would support either
- IPv4 or IPv6, but not both. Allow expression of the netmask in IPv4 CIDR or
- IPv6 slash notation. This really reduces the pain of using the commands,
- especially for IPv6.
- - NSH Library: Add a route command that will dump the content of routing table.
- * Examples/Tests: apps/examples:
- - examples/udp: Add configurable network device name; Add option to
- suppress network initialization which is not needed if started by NSH
- or for 6LoWPAN.
- - examples/udp: Fix registration as a built-in program; Change some
- naming to make room for a second target. Current one endpoint is the
- target and one is the host. This will (eventually) allow two targets
- to be both endpoints of the test. Change build so that both server
- and client can be on a target, rather than one on the target one on
- the host PC. Server IP address may not be provided on the command line.
- - examples/udp: Port numbers need to be configurable to work with
- 6LoWPAN. Need to bind the client socket to a port number. This was
- not required before so is a apparently a change in the UDP packet
- dispatch logic.
- - examples/udp: Enable testing with the broadcast address.
- - examples/nettest: Support target boards on both ends of the test.
- Separate out network initialization so that it may be used by both a
- target server and a target client. Fix client/server naming
- confusion; Add command line option to select the server address on the
- target. Add support for both enpoints on target boards vs. one on a
- target and one on the host PC.
- - examples/nettest: The send buffer size is now a configuration option.
- - examples/nettest: Loopback option should be available in Kconfig for
- PktRadio.
- - examples/keypadtest: REMOVED and warehoused in the Obsoleted
- repository. This was just a bad clone of apps/examples/hidkbd for a
- keypad driver that was removed years ago. It also uses illegal
- function calls into the OS. So it has no purpse: It is redundant, it
- uses illegal interfaces, and is a test for non-existent code.
- - examples/ipforward: Add an IP forwarding example using only TUN
- devices. Test extended to test forwarding of ICMPv6 multicast messages.
- - Implement powermonitor example for ltc4151 current and voltage
- monitor. From Giorgio Groß.
- - examples/pf_ieee802154: Add for testing PF_IEEE802154 sockets. Add
- PANID to command line options; Cannot bind to address zero... There is
- no counterpart to INADDR_ANY for these radios (not now at least).
- - examples/dac: Add DAC example. From Juha Niskanen.
- * Network Utilities: apps/netutils:
- - netutils/telnetc: This a port of libtelnet to NuttX.
- - netutils/telnetd and users of telnetd: Add support for IPv6.
- - netutils/thttpd: Remove the netstats demo. This depends on an
- illegal function call and cannot be supported. That example could be
- replaced with logic that uses the procfs network entries as was done
- for NSH which had the same issue. But I am too lazy to implement that.
- - netutils/netlib: Add support for PktRadio IOCTL commands.
- - netutils/netlib: Add a helper to decode short addresses.
- * Wireless Utilities: apps/wireless:
- - wireless/ieee802154/i8sak: Rewrote i8sak to be test CLI for IEEE
- 802.15.4 MAC layer. From Anthony Merlino.
- - wireless/ieee802154/i8sak: Updates to i8sak for
- association/beacon-enabled changes to IEEE 802.15.4. From Anthony
- Merlino.
- - wireless/ieee802154/i8sak: Add option to make it easy to send large
- frame for testing purposes. From Anthony Merlino.
- - wireless/ieee802154/i8sak: Add scan command. From Anthony Merlino.
- - wireless/ieee802154/i8sak: Add coordinfo command allowing you to
- poll various attributes related to the coordinator. From Anthony
- Merlino.
- - wireless/ieee802154/i8sak: Add a option to retry on failures to the
- assoc command (usually meaning tht the coordinator is not yet up).
- - iwireless/ieee802154/8sak: Add reset command to reset the MAC layer.
- Adds option to assoc command -t to specify how long to wait for a
- response from the Coordinator. From Anthony Merlino.
- - ieee802154/i8sak: Adds command to trigger regdump of radio. From
- Anthony Merlino.
- * System Utilities (apps/system)
- - apps/system/composite: Update to apps/system/composite assocated with
- big changes to the composite device logic. From Frank Benkert.
- - apps/system/composite: Remove CDC/ACM and MSC configuration logic.
- This belongs in the OS composite initialization. Add and argument so
- that you can select the USB composite configuration to be attached.
- Restore USB tracing; remove unused field in a structure. Remove
- configuration settings that are no longer used. Fix configuration
- selecting.. was setting the port number, not the configure ID. Also
- add a configuration option to select the default configuration.
- - apps/system/composite: Add a configuration option to the boardctl()
- calls to support multiple composite device configurations dynamically.
- - apps/system/composite: Remove references to USBMSC. There still
- dependencies on CDC/ACM in the serial USB trace output.
- - apps/system/telnet: Add Telnet Chat deamon and and client from
- libtelent.
- * Platform-Specific Support (apps/platform)
- Bugfixes. Only the most critical bugfixes are listed here (see the
- ChangeLog for the complete list of bugfixes and for additional, more
- detailed bugfix information):
- * Core OS:
- - Fix ELF loader up_checkarch on ARM arch. From Cristian Condurache.
- - pthread_mutex_unlock(): Missing check for the case where
- pthread_mutex_lock() is called when the mutex is not locked. In that
- case, it would increment the underlying semaphore above 1. This is
- the fix for a problem noted by initialkjc@yahoo.com.
- - sig_timedwait(): Pending signal structure used after it has been
- releasd. From anonymous Bitbucket Issue 59.
- - mm_mallinfo: do heap end debug assert check with heap semaphore held.
- From Jussi Kivilinna.
- - sched/: Fix return value in sched_setaffinity(). From Masayuki
- Ishikawa.
- - Work Queues: work_queue() must cancel existing work prior to queuing
- new work, otherwise the work queue list structure can become
- corrupted. Problem noted by Pascal Speck.
- - waitpid(): Corrects two problems when CONFIG_SCHED_HAVE_PARENT +
- CONFIG_SCHED_CHILD_STATUS are enabled: (1) Was erroring out if the
- waited for task had already exited, and (2) was not freeing resources
- when a wait was completed. From Boris Astardzhiev.
- * File System/Block and MTD Drivers:
- - VFS poll(): Fix timeout calculation. From Jim Paris.
- - VFS poll(): Fix poll for regular files and block devices. Open Group
- documentation says that poll (and select) support regular files and
- that 'Regular files shall always poll TRUE for reading and writing'.
- From Jussi Kivilinna.
- - VFS epoll(): Fix epoll_wait function. From Simon Piriou.
- - Smart FS: Fix wrong freeing of device structure and use-after-free
- issues on error paths. From Jussi Kivilinna.
- - MTD FLASH drivers: The byte write method of several drivers had a
- cloned error: It was not locking the bus while performing byte write
- operations.
- - MTD M2PX: If we READ while a write/erase is pending, the command is
- ignored and the write/erase continues. If we dont catch this situation
- we will return garbage to the user because the flash will not execute
- the command. So READ MUST wait for write completion, and before that,
- the bus must be locked since it's a precondition to calling
- waitwritecomplete(). From Sebastien Lorquet.
- - MTD FLASH drivers: Clone Sebastien Lorquet's m25px change to at25,
- is25xp, ramtron, and sst25xx.
- - MTD W25: Add missing locking and fix SPI_SELECT usage for
- w25_unprotect. From Jussi Kivilinna.
- - MTD W25: Wait for BUSY flag to clear in w25_readid and
- w25_unprotect. W25Q128 datasheet says that all instructions expect
- 'Read Status Register' and 'Erase/Program Suspend' are ignored when
- BUSY flag in status register is '1'. Therefore wait for busy flag to
- clear in w25_readid() and w25_unprotect(). From Jussi Kivilinna.
- - Automounter: FS_AUTOMOUNTER should depend on SCHED_LPWORK. From
- Nickolay Semyonov.
- * Networking/Network Drivers:
- - TCP Listen: Throw error when error happens in the tcp_listen
- function. From Roland Takacs.
- - Nework Device Management: Do not search net device when all-zeros
- address is used. From Roland Takacs.
- - Network Device Management: Fix a error in netdev_register(); it was
- not handling device names properly when TUN is the only network device.
- - Network Device Management: Fix netdev_dev_lladdrsize(). In some
- configurations, it could return the wrong size for the address of a
- packet radio.
- - Network Device Management: Fix typo for 802.11 devices in
- netdev_register(). Was being masked before because depended on
- CONFIG_NET_MULTLINK.
- - TUN Driver: Use critical section instead of semaphore in
- tun_ifdown(). From Masayuki Ishikawa.
- - TUN Driver: Do all polling on worker thread. Otherwise, the stack
- gets very deep.
- - TUN Driver: Currently cannot support TAP mode unless Ethenet is
- enabled.
- - netdb: Fixed buffer size used for sending DNS queries should depend
- on the configured DNS name size. From Ritjaina.
- - UDP networking: The TTL (time to live) was not being set in the IPv4
- or IPv6 header unless the UDP socket was bound.
- - UDP Networking: Fix a copy-paste error that could effect networking
- when both IPv4 and IPv6 are enabled.
- - UDP Networking: When upd_input() cannot process a packet, it returns
- ERROR so that network drivers may try calling ipv4_input() later. In
- this case, it must also set d_len to zero. Otherwise, all network
- drivers will assume tht there is also an outgoing packet. This
- results in a gratuitous ARP.
- - TCP Networking: Correct some issues that prevent TCP from working
- correctly when both IPv4 and IPv6 are enabled.
- - TCP Networking: TCP disconnection callbacks are not retained in a
- list. This will support multiple callbacks per lower-level TCP
- connection structure. That is necessary for the cae where a socket is
- dup'ed and shares the same lower-level connection structure. NOTE:
- There still needs to be a call to tcp_start_monitor() when the socket
- is dup'ed.
- - TCP Networking: Start the network monitor for a socket when a TCP
- socket is dup'ed.
- - TCP Networking: If one of the dup'ed socket's is closed, then network
- monitor resources associated with that one socket must be recovered.
- Also, in the event that socket is being used on one thread, but then
- closed on another, any threads waiting for events from the socket
- should be informed of the closure. That latter requirement is not
- implemented because current data structures do not support it.
- - TCP Networking: Fix a race condition. The accept() operation is
- performed with the network locked. However, the network is unlocked
- BEFORE the connected state is set. Therefore, a context switch may
- occur and the socket may no longer be connected when it is marked so.
- Noted by Pascal Speck.
- - Network routing tables: Fix a compilation error when IPv6 and
- routing are enabled.
- - Network procfs: Fix some spacing when both IPv6 and IPv4 are enabled.
- - Network Local Sockets: Fix accept for local stream sockets. From
- Jussi Kivilinna.
- - Network Local Sockets: Fix server lc_waitsem overflow. From Jussi
- Kivilinna.
- - IPv6 Networking: Remove comparisons to the address with all ones
- set. IPv6 does not support broadcast addresses and certainly not in
- that form. Replace with multicast addresses beginning with 0xff02.
- - ICMPv6 Networking: Fix a compilation issue with
- CONFIG_NET_ICMPv6_AUTOCONF=y. From Masayuki Ishikawa.
- - Networking: Fix net_lock returning ERROR when instead of real error
- code on failure. From Jussi Kivilinna.
- - IGMPv2 Networking: Remove special support for interrupt level
- processing (there is none) and fix some timer cancellation logic. In
- many files, correct comments. There is no interrupt level processing
- in the networking layer.
- * Wireless/Wireless Drivers:
- - IEEE 802.15.4 MAC: Need counting protection on the logic that
- releases the notification resources. Otherwise, notification handlers
- may be operating with a stale pointer.
- - IEEE 802.15.4 MAC: Improves internal timer logic to handle work
- serially. Before, the MAC timer used a watchdog to schedule work with
- the high priority worker queue. However, since everything in the MAC
- is supposed to be serialized through the use of the high priority work
- queue, but the timer uses a watchdog, there are some unintended
- consequences. To simplify, we now use the delayed work feature of the
- work queue. From Anthony Merlino.
- - IEEE 802.15.4 Network Driver: Update RX statistics in network driver.
- - IEEE 802.15.4 MRF24J40 Driver: Minor timing fix. Matches recommended
- value in datasheet. Splits up driver into multiple files to make it
- easier to navigate. Fixes issue with non-beacon enabled mode. From
- Anthony Merlino.
- - IEEE 802.15.4 MRF24J40 Driver: Fix a bug causing radio to cease
- transmitting. From Anthony Merlino.
- - IEEE 802.15.4 MRF24J40 Driver: Fixes issues with sleeping for beacon
- enabled networking. From Anthony Merlino.
- - EEE 802.15.4 MRF24J40 Driver: Fix math error for calculating sleep
- count values. From Anthony Merlino.
- - IEEE 802.15.4: Fix timing issues for beacon enabled coordinators and
- endpoints. From Anthony Merlino.
- - iIEEE 802.15.4: Fix issue with association on beacon-enabled
- networking. From Anthony Merlino.
- - 6LoWPAN: Correct a few addressing issues. Also reserve two bytes at
- the end of the frame for the FCS.
- - 6LoWPAN: Fixes needed when extended addressing is enabled; broke short
- addressing. Loopback driver needs to initialize the MAC meta data;
- Address decompression logic must have the MAC address to handle the
- most common compression cases. Fix a src/dest address confusion and
- other addressing problems.
- - 6LoWPAN: Add missing IPv6 address creation to HC1 decode logic. Fix a
- typo in an index that prevented use with HC1 and extended addresses.
- - 6LoWPAN: TCP logic was not obeying MTU packet size limitations.
- - 6LoWPAN: Major re-architecting of TCP logic to properly handle TCP
- stuff like ACKs and TDP windowing which were not properly covered in
- the initial design.
- - 6LoWPAN: HC06, copy TCP header as though it were data. TCP packet
- reassembly now seems to work OK.
- - 6LoWPAN: Fix duplicate and bad memcpy in loopback driver.
- - 6LoWPAN: Fix a misconception about HC06 16-bit IPv6 address
- compression.
- - 6LoWPAN: TCP send logic was returning a failure in one case when, in
- fact, the send was successful.
- * Common Drivers:
- - USB MSC: Use struct instead of pointer to the struct as sizeof
- argument in memset in usbmsc.c. Otherwise it leads to error: argument
- to sizeof in memset call is the same pointer type struct usbmsc_lun_s
- * as the destination. From Oleg Evseev.
- - USB MSC: Add missing logic to define endpoints. The composite
- changes broke the the non-composite, USB MSC only case because it omitted the critical setup when USB MSC was not part of the composite.
- - USB CDC/ACM. Fix several known problems resulting from merge of USB
- composite device. That merge now breaks some of the non-composite USB
- devices.
- - Button Driver: Interrupts weren't enabled since nothing updates them
- after btn_poll() marks the file descriptor structure as being polling.
- From Jan Pobrislo.
- - ADC Driver: Fix some data alignment issues in the ADC driver.
- - I2C Drivers: Handle I2C_TRANSFER return value consistently. Some I2C
- peripherals transfers return zero on success, others number of
- completed transfers. Make drivers robust against this. From Juha
- Niskanen.
- - COMP Driver: Fix compilation errors when poll disabled. From Mateusz
- Szafoni.
- * Simulation:
- - Simulation: Fix mkdir issue in GNU target. From Simon Piriou.
- - Simulation: x86 stack needs to be aligned to 16-byte boundaries.
- - Simulation: Fix building 32-bit simulation on 32-bit X86. From Jussi
- Kivilinna.
- * ARM:
- - ARM: The older ARM7 and ARM9 configurations were determining CFLAGS
- based on the GCC version 4.x.x or not. That needx to be extended for
- 5.x.x and 6.x.x which also behave like 4.x.x.
- * ARMv7-M:
- - Fixed ARMv7-M Toolchain setting. Cortex-M4 only have Single
- Precision FPU. From Hidetaka Takano.
- - ARMv7-M syscall logic: Clear bit 0 in PC settings. Bit 0 is the
- thumb mode indication and should not be set in the PC. This extra bit
- has not caused problems in the past, but seeing it set in the PC is
- unnerving.
- * Expressif ESP32:
- - Fix ESP32 gpio enable reg and default UART pin. Modify default UART
- pin for ESP-WROOM-32. Fix gpio enable reg. From Sungki Kim.
- * Microchip/Atmel SAMD21 Drivers:
- - SAMD21: Fix some SPI-related issues. From Matt Thompson.
- - SAMD21 SPI: I was having issues with the bus freezing up .. slaves
- holding SDL low.. so I rewrote a good portion of the interrupt logic
- based on the application notes from Atmel. One major improvement is
- using the RXNACK flag in the STATUS register, which indicates that no
- device responded to an address packet. Assuming that the chip will
- always give an interrupt status, I believe it's possible to eliminate
- the timer as well. From Matt Thompson.
- - SAMD/L21: Need to preserve errno value across syslog() call.
- - SAMD21: Changes needed to get USB working. From Matt Thompson.
- * Microchip/Atmel SAMv7 Drivers:
- - SAMv7 TWIHS: TWIHS driver add reference counting. From David Sidrane.
- - SAMv7 CAN: We discovered a problem with the samv7 mcan driver which
- results, under some circumstances, in a very high CPU load. The
- problem occurs, and is easily reproducible, if the device is connected
- to a CAN network with a wrongly configured CAN speed (baud rate). In
- our tests we set the CAN speed of the device to 1000000 and the speed
- of the other CAN nodes to 500000. The device is restarted and sends a
- CANopen "bootup message" to the CAN network. This results in huge
- amount of errors messages on the CAN bus, probably because of the CAN
- feature for acknowledging error messages. The error messages can’t be
- read by the device because of the misconfigured CAN speed, instead the
- CAN chip reports lots of errors, which are reported to the application
- which uses the CAN driver (CONFIG_CAN_ERRORS is enabled). The CAN
- errors are reported from the CAN chip via interrupts and thus the
- interrupt load is very high in this scenario. To fix the problem the
- driver now disables each RX error interrupt after it is occurred. The
- RX error interrupts are turned back on if at least one CAN message is
- received successfully. From Stefan Kolb.
- - SAMv7 CAN: I discovered while working on the SAMV7 mcan driver that
- the implementation of the CAN error handling is suboptimal. In the
- current implementation the many errors are implemented as pending
- errors. But those errors are not pending, the errors occurred and are
- gone directly afterwards. This commit changes the described behavior
- and simplifies the handling of CAN errors. From Stefan Kolb.
- * Microchip/Atmel SAMv7 Boards:
- - SAMv71-XULT: Fix MRF24J40 interrupt GPIO number.
- * NXP/Freescale Kinetis:
- - Kinetis MPU: Disable MPU when not in protected mode. The hardware
- reset state of the the MPU precludes any bus masters other then DMA
- access to memory. Unfortunately USB and SDHC have there own DMA and
- will not have access to memory in the default reset state. This change
- disabled the MPU if present on system startup. From David Sidrane.
- - Kinetis MPU: Fixed warning for kinetis_mpudisable. Missing header
- file added. From David Sidrane.
- - Kinetis SIM: Ensure isolation of clock dividers for 0 value case.
- This fixes a bug were a SoC does not have a clockdivN register and
- passes a 0 for the init value. This prevents overflow of the 0
- decremented to -1 (0xffffffff) spilling over to other clockdivN
- fields. From David Sidrane.
- * NXP/Freescale i.MX6 Drivers:
- - i.MX6: Fix a wrong parameter passed when calling irq_attach() in
- imx_serial.c. From Masayuki Ishikawa.
- - Based on Masayuki's change, I review all serial driver vector
- attachment. I Found one additional error and updated all relevant
- drivers to current interrupt parameter passing.
- * STMicro STM32:
- - STM32 F410 Kconfig: Fix peripherals available on the STM32 F410.
- This also adds a select for STM32_HAVE_DAC1 present on this STM32
- flavor. From Gwenhael Goavec-Merou.
- - STM32 L4 DMA: Correct USART3_RX bad channel definition. From Juha
- Niskanen.
- - STM32 L4 PWR: Correct PWR_SR2 REGLPS and REGLPF bits, add port I
- registers. Also remove duplicate section from Kconfig. From Juha
- Niskanen.
- - STM32 F7: do not enable read-modify-write on DTCM. "AN 4667 - STM32F7
- Series system architecture and performance" recommends to disable
- read-modify-write on DTCM: "If the DTCM-RAM is used as data location
- and the variables used are byte or/and halfword types, since there is
- no ECC management in this RAM on the STM32F7 Series, it is recommended
- to disable the read-modify-write of the DTCM-RAM in the DTCM interface
- (inthe DTCMCR register) to increase the performance." From Jussi
- Kivilinna.
- * STMicro STM32 Drivers:
- - STM32 TIM3/4 are always 16-bits; never 32-bits. Noted by Eetu
- Nevalainen..
- - STM32 ADC: Invalidate dma buffer before use. Missing invalidation
- caused old samples being fetched from cache. From Jussi Kivilinna.
- - STM32, STM32L4, STM32F7 ADC: Fix channel 18 sample time. From Juha
- Niskanen.
- - STM32 DAC: Fix some configuration logic. When STM32_NDAC is greather
- than 1, then second channel is always DAC1OUT2. From Mateusz Szafoni.
- - STM32 DAC: Fix compilation when DMA disabled for channel. From
- Mateusz Szafoni.
- - STM32 F0: Fix some funny shifts in DAC header files. From Juha
- Niskanen.
- - STM32 F1 RTC fixes: (1) Compile issues because of missing RTC_MAGIC
- #defines, (2) missing functionality based on RTC_MAGIC in RTC based on
- stm32_rtcounter.c, (3) IRQ setup from up_rtc_initialize was later
- reset in up_irqinitialize, (4) write access to backup registers
- without enabling access to backup domain, (5) possible races in
- set/cancel alarm. tested with STM32F103C8 only. device now wakes up
- from forced STANDBY mode by alarm. From Leif Jakob.
- - STM32/STM32 L4 PWM: While attempting to output a 70 MHz square wave
- from the timer output of a STM32 clocked at 140 MHz, found that the
- reload calculation was off by one. This correction does allow the
- output up to 70 MHz. I am not sure this affects most users
- generating slow PWM but for frequencies close to the PCLK, the
- difference becomes significant. From JM.
- - STM32 L4 I2C: Set I2C SDA and SCL pins to open drain mode. From Pekka
- Ervasti.
- - STM32 L4 I2C: I2C4 was writing to wrong RCC registers. From Juha
- Niskanen.
- - STM32 L4 DAC: Report transfer as completed in DMA callback. Without
- this even O_NONBLOCK writes block the calling task if DAC was using
- DMA. From Juha Niskanen.
- - STM32 L4 COMP: comparators share RCC enable bit with SYSCFG. From
- Juha Niskanen.
- - STM32 L4 ADC: Correct EXTSEL macros. From Juha Niskanen.
- - STM32 L4 TIM: TIM15,16,17 are always in APB2. From Juha Niskanen.
- - STM32 F7 I2C: Set I2C4 SDA and SCL pins to open drain mode. From Juha
- Niskanen.
- - STM32 F4 RTCC: ISR register and write protection fix. From Eetu
- Nevalainen.
- - STM32 F7 Ethernet: Fix typo in header; Add memory sync barrier
- between writing to DMA TX descriptor and restarting DMA TX. Avoid
- calling work_queue on pollwork if it's already queued, just skip a
- poll cycle instead. Nucleo-144: Fix RMII TXD1 signal, connected to
- PB13 not to PG14. From savinz.
- - STM32 F7: Added missing config option for register value debugging.
- From Titus von Boxberg.
- - STM32 F7: No FSMC, only FMC for STM32F7. From Titus von Boxberg.
- - STM32 F7: HEAP2 depends on CONFIG_ARCH_HAVE_HEAP2, not on particular
- FMC RAM type. From Titus von Boxberg.
- - STM32 F7: STM32_RCC_DCKCFGR2 has nothing to do with PLLI2S; PLLI2S is
- not dependent on LTDC, instead on SAICLK1/2 generated from PLLI2S.
- From Titus von Boxberg.
- - STM32F7: Some STM32F7 builds failed in build testing due to undefined
- STM32_SRAM1_BASE. I think that is because stm32_allocateheap.c was
- not including chip/stm32_memorymap.h.
- - STM32 F7: dcache write-buffed mode is used (not write-through) buffer
- alignment is required for DMA transfers because a)
- arch_invalidate_dcache could lose buffered writes data and b)
- arch_flush_dcache could corrupt adjacent memory if the buffer and the
- bufflen, are not on ARMV7M_DCACHE_LINESIZE boundaries. From David
- Sidrane.
- * STMicro STM32 Boards:
- - STM32F103-Minumum SPI: SPIDEV_WIRELESS used when this has
- changed to SPIDEV_CONTACTLESS. From Nicolas Estibals.
- - configs/: a few more places where SPIDEV_WIRELELSS should be
- SPIDEV_CONTACTLESS.
- - STM32F103-Minumum: Fix a BUG when reading from output pin. We need
- a different read_ops to read from output pin. This patch fixes the
- issue. From Alan Carvalho de Assis.
- - STM32F103-Minumum: Use separated read_ops for GPIO interrupt pins.
- From Alan Carvalho de Assis.
- - STM32F103-Minumum: Fix compiler error in MCP2415 logic.
- - STM32F746G-DISCO: Fix for compilation of STM32F746G-DISCO. From Ivan
- Ucherdzhiev.
- - STM32F746G-DISCO: Fix for stm32f746g-disco board for button support
- with interrupt. This change is tested with buttons app example and it
- is working with interrupts (signals). I tried the test with polling
- but at this point it doesn't work. From Ivan Ucherdzhiev.
- * Build System
- - Fix -Werror=implicit-fallthrough on gcc7. From Julien Lecoeur.
- - configs/Board.mk: Remove comment form end of line. In windows native
- build, it appears to be trying to make that an extra parameter to the
- AR command. From Jeff.
- - configs/Board.mk: Remove quotes from CONFIG_ARCH_FAMILY. Causes
- problems with Windows native build. From Jeff.
- - Makefile.win would only create uboot images for ARM. MIPS support
- also needed. From Lwazi Dube.
- * C Library/Header Files:
- - C++: Fix C++ __guard implementation for ARM. The standard C++ ABI
- that most platforms follow defines __guard to be 64 bits. The existing
- implementation of libxx_cxa_guard.cxx follows this. However, the
- 32-bit ARM C++ ABI defines it as 32 bits instead, and changes the
- meaning slightly so only the lowest bit is used. This matters because
- GCC creates guard symbols without regards to what libxx_cxa_guard.cxx
- says. So on ARM, gcc allocates 4 bytes, but __cxa_guard_release
- writes 8 bytes, zeroing out another unlucky variable nearby. Fix it
- by special-casing 32-bit ARM in libxx_cxa_guard. From Jim Paris.
- - C++: In cwchar it uses CONFIG_LIBC_WCHAR to only export the wc/mb
- functions. When a build does not want to use wide or multibyte char
- CONFIG_LIBC_WCHAR is not set. Therefore we should to only export the
- wc/mb functions when defined. Regardless of the stat of
- CONFIG_LIBC_WCHAR the non mb/wc definitions such as mbstate_t,
- wint_t, wctype_t need to be exported. From David Sidrane.
- - C Library: Fix an error in mkstemp() the could result in an infinite
- loop. From Alan Carvalho de Assis.
- - C Library: (1) Fix an error in mkstemp() the could result in an
- infinite loop. (2) Fix for wrong output in some cases. For Example:
- (a) input: "FILEXX", output: "FILE00" and repeats same output for
- further invocations of mkstemp(). But, the output has to be FILE01,
- FILE02, ...., FILEZZ. (b) input: "FILEXXXXXX", output: "FILE100000",
- for next invocation "FILE200000" and so on. But it's good, if the
- output goes like FILE000001, FILE000002, ..., FILE000101, ... From
- Lokesh B V.
- - C Library: gethostbyname_r: Fix check for space in buffer.
- - C Library: inet_ntop() was printing negative values for fields >127.
- - Math Library: Fix wrong output in modf() API. The sign of integral
- part given by the modf() should be same as sign of input. But for
- inputs between 0 and 1, the sign of integral part was not same as
- sign of input. From Lokesh B V.
- - Math Library: Fix wrong output in ceil() API. Ex:for input x = 1.0,
- the output should be 1.0, but the output was 2.0. From Lokesh B V.
- * Tools
- - tools/testbuild.sh: Fix missing $ before variable name.
- - tools/mkdeps.c: Eliminate a warning. MAX_PATH may already be defined
- in included system files. From Jeff.
- * Applications: apps/
- - All apps/ Makefiles: Add .PRECIOUS: apps/libapps.a to every
- Makefile. Hopefully this will end awkward problems when you Control-C
- out of a build and libapps.a is deleted.
- - platform/Makefile: More attempts to fix for Windows native build.
- Backslash as a delimiter causes problems in pattern subsitutions.
- * NSH: apps/nshlib:
- - NSH network initialization: Fix some ieee 802.15.4 initialization
- logic. It should not set the saddr or panid; those cannot be
- hard-coded but must come from the coordinator. Re-factor a function
- that has gotten too big and too complex. Do not set the IP address
- for 6loWPAN. The 6loWPAN stack uses IP address that derive from the
- ieee 802.15.4 addressing and cannot be (safely) configured by the user.
- - NSH Library: Fix copy-paste typo in nsh_usbconsole.c. From Oleg
- Evseev.
- - NSH Library: fix size of 6LoWPAN extended address.
- - NSH Library: Fix build break in nsh_command.c with IPv4/IPv6 dual
- stack. From Masayuki Ishikawa.
- - NSH Library: Correct parsing of ifconfig so that you can specify the
- HW address without specifying the IP address.
- * Examples/Tests: apps/examples:
- - examples/smart: Fix some compilation errors. Obviously this test has
- not been used in a LONG time.
- - examples/udp: Renaming some files to prevent name collision in
- libapps.a. Fix naming of a configuration setting.
- - examples/nettest: Renaming some files to prevent name collision in
- libapps.a
- - examples/nximage: Remove unused global variable.
- - examples/nsh: Remove APPNAME, PRIORITY, and STACKSIZE settings from
- Makefile to avoid showing nsh in Builtin Apps. From Masayuki Ishikawa.
- * Network Utilities: apps/netutils:
- - netutils/tftpc: Missing header file causes errors in some
- configurations.
- - netutils/tftpc: TFTPC depends on CONFIG_NET_IPv4.
- - netutils/netlib: Fixes to work when only USRSOCK is enabled.
- - netutils/netlib: Fix netlib_nodaddrconv() so that its return type is
- the same as other address conversion functions.
- - netutils/netlib: If only PF_IEEE802154 socket family is enabled, then
- must use SOCK_DGRAM.
- - netutils/ftpc: Fix some memory leaks. From Boris Astardzhiev.
- - netutils/thttpd: Fix a malformed if condition detected by GCC 6.x.x.
- - netutils/dhcpd: Prevent buffer overflow in dhcpd_addoption. offset
- represents distance from start of option buffer. So this should be
- changed current option pointer minus start of buffer. From EunBong
- Song.
- * Wireless Utilities: apps/wireless:
- - wireless/ieee802154/i8sak: Need to increment the next_saddr after
- each successful association.
- * System Utilities (apps/system)
- - correct copy-paste typo in comments in composite_main.c From Oleg
- Evseev.
- - system/dhcpc: The DHCPC renew command did not build correctly due to
- naming problems. Noted by Masayuki Ishikawa.
- - system/dhcpc: Fix warning about renew_main.o appear twice in rule.
- * Tools (apps/tools):
- - tools/mkkconfig.bat: Use %cd% instead of %~dp0 for usage of APPSDIR
- in this batch file.
- - tools/mkkconfig.bat: Remove quotes in echo. These were begin
- Echo'ed and generating double quots in the output. From Jeff.
- - Windows build fixes: tools/mkkconfig.bat - switch APPSDIR path to
- use forward slashes for kconfig-frontends. interpreters/ficl -
- Reorder some targets that causes GNUwin32 make to behave badly. From
- Jeff.
- NuttX-7.23 Release Notes
- ------------------------
- The 123rd release of NuttX, Version 7.23, was made on December 4, 2017,
- and is available for download from the Bitbucket.org website. Note
- that release consists of two tarballs: nuttx-7.23.tar.gz and
- apps-7.23.tar.gz. These are available from:
- https://bitbucket.org/nuttx/nuttx/downloads
- https://bitbucket.org/nuttx/apps/downloads
- Both may be needed (see the top-level nuttx/README.txt file for build
- information).
- Additional new features and extended functionality:
- * Core OS:
- - sem_open() should return SEM_FAILED on any failures. This is change
- in the POSIX specification since the original sem_open() was written
- so many years ago.
- - exec(): The non-standard interface exec() is now enshrined as a
- official NuttX API. I really dislike doing this but I think that
- this is probably the only want to load programs in the protected
- mode. It is currently used by some example code under apps/ that
- generate their own symbol tables for linking. Other file execution
- APIs relay on a symbol table provided by the OS. In the protected
- mode, the OS cannot provide any meaning symbol table for execution
- of code in the user-space blob so that is they exec() is really
- needed in that build case. And, finally, the interface is
- completely useless and will not be supported in the KERNEL build
- mode where the contrary is true: An application process cannot
- provide any meaning symbolic information for use in linking a
- different process.
- - OS Internal Functions: Rename many OS internal functions so it is
- clear that they are not part of the application interface. All
- internal functions with the sem_* prefix became nxsem_*, sig* become
- nxsig_*, mq_* become nxmq_*, etc.
- - Cancellation Points: Add new cancellation point interface,
- check_cancellation_point().
- - Signals: Add logic to wake up a thread that is waiting on a signal
- if it is canceled.
- - sigtimedwait(): Add logic to suppress the wait if there is a
- pending cancellation.
- - clock_nanosleep(): Implement clock_nanosleep(). nanosleep() is now
- reduced to a libc wrapper around clock_nanosleep().
- - task_delete(): Do not permit user applications to delete kernel
- threads.
- - kthread_create(): Rename kernel_thread() to kthread_create() for
- better naming consistency with task_create() and kthread_delete().
- - boardctl(): Remove the BOARDIOC_GRAPHICS_SETUP command.
- - TCB: Move POSIX thread specific data from pthread TCB to common TCB
- structure. This change allows using pthread_getspecific and
- pthread_setspecific from main thread. Patch also enables using
- pthread data with config option CONFIG_DISABLE_PTHREAD=y. From Jussi
- Kivilinna.
- - mm: Remove the CONFIG_GRAN_SINGLE configuration option. It adds no
- technical benefit (other than some minor reduction in the number of
- interface arguments) but adds a lot of code complexity. Better
- without it.
- - mm: Add a function to get information about the state of the
- granule allocator. This is the moral equivalent of mallinfo().
- * File Systems/Block and MTD Drivers
- - MT25Q Serial FLASH: Add support for Micron MT25Q series MT25Q128.
- From Sebastien Lorquet.
- - MX35LFxGE4AB: Add an MTD driver for Macronix MX35LFxGE4AB serial
- NAND flash. From Ekaterina Kovylova.
- - FileMTD: Add block device MTD interface. Block MTD interface
- allows using block device directly as MTD instead of having to use
- file-system in between. NOTE that this provides the opposite
- capability of FTL which will let you use an MTD interface directly
- as a block device. From Jussi Kivilinna.
- - BCH: The character driver to block device access now supports an
- IOCTL to get the geomtry of the underlying block device.
- - mkfatfs: Remove mkfatfs from the OS. This is a user-space
- application and belongs in apps, not in the OS.
- - procfs: Implements procfs /proc/fs/blocks and /proc/fs/usage files,
- replacing the NSH df command. Also implements procfs /proc/fs/mount
- file, replacing the NSH mount command when there are no arguments.
- - procfs: Add /proc/meminfo. This is an alternative way to get the
- information that was previoulsy available in apps/system/free.
- apps/system/free was removed beause it made illegal calls into the
- OS violating the portable interface. This new procfs entry provides
- the same information with no such violation. it also provides
- information about the kernel heap (formerly /proc/kmm), about the
- use of program memory(formerly /proc/progmem). And also information
- for the page table usage in the KERNEL build.
- - UserFS: Adds the UserFS client and of the UserFS feature in
- general. Initially used Unix domain local sockets instead of
- message queues. Easier to transfer big data in local sockets than
- message queues. However, that lead to certain inescapable deadlock
- conditions So the IPC was converted to UDP LocalHost loopback
- sockets. The problem with the local sockets is that they do require
- operations on the top level pseudo-file system inode tree. That
- tree must be locked during certain traversals such as enumerate
- mountpoints or enumerating directory entries. This conversion is
- unfortunate in the sense that Unix local domain sockets are
- relatively lightweight. LocalHost UDP sockets are much heavier
- weight since they rely on the full UDP stack.
- * Graphics/Display Drivers:
- - Framebufer character driver: Add framebuffer character device driver.
- - LCD Framebuffer: Add support for a generic front-end that will
- convert any LCD driver into a framebuffer driver.
- - Framebufer character driver: Include support for LCD drivers that
- use a simulated framebuffer and must receive explicit notification
- when there is an update to a region in the framebuffer.
- - LCD: Make LCD driver configuration indepently selected from NX
- graphics configuration. This makes things awkward and loses some
- error checking but is a necessary step in order to make LCD drivers
- usable when the NX graphics system is disabled.
- * Networking/Network Drivers:
- - Networking: Add implementation of logic for SIOCGIFCONF and
- SIOCGLIFCOF IOCTL commnds.
- - Network IOCTLs: Add support for the SIOCGIFBRDADDR ioctl() command.
- - Routing Tables: Permit IPv4 and IPv6 routing tables to be of
- different sizes.
- - Routing Tables: Adds support for read-only routing tables. Prior
- to this change, routing tables were only support in RAM and had to
- be initialized with explicit logic to add the necessary routes to
- the routing table. With this change, routes may be defined in the
- pre-initialized, read-only routing table provided by the
- board-specific logic.
- This would be particularly useful, for example, in the case where
- there is only a single network adaptor and you want all output
- packets to go to the single adaptor in all cases. So for that
- behavior you could add a read-only routing table to the
- board-specific long that contains a single entry, the default route:
- 0.0.0.0/0.
- - Routing Tables. Added support for routing tables in files in a file
- system. This might be useful for customized, per-unit routing
- tables. There are two issues with it however:
- 1. Reading from file system on a per packet basis could be slow. I
- think it probably should have a small, in-memory cache of most
- frequently used routes for good problem.
- 2. Currently the delroute logic is disabled due to a problem with
- the design. NuttX does not currently support truncate().
- Therefore, it is not possible to delete entries from the routing
- table file. In this current implementation, that leaves the last
- entry intact at the end of the file. An alternative design
- might include a tag on each record to indicate if the record is
- valid or not. That would work but would add complexity to the
- other routing table functions.
- - Routing Tables: Add support for an in-memory routing table cache in
- order to improve performance when the routing table is retained in a
- file. The cache holds the most recently used routing table entries
- and so can eliminate some file access. Flush the in-memory cache
- when any entry is deleted from the routing table. When a router
- matching an IP address is found, add the routing table entry to the
- cache.
- - Routing Tables: Add logic to mark a route as most-recently-used in
- the route cache.
- - ICMP: This change adds support for semi-standard IPPROTO_ICMP
- AF_INET datagram sockets. This replaces the old ad hoc, nonstandard
- way of implementing ping with a more standard, socket interface.
- - ICMPV6: This commit adds support for semi-standard IPPROTO_ICMP6
- sockets. This is a replacement for the non-standard ICMPv6 ping
- support that violated the portable POSIX OS interface.
- - ICMPv6: Add option to manually specify router prefix in router
- advertisement message. From Sakari Kapanen.
- - Local Sockets: This commit modifies the Unix domain local socket
- design. Local sockets are built on top of pipes. The Local socket
- implementation maintained file descriptors to interrupt with the
- pipes. File descriptors have the bad property that they are valid
- only while running on the thread within the task that created the
- local socket.
- As a policy, all internal OS implementations must use "detached"
- files which are valid in any context and do not depend on the
- validity of a file descriptor at any point in time. This commit
- converts the usage of file descriptors to detached files throughout
- the local socket implementation.
- * Wireless Networking/Wireless Drivers:
- - IEEE-802154: Adds support for receiving MAC events via IOCTL through
- socket interface. From Anthony Merlino.
- - IEEE-802154: Simplifies notify() and rxframe() calls to a single
- notify() call. dataind's and all other "notifs" are now "primitives"
- which aligns with standard terminology From Anthony Merlino.
- - MAC802154: Add support for getting promiscuous mode state From
- Anthony Merlino.
- - MAC802154 Character Driver: When in promiscuous mode, the char
- driver sends the entire frame, including the MAC header. This
- change adds an offset field indicating the header-payload boundary.
- It is set to 0 when not in promiscuous mode as the header is not
- passed to the application
- - 6LoWPAN: Remove CONFIG_NET_6LOWPAN_FRAMELEN. In this case where
- multiple radios are supported, this may not be a constant. 6LoWPAN
- now always queries the driver to get the maximum frame length.
- - 6LoWPAN: Support sending to a router that is on-link and may be
- able to forward the packet for us if the destination is not
- reachable directly. From Anthony Merlino.
- - XBee: Adds XBee S2C (802.15.4 firmware) support. XBee driver
- emulates mac802154 interface. From Anthony Merlino.
- * Other Common Device Drivers:
- - PowerLED: Add upper-half driver for high power LED driver (powerled)
- From Mateusz Szafoni.
- - RTC Driver: Add periodic alarms to upper and lower halves. From
- Juha Niskanen.
- - Pipes: Fix writing large buffers not triggering POLLIN for reader
- poll. From Jussi Kivilinna.
- - USB CDC/ACM Device: Add support for RX flow control to the CDC/ACM
- driver.
- - USB CDC/ACM Device: Add support for flow control TERMIOs in CDC/ACM
- driver.
- - USB RNDIS Device: Add RNDIS-over-USB driver. From Sakari Kapanen
- with added Hi-Speed support from Masayuki Ishikawa.
- - Loop Driver: Don't use file descriptors... Use the internal file
- system interfaces so that the loop device can be shared across
- threads.
- - APA102 LED controller: Add driver for APA102 LED controller. These
- LEDs are used on LED Strips and are controlled over SPI.
- - INA219. Add INA219 Driver. The INA219 is a combined voltage and
- current sensor that can measure up to 26 volts and a current that
- depends on an external shunt resistor. Connection happens via
- i2c/smbus and the chip features a power supply rail that is
- independent from the measured voltage, so it can measure low
- voltages. Right now it measures bus voltage and current, and does
- not use the internal calibrated current reading, nor the available
- power measurement. From Sebastien Lorquet.
- - PCA9555: The IRQ subsystem now supports passing a void * parameter
- to IRQ handlers. Use that method to support multiple PCA9555
- devices, by passing a pointer to the device to the board defined irq
- handler. Now the CONFIG_ for multiple PCA devices just allocates
- device structures dynamically instead of statically when not enabled.
- The same interrupt handler is entered with the device structure
- parameter in all situations, multiple or single PCA. One should
- still be careful if multiple PCA devices share the same IRQ. From
- Sebastien Lorquet.
- - APDS-9960: Add driver for the APDS-9960 gesture sensor. From Alan
- Carvalho de Assis.
- - MAX7219: Add support to MAX7219 LED Matrix as LCD interface. From
- Alan Carvalho de Assis.
- - WM8774: Add WM8774 audio DAC support. From Masayuki Ishikawa.
- - Nunchuck: Add Nintendo Wii Nunchuck driver. From Alan Carvalho de
- Assis.
- * Simulation
- - Simulation: Add a configuration for non-graphical testing of the
- frambuffer character driver using apps/example/fb.
- - Simulation: Add a configuration for testing the UserFS using
- apps/examples/userfs.
- * Broadcom BCM2708:
- - BCM2708: Add enough infrastructrue (more stubs) to get a clean
- compilation of the Pi Zero configuration (with many undefined things
- at link time). This includes several register definition header
- files (some from Alan Carvalho de Assis), basic interrupt handling
- logic, boot-up files, GPIO support, tickless timer, build and
- configuration logic
- * Broadcom BCM2708 Boards:
- - Raspberry Pi Zero. Basic board support at configs/pizero. Untested
- in this release and still some remaining issues.
- * Infineon XMC4xxx Boards:
- - XMC4500-Relax: Add config for UART3 on RXD P0.0 and TXD P0.1 pins.
- From Alan Carvalho de Assis.
- * NXP Freescale LPC17xx Boards:
- - Open1788: Add initialization of Framebuffer driver. Add
- configuration for testing the framebuffer driver.
- * NXP Freescale LPC43xx Drivers:
- - LPC43xx: Add LPC43xx CAN driver. From Alexander Vasiljev.
- * NXP Freescale LPC43xx Boards:
- - MCB1700: Add support for Keil MCB1700 board. From Alan Carvalho de
- Assis.
- - Open1788: Add support for the discrete joystick driver.
- - Open1788: Add a configuration for testing pdcurses with discrete
- joystick.
- * On Semiconductor LC823450
- - LC823450: Add ADC driver and watchdog drivers. From Masayuki
- Ishikawa.
- - LC823450: Add IPL2 support. From Masayuki Ishikawa.
- - LC823450: Add I2S support. From Masayuki Ishikawa.
- - LC823450: Add auto LED for CPU activity. From Masayuki Ishikawa.
- * On Semiconductor LC823450 Boards
- - LC823450-XGEVK: Enable ADC and watchdog driver. From Masayuki
- Ishikawa.
- - LC823450-XGEVK: Add IPL2 support. From Masayuki Ishikawa.
- - LC823450-XGEVK: Add WM8774 support. From Masayuki Ishikawa.
- - LC823450-XGEVK: Add auto LED support. From Masayuki Ishikawa.
- - LC823450-XGEVK: Enable CONFIG_SMP for audio. From Masayuki Ishikawa.
- - LC823450-XGEVK: Add rndis configuration. From Masayuki Ishikawa.
- * STMicro STM32:
- - ARM Kconfig: Add support for classic ARM11 architecture selections.
- - STM32 Tickless: Removes the restriction to 16-bit counts when a
- 32-bit timer is used for tickless operation on the stm32. As it
- was, the restriction is very limiting, especially if one wants high
- granularity and large achievable intervals and has the hardware
- (namely the 32bit timers) available. From Rajan Gill.
- - STM32 L4 Kconfig: Add some L486 and L496 chips. From Juha Niskanen
- - STM32 F7: Adds architecture support for the STM32 F72x and F73x
- families. From Bob Feretich.
- - STM32 F7: Allow changing voltage output scaling setting and
- prevents enabling over-drive mode for low frequencies (STM32 F74xx,
- 75xx, 76xx, 77xx). From Jussi Kivilinna. Changes replicated for
- the 72xx and 73xx families.
- * STMicro STM32 Drivers:
- - STM32 ADC: Added support for ADC's IO_ENABLE_TEMPER_VOLT_CH ioctl
- on STM32F10XX and STM32F20XX. From Dmitriy Linikov.
- - STM32 Wakeup: Add logic for enabling wakeup pins. From Oleg Evseev.
- - STM32 PWR: Adds stm32_pwr_getsbf and stm32_pwr_getwuf functions
- that return the standby flag and the wakeup flag PWR power
- control/status register. From Oleg Evseev.
- - STM32 HRTIM: Sdd support for capture, chopper, deadtime and dump
- registers. From Mateusz Szafoni.
- - STM32 RTC: Canceling an alarm marks it as inactive. From Juha
- Niskanen
- - STM32 Serial: Add interface to get uart_dev_t by USART number,
- stm32_serial_get_uart(). From Juha Niskanen.
- - STM32 F33xx ADC: Initial ADC support for the STM32F33XX. From
- Mateusz Szafoni.
- - STM32 F33xx ADC: Add ADC DMA support to STM32F33 configuration. From
- Mateusz Szafoni.
- - STM32 L4 ADC: Port analog watchdog ioctl commands from the Motorola
- MDK. From Juha Niskanen
- - STM32 L4 ADC: Add option for routing ADC data to DFSDM, fix DFSDM
- DMA. From Juha Niskanen
- - STM32 L4 ADC: Add PM hooks from Motorola MDK
- - STM32 L4 FLASH: Add function for modifying device option bytes,
- From Juha Niskanen.
- - STM32 L4 DFSDM: Add peripheral support for digital filters for
- sigma-delta ADCs. Initial version. Timer trigger support is not
- completed and there is some issue with DMA. From Juha Niskanen.
- - STM32 L4 I2C: Port then STM32 F7 I2C driver to STM32 L4. STM32L4 I2C
- driver is in work-in-progress state (plentiful of TODOs and
- #warnings) and lags many features found in more up-to-date STM32 I2C
- drivers. The peripheral on STM32F7 and STM32L4 are identical except
- for L4's 'wakeup from stop mode' flag and STM32F7's I2C driver is in
- more 'ready to use' state. The I2C clock configuration is kept the
- same as before (I2CCLK = PCLK1 80 Mhz) instead of switching to
- STM32F7 arch default that is I2CCLK=HSI. Further work would be to
- add configuration option for choosing I2C clock source instead of
- current hard-coded default. From Jussi Kivilinna.
- - STM32 L4 RTC: Add up_rtc_getdatetime_with_subseconds
- - STM32 L4 RTC: Change maximum alarm time from 24h to one month. From
- Juha Niskanen.
- - STM32 L4 RTC: Add support for periodic interrupts with
- (experimental) CONFIG_RTC_PERIODIC. From Juha Niskanen.
- - STM32 L4 SDMMC: Add support for an SDMMC driver. From Miha Vrhovnik.
- - STM32 L4 Serial: Suspend serial for Stop mode. From Juha Niskanen.
- - STM32 L4 Serial/PM: STM32L4 serial PM interface improvements:
- Check rx/tx buffers for pending data in pmprepare. Remove adhoc PM
- interfaces and move serial suspend functionality behind CONFIG_PM.
- From Jussi Kivilinna.
- * STMicro STM32 Boards:
- - STM32F103-Minimum: Add board support for APA102 driver. From Alan
- Carvalho de Assis.
- - STM32F103-Minimum: Add ADC support on stm32f103-minimum board.
- From Alan Carvalho de Assis.
- - STM32F103-Minimum: Add support for LM75 in the stm32f103-minimum
- board. From Alan Carvalho de Assis.
- - STM32F103-Minimum: Add an ADPS-9960 example configuration. From
- Alan Carvalho de Assis.
- - STM32F103-Minimum: Add board support for MAX7219 LED Matrix
- controller. From Alan Carvalho de Assis.
- - STM32F103-Minimum: Add USB MSC device initialzation to
- stm32f103-minimum. From Alan Carvalho de Assis.
- - STM32F103-Minimum: Add framebuffer driver initialization for
- stm32f103-minimum board. From Alan Carvalho de Assis.
- - STM32F103-Minimum: Add Nunchuck board support for
- stm32f103-minimum board. From Alan Carvalho de Assis.
- - STM32F4 Discovery: Add support for JLX12864G display on STM32F4
- Discovery board. From Alan Carvalho de Assis.
- - Viewtool-STM32F107: Add support to auto-mount the procfs file system.
- - Photon: Support SPI1 and SPI3. From Anthony Merlino.
- - STM32F334-DISCO: Add lower half driver for high power LED
- (powerled). From Mateusz Szafoni.
- - STM32F334-DISCO: Add flash mode support for powerled driver. From
- Mateusz Szafoni.
- - STM32F334-DISCO: Add powerled example configuration. From Mateusz
- Szafoni.
- - STM32F334-DISCO: Add lower-half driver for SMPS (buck-boost onboard
- converter). From Mateusz Szafoni
- - Nucleo-F334R8: Add logic for zero latency high priority interrupts
- example. From Mateusz Szafoni.
- - Nucleo-F334R8: Add highpri example configuration. From Mateusz
- Szafoni.
- - STM32 F4 Discovery: Added support for the LIS3DSH accelerometer on
- the STM32F4 Discovery rev. C boards. From Florian Olbrich.
- - STM32 F4 Discovery: ROMFS for STM32F4 Discovery board. From Tomasz
- Wozniak.
- - STM32 F4 Discovery: Add a USB MSC configuration. From Alan Carvalho
- de Assis.
- - STM32 F4 Discovery: RNDIS support on STM32F4Discovery + DM-STF4BB.
- NOTE: MAC address for the host side starts 0xaa. This assignment
- scheme should be fixed later. From Masayuki Ishikawa.
- - STM32 F4 Discovery: Add STM32F4 Discovery board support for
- Nunchuck joystick. From Alan Carvalho de Assis.
- - STM3240G-EVAL: Add a configuration for testing the Framebuffer
- character driver using the LCD framebuffer front.
- - STM3240G-EVAL: Mount procfs if enabled.
- - STM3240G-EVAL: Add support for pdcurses and the pdcurses demo
- programs in the 'fb' configuration.
- - Clicker2-STM32: Adds SD card, automount, and syslog file
- support and fixes a few minor issues. From Anthony Merlino.
- - Clicker2-STM32: Adds support for USB RNDIS device. From Anthony
- Merlino.
- - Olimex STM32-H407: Add serial support on the on-board UEXT
- connector. Add USART6 for UEXT connector. Add nsh_uext
- configuration and README update. From Jan Pobríslo.
- - Nucleo-F410RB: Add support for the nucleo-F410RB board. From
- Gwenhael Goavec-Merou.
- - STM32F429i-DISCO: Add framebuffer driver initialization. Add a
- framebuffer (fb) configuration.
- - STM32F429i-DISCO: Add logic to auto-mount procfs. Enable procfs in
- all configurations that use NSH.
- - STM32F429i-DISCO: Enable support for the STMPE811 touchscreen
- controller. Enable touchscreen and also the touchscreen testa at
- apps/examples/touchscreen in the fb configuration.
- - STM32F429i-DISCO: Convert NxWM configuration to use LTDC
- framebuffer driver instead of SPI serial. Also reduce number of
- layers from 4 to 1 in fb configuration. Only one layer is used.
- - STM32L476-MDK: Add support for the on-board LEDs.
- - Nucleo-L496ZG: Add DFSDM initialization. From Juha Niskanen
- - Nucleo-L496ZG: Add support for SDMMC driver. From Miha Vrhovnik.
- - Nucleo-L496ZG: Enable I2C4 bus with i2ctool in NSH configuration.
- From Jussi Kivilinna.
- - Nucleo-L496ZG: Make HSE on Nucleo-L496ZG default to enable USB.
- From Miha Vrhovnik.
- - Nucleo-F746ZG: Use the serial console over /dev/ttyACM0 by default.
- The Nucleo-F746ZG doesn't come with Arduio RS-232 shield, then it is
- better to use the serial over the /dev/ttyACM0 that is created
- automatically when the board is plugged in the computer. From Alan
- Carvalho de Assis.
- - Nucleo-144: Adds support for the Nucleo-144 boards with
- STM32F722ZE. From Bob Feretich.
- * ZiLOG Z80
- - z80/include: compiler.h, limits.h, types.h: Update SDCC/z80 files
- to include support for long long, inline, __FILE__, and __func__.
- * C Library/Header Files:
- - include/: Add stdnoreturn.h. Holds definitions for the C11
- noreturn keyword. Applies to C too.
- - include/netinet/tcp.h: Add trivial standard tcp.h header file.
- - libc: Add support for readv() and writev().
- - libc: Adds tcflow().
- - libc: Add support for sigwait().
- - libnx: Changes to allow the font subsystem to be built without
- enabling the entire graphics system (CONFIG_NX). Adds
- CONFIG_NXFONTS and CONFIG_NXGLIB. Needed to duplicate some Kconfig
- setting for NXFONTs if it can be configured and built independently
- of NX.
- * Tools:
- - tools/configure.sh: Add special support so that you can start with a
- windows native configuration and install on a different host (and
- vice versa).
- - tools/configure.c: Duplicate new functionaity added to configure.sh.
- - tools/configure.sh: This commit adds a -m option for macOS. For
- anyone not aware, Apple renamed OSX to macOS recently; thus the 'm'
- instead of 'o'. This does not change the other uses of *_OSX to
- macOS. From jeditekunum.
- - tools/configure.c: Update functionality to match last change to
- tools/configure.sh.
- * NSH: apps/nshlib:
- - apps/nshlib: mount command no long uses the non-standard OS
- interface foreach_mountpoint(). Now simply cats /proc/fs/mount
- when there are no arguments to the mount command.
- - apps/nshlib: df command no long uses the non-standard OS interface
- foreach_mountpoint(). Now simply cats /proc/fs/blocks or
- /proc/fs/usage.
- - apps/nshlib: The free commands no longer used mallinfo() to get
- the state of the use heap. Two reasons: That is not useful
- information in the kernel build. And (2) there are other memory
- resources of interest in other configurations such as the Kernel
- heap in PROTECTED and KERNEL builds, and the prog mem uses when
- FLASH is used to hold modifiable data. The free command has been
- extended to just dump the content of procfs entries and to include
- all of these other memory resources of the procfs entries are
- available.
- * Examples/Tests: apps/examples:
- - apps/examples/fb: Add a simple test for the framebuffer character
- driver..
- - apps/examples/ostest: sem_open() now returns SEM_FAILED in the
- event of a failure.
- - examples/ostest: Extend cancellation test to make sure that
- cancelable threads waiting on a message queue or on a signal can be
- canceled.
- - Added a simple reader example for the LIS3DSH acceleration sensor
- on STM32F4Discovery. From Florian Olbrich.
- - apps/examples/apa102: Add a Rainbow example for APA102 LED Strip.
- From Alan Carvalho de Assis.
- - apps/examples/flowc: Add a simple test of serial hardware flow
- control.
- - Add powerled driver example. From Mateusz Szafoni.
- - apps/examples/ina219: A simple infinite loop that polls the INA219
- sensor and displays the measurements. From Sebastien Lorquet.
- - apps/examples/alarm: Add options for reading alarm value and
- canceling it. From Juha Niskanen.
- - Add -n samples to lm75 app and replace Centigrade with Celsius.
- From Alan Carvalho de Assis.
- - apps/examples/adps9960: Add ADPS-9960 example. From Alan Carvalho
- de Assis.
- - apps/examples/obd2: Add OBD2 example application. From Alan
- Carvalho de Assis.
- - apps/examples/userfs: Add a test case for verifying UserFS.
- - apps/examples/smps: Add SMPS driver example. From Mateusz Szafoni.
- - apps/examples/pdcurses: Bring in pdcurses demos and make them
- conform to the NuttX coding style.
- - apps/examples/pdcurses: Add a very simple example that just shows
- the entire character set (7-bit only). It adapts to the size of
- the framebuffer and, hence, can be used with very tiny displays.
- In fact it looks really dumb on big displays.
- - apps/examples/nunchuck: Add Nunchuck example application. From
- Alan Carvalho de Assis.
- * File System Utilities: apps/fsutils:
- - apps/fsutils/mkfatfs: Move mkfatfs from the OS to here.
- * Network Utilities: apps/netutils:
- - apps/netutils/netlib: Add netlib_ipv6adaptor() and
- netlib_ipv4adaptor().
- - apps/netutils/netlib: Add helpers for reading the routing table:
- netlib_read_ipv4route() and netlib_read_ipv6route().
- - apps/netutils/netlib: Add new utilities netlib_ipv[4|6]router()
- that can be used to determine the IP address of a router that would
- be used some some destination IP address that is not locally
- accessible.
- - apps/netutils/ftpc: Adds support for IPv6 and fixes various
- transfer issues. From Anthony Merlino.
- * CANUtilities: apps/canutils:
- - apps/canutils/libobd2: Add libobd2 for NuttX. From Alan Carvalho
- de Assis.
- * Graphics: apps/graphics:
- - graphics/traveler: Convert to use the framebuffer driver.
- - apps/graphics/pdcurs34: This commit brings the public domain
- pdcurses library into NuttX. NuttX graphics support based on the
- framebuffer character drivers has been integrated. Input is
- currently limited to a discrete joystick driver.
- * Wireless Utilities: apps/wireless:
- - apps/wireless/ieee802154/i8sak: Adds socket interface support. You
- can now use both socket or char driver to control the MAC layer.
- From Anthony Merlino.
- - apps/wireless/ieee802154/i8sak: Adds sniffer port option and a few
- other get/set parameters. From Anthony Merlino.
- - apps/wireless/ieee802154/i8sak: Changes 'notif' to 'primitive'
- corresponding to the changes in the Kernel. From Anthony Merlino.
- - apps/wireless/ieee802154/i8sak: Channel setting is now saved
- locally, so when performing a startpan or assoc, the channel
- previously set is still used, even though the MAC layer gets reset.
- From Anthony Merlino.
- - apps/wireless/ieee802154/i8sak: Adds ability to get/set rxonidle
- setting for MAC layer. From Anthony Merlino.
- - apps/wireless/ieee802154/i8shark: Adds i8shark, a sniffer "adapter"
- that captures all 802.15.4 traffic, packages it into a Wireshark ZEP
- packet, and sends it to a host running Wireshark From Anthony
- Merlino.
- * System Utilities (apps/system)
- - apps/system/ping and ping6: This commit removes the ping and ping6
- commands from NSH and replaces then with the apps/system/ping and
- apps/system/ping6 built-in commands. The NSH ping[6] commands had
- to be removed because they violated the portable POSIX OS interface.
- The apps/system/png and ping6 command uses the sem-standard
- IPPROTO_ICMP and IPPROTO_ICMP6 socket interfaces.
- * Platform-Specific Support (apps/platform)
- Bugfixes. Only the most critical bugfixes are listed here (see the
- ChangeLog for the complete list of bugfixes and for additional, more
- detailed bugfix information):
- * Core OS:
- - Task Environment Creation: Fix an error in the duplication of the
- child tasks environment in the special case where the parent's
- environment was created, but then all of the variables were unset.
- In that case, there is still an allocation in place but the size of
- the allocation is zero. This case was not being handled correctly
- when a child task attempts to create its environment and inherit the
- zero-size partent environment. Noted by Anthony Merlino.
- - timer_create(): Fix watchdog resource leak if cannot allocate a new
- timer. From Bruno Herrera.
- - OS Internal Functions: Internal OS functions should not return error
- information via the user errno variable: This includes functions
- like file_seek(), file_read(), file_write(), etc. The complete list
- is too long to duplicate here (please refer to the ChangeLog for
- details).
- - OS Internal Functions: Not only should internal OS functions not
- modify the errno variable, they should never introduce cancellation
- points: psock_connect(), psock_listen(), psock_getsockopt(), etc.
- The list is too long to duplicate here (please refer to the
- ChangeLog for details).
- - OS Internal Functions: Create OS internal versions of many
- applications functions that were used by the OS. The new versions
- differ from the application interfaces in that (1) they do not
- return error information via the errno variable, and (2) they never
- create cancellation points. This includes new internal interfaces
- like nxsem_init() that is like sem_init(), etc. There are too many
- to list here (see the ChangeLog for details).
- - Task Exit: task_exithook.c fails to link if signals are disabled
- because was unconditionally trying to send the SIGCHLD signal to the
- parent in certain configurations. Noted by Jeongchan Kim.
- - memalign(): Fix heap corruption caused by using unaligned chunk
- size. Unaligned nodes generated by memalign later cause heap
- corruptions when nodes are shrink further (for example, 24 bytes ->
- 8 bytes, when alignment is 16 bytes). From Jussi Kivilinna.
- - SMP: In sched/sched/sched_cpuselect.c, in order to find the cpu
- with the lowest priority thread, we have to remember the already
- found lowest priority. Noted by Anonymous in Issue #75.
- - spinlocks: Disable local interrupts in spin_setbit() and
- spin_clrbit() in order to avoid a deadlock condition. From Masayuki
- Ishikawa.
- - atexit()/on_exit(): Clear atexit()/on_exit() function pointer
- before calling it. On most archs, up_assert() calls exit() so
- without this change, if atexit() function triggers an assertion we
- are in endless loop. From Juha Niskanen.
- * File System/Block and MTD Drivers:
- - tmpfs: Fixed directory unlocking in tmpfs_opendir. From Dmitriy
- Linikov.
- - fcntl(): fcntl() did not return success fail for F_SETFL. Reported
- by Jussi Kivilinna.
- - tcdrain(): tcdrain() was recently added to the NuttX C library.
- But there is a problem. The specification of tcdrain() requires
- that it be a cancellation point. In order to do this, tcdrain was
- moved from the C library into the OS and the addition cancellation
- point hooks were added. In non-FLAT builds, access via system calls
- is also now supported.
- - FS FAT: Fix hard-fault when listing contents of FAT root. From
- Jussi Kivilinna.
- - procfs: Correct a problem that was causing an apparent directory to
- be reported as a file instead of a directory by opendir. This
- happened after adding these three new procfs entries: fs/block,
- fs/mount, and fs/usage. Of course, there is no directory fs in this
- case, only three files that have fs/ in their relative pathnames.
- The logic was detecting that fs was the name of the enty to report,
- but it was then declaring that fs was a file (because fs/block is of
- type file). This was fixed by adding a check for matching lenghts.
- i.e., if strlen(fs) != strlen(fs/block), then report fs as a
- directory instead of a file.
- - procfs: Fix uptime being clse to maximum 32-bit value in certain
- config. From Juha Niskanen.
- * Binary Loader:
- - binfmt/: Don't schedule starthook if there are no constructors.
- * Graphics/Display Drivers:
- - LCD: ILI9341 initialize method not permitted to set errno.
- * Networking/Network Drivers:
- - Networking: net/netdev/netdev_ifconfig.c: Was not returning all of
- the address info.
- - Networking: In some cases, packets are still not sent behind the
- router. I found that NuttX sends the ARP requests not to the router
- but to the target. Mistake in file net/route/netdev_router.c. From
- Aleksandr Kazantsev.
- - SIOCGIFCONF and SIOCGLIFCONF IOCTL commands should only report on
- network adatpors in the UP state.
- - recvfrom(): Fix double leave_cancellation_point on error path.
- From Jussi Kivilinna.
- - send(): Verify that sock descriptor is valid. Fixes assertion when
- using send on closed socket. From Jussi Kivilinna.
- - sendto(): Remove assert check for null psock and buf input
- pointers. Removes check as 'psock == NULL' altogether because that
- checked for later in psock_send and psock_sendto. Change null check
- for 'buf' so that it is handled same as in recvfrom.c (return
- -EINVAL instead of assert). From Jussi Kivilinna.
- - sockgetname() files need to include udp/udp.h and tcp/tcp.h or
- otherwise NET_UDP_HAVE_STACK and NET_TCP_HAVE_STACK are undefined
- and the logic is never compiled. Noted by Anthony Merlino.
- - dup()/dup2(): There was a reference counting problem in the TPC
- logic of net_clone(). net_clone() which is the common logic
- underlying dup() and dup2() for sockets. When net_clone() calls
- net_start_monitor() and net_start_monitor() returns a failure
- (because the underlying TCP connection) then net_clone() must back
- out the reference count on the structure. Problem noted by Pascal
- Speck and this implementation of the solution is based on his
- suggestion.
- - close(): There was a possible recursion that could eventually
- overflow the stack. The error occurred when closing the socket with
- inet_close() while a socket callback was still queued. When the
- socket callback was executed by devif_conn_event(), this resulted in
- a call to psock_send_eventhandler() with TCP_CLOSE flag set which
- then called tcp_lost_connection(). tcp_shutdown_monitor() then
- called tcp_callback() again, which again called
- psock_send_eventhandler(), and so on.... Noted by Pascal Speck.
- Solution is also similar to a solution proposed by Pascal Speck.
- - inet: Add check for protocol before handing out TCP and UDP sockets.
- - IP Forwarding: Fixes typo that caused build error when IP
- forwarding was enabled with CONFIG_NET_ICMPv6_NEIGHBOR enabled as
- well. From Anthony Merlino.
- - IP Forwarding: Do not add link layer header size to d_len inside
- devif_forward(). From Anthony Merlino.
- - TCP Networking: When CONFIG_NET_TCP_WRITE_BUFF=y there is a
- situation where a NULL pointer may be dereferenced. In this
- configuration, the TCP connection's 'semi-permanent' callback,
- s_sndcb was nullified in tcp_close_disconnect. However, other logic
- in tcp_lost_connection() attempt to use that callback reference
- after it was nullifed. Fixed in tcp_lost_connectino() by adding a
- NULL pointer change before the access. This was reported by Dmitriy
- Linikov in Bitbucket Issue 72.
- - UDP Broadcat: Fix some issues with regard to UDP broadcast
- handling. This is Bitbucket Issue #77.
- - ICMP: Fix an error in the poll logic. It was assumed that the
- input parmeter pvconn was valid. It was not. Instead, the poll
- logic must work like the sendto() and recvfrom() logic: It must
- keep a copy of the conn structure in the private data.
- - ICMPv6: Fixes several errors preventing icmpv6_radvertise.c from
- being compiled. Fixes conversions to network byte order (namely
- vlifetime, plifetime, mtu). IPv6 source address is set to
- link-local IP address instead of the address in the netdev
- structure. This is in compliance to RFC 4861. RA didn't work on
- Linux before this change. Finally, router prefix and prefix length
- are derived from the IPv6 address and netmask in the netdev
- structure. This seems to make more sense than using a predefined,
- separate prefix from the config. From Sakari Kapanen.
- - ICMPV6: icmpv6_input() needs to set d_len to 0 after consuming echo
- reply, otherwise, garbage will get sent out. From Anthony Merlino.
- - ICMPV6: Fix an error in the poll logic. It was assumed that the
- input parmeter pvconn was valid. It was not. Instead, the poll
- logic must work like the sendto() and recvfrom() logic: It must
- keep a copy of the conn structure in the private data.
- - IGMPv2 Send: Fix incoming IGMP checksum calculation. From Louis
- Mayencourt.
- - ARP: Fix IGMP Ethernet address computation. From Louis Mayencourt.
- * Wireless/Wireless Drivers:
- - CC1101: CC1101 driver not permitted to set errno.
- - 6LoWPAN: Correct an error in uncompressing multicast address.
- - 6LoWPAN: Correct a bug in handling uncompressed frames (IPv6
- dispatch). Adds a separate local variable, protosize, to keep track
- of the size of thep protocol header.
- - 6LoWPAN: Fix an endian-ness problem in 6LoWPAN address
- decompression. From Anthony Merlino.
- - 6LoWPAN: The logic that extracts interface identifier from the IP
- address needs to be generalized to handle cases where the address is
- not a link local address. From Anthony Merlino.
- * Common Drivers:
- - Serial: 16550 UART driver IOCTL method must not set errno; it must
- return a negated errno value.
- - LIS3DSH: Added the argument parameter (FAR void *arg) to the
- interrupt handler provided by the LIS3DSH driver to fit the
- definition for ISRs in xcpt_t. Changed the check for working queue
- availability in lis3dsh interrupt handler to use work_available()
- and not crash in case of an overrun. From Florian Olbrich.
- - LIS2DH: Fixes for self-test. From Jussi Kivilinna.
- - LIS2DH: Fix use of obsolete dbg macro. From Jussi Kivilinna.
- - LIS331DL: LIS331DL driver not permitted to set errno.
- - HTS221: Power-on sensor for loading calibration data. From Jussi
- Kivilinna.
- - MCP2515: Fix the MCP2515 Bit Rate Prescale calculation. Fix BRP
- for SET_BITTIMING ioctl as well. From Alan Carvalho de Assis.
- - STMPE811: Fix GPIO operation of STMPE811 driver.
- 1. STMPE811_GPIO_DIR was defined for register name and later was
- redefined to be the pin direction mask for `stmpe811_gpioconfig`.
- I decided to change register name to be STMPE811_GPIO_DIR_REG, and
- keep pin direction mask STMPE811_GPIO_DIR, so that any external
- code that already use this driver will be unchanged.
- 2. The STMPE811 register GPIO_DIR uses bit value 1 for output and 0
- for input, but `stmpe811_gpioconfig` set the opposite.
- 3. The call to `stmpe811_gpiowrite` from inside of
- `stmpe811_gpioconfig` leaded to deadlock.
- From Dmitriy Linikov.
- - BQ2429X: Add BATIO_OPRTN_SYSON for enabling BATFET after SYSOFF.
- From Jussi Kivilinna.
- * Simulation:
- - Simulation: Serial and console drivers are not permitted to set
- the errno.
- * ARMv7-M:
- - ARM Stack Check: Fix assert panic when both TLS and interrupt stack
- are enable. From Jussi Kivilinna.
- * Infineon XMC4xxx Drivers:
- - XMC4 USIC: Kconfig was not selecting XMC4_USIC for USIC1. From Alan
- Carvalho de Assis.
- - XMC4 UART: Fix XMC4xxx USIC UART sginal to be high level when in idle.
- From Alan Carvalho de Assis.
- - XMC4 UART:xmc4_uart_configure() expects the channel# not uartbase as
- an input parameter. From Alan Carvalho de Assis.
- - XMC4 UART: Enable RX/TX status. From Alan Carvalho de Assis.
- - XMC4 UART: The Alternative Receive Interrupt was not being
- configured.
- * Infineon XMC4xxx Boards:
- - XMC4500-Relax: Setup max. freq. 120MHz and setup pull-up to UART
- RXD pin. From Alan Carvalho de Assis.
- * Microchip/Atmel SAMv7 Drivers:
- - SAMv7: DAC and ADC drivers are not permitted to set the errno.
- - SAMv7: Correct an error in RX DMA setup. From Manish Kumar Sharma.
- - SAMv7 USB: It is necessary to disable pre-emption and interrupts
- around a loop that copies TX data into the hardware in order to
- avoid a TX data underrun condition. From Anthony Merlino.
- * NXP/Freescale LPC31xx Drivers:
- - LPC31xx: Serial and console drivers are not permitted to set
- the errno.
- * NXP/Freescale LPC43xx:
- - lpc43xx: lpc43_adc.c was being selected by the build system wehn
- DAC was selected.
- * NXP/Freescale LPC43xx Drivers:
- - LPC43xx Ethernet: Fix some backward logic setting full-duplex and
- 100mbps when autoconfiguration is disabled. Noted by Anonymous in
- Issue #76.
- - lpc43xx: UART_RX pins should be configured with input buffers
- enabled. Otherwise it cannot be read. From Alexander Vasiljev.
- * STMicro STM32:
- - STM32 F2: Fixed build for STM32F20XX platforms when
- CONFIG_STM32_DMACAPABLE is enabled. From Dmitriy Linikov.
- - STM32 F4: Remove ltdc.h and dma2d.h. Those header files in that
- location permitted inclusion into application space logic and,
- hence, facilitated and encouraged calling into the OS and violating
- the portable POSIX OS interface. The definitions in those header
- files were move the appropriate location in the counterpart,
- architecture specific files at arch/arm/src/stm32/dma2d.h and ltdc.h.
- - STM32 L4: Build stm32l4_idle.c only if CONFIG_ARCH_IDLE_CUSTOM is
- not enabled. From Jussi Kivilinna.
- - STM32 F7: Remove ltdc.h and dma2d.h. Those header files in that
- location permitted inclusion into application space logic and,
- hence, facilitated and encouraged calling into the OS and violating
- the portable POSIX OS interface. The definitions in those header
- files were move the appropriate location in the counterpart,
- architecture specific files at arch/arm/src/stm32f7/dma2d.h and
- ltdc.h.
- * STMicro STM32 Drivers:
- - STM32: DAC and ADC drivers are not permitted to set the errno.
- - STM32 ADC: Clear pending interrupts. From Mateusz Szafoni.
- - STM32 CAN: Lower part of STM32 CAN driver
- arch/arm/src/stm32/stm32_can.c uses all three hw tx mailboxes and
- clears TXFP bit in the CAN_MCR register (it means transmission order
- is defined by identifier and mailbox number).
- This creates situation when order frames are put in upper part of
- CAN driver (via can_write) and order frames are sent on bus can be
- different (and I experience this in wild). Since CAN driver API
- pretends to be "file like" I expect data to be read from fd the same
- order it is written. So I consider described behaviour to be a bug.
- Fixed by settin the TXFP bit in the CAN_MCR register (FIFO
- transmit order). From comments by Alexey T, in Bitbucket Issue 73.
- - STM32 HRTIM: Fix pclk calculation. From Mateusz Szafoni.
- - STM32 HRTIM: Fix burst mode prescaler update. From Mateusz Szafoni.
- - STM32 (alt) I2C: Ensure proper error handling. Injecting data
- errors would cause the driver to continually reenter the isr with
- BERR an RxNE. This fix allows the error to be cleared and
- propagated to the waiting task. From David Sidrane.
- - STM32: LTDC and DMA2D drivers are not permitted to set the errno.
- - STM32 RTC: Workaround for potential subseconds race condition. In
- all recent STM32 chips reading either RTC_SSR or RTC_TR is supposed
- to lock the values in the higher-order calendar shadow registers
- until RTC_DR is read. However many old chips have in their errata
- this silicon bug (at least F401xB/C, F42xx, F43xx, L15xxE, L15xVD
- and likely others): "When reading the calendar registers with
- BYPSHAD=0, the RTC_TR and RTC_DR registers may not be locked after
- reading the RTC_SSR register. This happens if the read operation is
- initiated one APB clock period before the shadow registers are
- updated. This can result in a non-consistency of the three
- registers. Similarly, RTC_DR register can be updated after reading
- the RTC_TR register instead of being locked."
- - STM32 Serial: Do not stop processing input in SW flow-control
- mode. From Juha Niskanen.
- - STM32F33xxx ADC: Add some publicly visable interfaces and some
- code to support injected channels. From Mateusz Szafoni.
- - STM32F33xxx DMA: Add public interface to handle with DMA
- interrupts. From Mateusz Szafoni.
- - STM32F33xxx RCC: Fix CAN clock enable. From Mateusz Szafoni.
- - stm32 F4 I2C: Ensure proper interrupt handling. Injecting data
- errors that causes a STOP to be perceived by the driver, will
- continually re-enter the isr with SB not set and BTF and RxNE set.
- This changes allows the interrupts to be cleared and propagates a
- I2C_SR1_TIMEOUT to the waiting task. From David Sidrane.
- - STM32 L4 Serial: Do not stop processing input in SW flow-control
- mode. From Juha Niskanen.
- - STM32 F7: LTDC and DMA2D drivers are not permitted to set the errno.
- - STM32 L4: DAC and ADC drivers are not permitted to set the errno.
- - STM32 L4 DAC: Do not configure output pin if it is not used. From
- Juha Niskanen.
- - STM32 L4 RTC, PM: Small fixes to subseconds handling, ADC
- power-management hooks
- - STM32 F4 RTC: Fix reading alarm value that is more than 24h in
- future. From Juha Niskanen
- - STM32 L4 RTC: Fix reading alarm value that is more than 24h in
- future. From Juha Niskanen
- - STM32 L4 TIM: Fix compilation of timers with complementary outputs
- when not PWM_MULTICHAN. From Juha Niskanen.
- - STM32 L4 RCC: Restore backup-registers after backup-domain reset.
- From Jussi Kivilinna.
- - STM32 L4 RTC: Correct RTC_SSR and RTC_TR read ordering. In all
- recent STM32 chips reading either RTC_SSR or RTC_TR is supposed to
- lock the values in the higher-order calendar shadow registers until
- RTC_DR is read. Change the register read ordering to match this and
- don't keep a workaround for a hypothetical race condition (not in
- any L4 errata, lets for once assume ST's silicon works as it is
- documented...)
- - STM32 L4 RTC: Init mode was never exited because nested locking in
- rtc_synchwait() disabled backup domain access. From Juha Niskanen.
- - STM32 L4 RTC: Use backup register magic value instead of INITS
- bit. The INITS (bit 4) of RTC_ISR register cannot be used to
- reliably detect backup domain reset. This is because we can operate
- our device without ever initializing the year field in the RTC
- calendar if our application does not care about correct date being
- set. Hardware also clears the bit when RTC date is set back to year
- 2000. From Juha Niskanen.
- - STM32 L4 RTC: Put back the SSR race condition workaround. ST has
- confirmed that the issue has not been fixed, and that it applies to
- STM32 L4 too (was not in errata sheets due to documentation bug) See
- discussion: https://community.st.com/thread/43710-issue-with-rtc-maximum-time-resolution .
- From Juha Niskanen.
- - STM32 F7 BBSRAM: Avoid assert in stm32_bbsram_savepanic. If panic
- happens before stm32_bbsram is initialized, stm32_bbsram_savepanic
- caused additional assert panic. Function has null pointer check, so
- drop DEBUGASSERT. From Jussi Kivilinna.
- - STM32 F7 I2C: fix I2C_M_NORESTART handling. From Jussi Kivilinna.
- - STM32 F7 I2C: Restore bus frequency after I2C reset. Copy
- frequency restoration fix from STM32L4 I2C driver to STM32F7 I2C
- driver. From Jussi Kivilinna.
- - STM32 F7 RTC: Fix reading alarm value that is more than 24h in
- future. From Juha Niskanen
- * STMicro STM32 Boards:
- - STM32F334-DISCO: Add missing ram_vectors configuration in linker
- script. From Mateusz Szafoni.
- - Nucleo-F334R8: Add missing ram_vectors configuration in linker
- script. From Mateusz Szafoni.
- - Nucleo-F334R8: Add Missing ADC trigger configuration tot he highpri
- configuration. From Mateusz Szafoni.
- - STM3240G-EVAL: The timer frequencies (BOARD_TIMx_FREQUENCY) are
- incorrectly defined in board.h. Since the APB prescalers are set to
- divide by 4 and 2 respectively, the frequencies should be "2xAPBx"
- as said in the comment. The correct frequencies are already defined
- but as STM32_APBx_TIMx_CLKIN. From Mattias Edlund.
- - STM32F429i-DISCO: The ltdc configuration has been deleted because
- it violated the portable POSIX OS interface. It used
- apps/examples/ltdc and include ltdc.h and dma2d.h which were also
- removed for the same reason.
- * ZiLOG Z80
- - configs/z80sim and xtrs: Serial driver lower halfs ioctl methods
- should return a negated errno value, not set the errno variable.
- - z80 Make.defs: Fixes dependency generation with newest SDCC
- compiler.
- - configs/z80sim: Fix a naming problem. Also, don't try to build the
- serial driver if CONFIG_NFILE_DESCRIPTOR=0.
- - Z80: Makefile fix for use with current SDCC.
- * Build System
- - configs/: All defconfig filess that include
- CONFIG_NET_ICMPv6_SOCKET=y need to select CONFIG_SYSTEM_PING6=y and
- deselect CONFIG_DISABLE_POLL.
- - configs/: All NX configuration... Because of recent changes to
- libnx/nxfonts, Supported bit per pixel must be separated specified
- for NXFONTs too and need to match the select BPP for NX.
- - Build system: Fix CONFIG_BUILD_KERNEL logic directories that have
- ubin and kbin subdirectories. Conditional logic was fine for
- CONFIG_BUILD_FLAT and CONFIG_BUILD_PROTECTED but generated useless
- dependencies if CONFIG_BUILD_KERNEL.
- * C Library/Header Files:
- - libc/stdio: Build the lib_noflush() and lib_snoflush() stubs even
- if CONFIG_FILE_DESCRIPTORS=0. They may still be needed.
- - libc and libnx: When the libraries are built into two libraries, a
- user space library and a OS space library (as in the PROTECTED and
- KERNEL build). Then the user space library must not use the OS
- internal interfaces; similarly, the OS must avoid using the
- userspace interfaces so that it does not muck the errno value or
- create spurious cancellation points.
- - libc/match: Use of exp() vs expf() in logf() caused function to be
- slow. From Alan Carvalho de Assis.
- - libnx: Fixes a memory leak that is caused because the client message
- queue is not unlinked after the client disconnects from the NX
- server. From Masayuki Ishikawa.
- - sscanf(): Fix sscanf() character conversion (%c): do not add '\0' at
- the end as for strings, cause, for example, parsing one character
- will fill two bytes: character itself and zero one '\0' after it, so
- will overflow one byte variable argument and corrupt memory for
- variables allocated after it. From Oleg Evseev.
- * Tools
- - tools/: configure.sh and configure.c should redirect stdout to
- /dev/null but should not suppress stderr output.
- * NSH: apps/nshlib:
- - apps/nshlib/: Avoid truncating the strcmp result in the parser
- into a unsigned char variable. nshlib/nsh_netcmds.c: Check for
- valid hostip before using it. From Bruno Herrera.
- - apps/nshlib/: Fix resouce leak in 'dd' commenad when 'if=' or
- 'of=' params are repeated in the command line. For example:
- dd if=/dev/null if=/dev/zero of=/dev/null or
- dd if=/dev/zero of=/dev/zero of=/dev/null. From Bruno Herrera.
- - apps/nshlib: This commit eliminates the ping and ping6 commands
- from NSH and replaces them with 'built-in' commands at
- apps/system/ping and ping6. The original NSH version of ping[6]
- commands violated the portable POSIX interface and, hence, had to
- be removed. The new system/ping and ping6 built-in commands uses
- the new IPPROTO_ICMP AF_INET and IPPROTO_ICMP6 AF_INET6 datagram
- sockets to implement ping.
- - apps/nshlib: Fix parsing of empty strings when CONFIG_NSH_CMDPARMS
- is not defined. Problem noted by Juha Niskanen.
- * Examples/Tests: apps/examples:
- - All configurations that use NXIMAGE or NXHELLO must select
- NX_MULTIUSER. All configurations that use examples/nxterm must
- enable CONFIG_LIB_BOARDCTL.
- - All configurations that use NXLINES must select NX_MULTIUSER. All
- configurations that use the NX server need to have larger POSIX
- messages.
- - apps/examples/adc: Fix g_adcstate.count initialization. From
- Masayuki Ishikawa.
- - apps/examples/elf: Remove low-level interfaces and replace with
- call to exec().
- - apps/examples/nxflat: Remove low-level interfaces and replace with
- call to exec().
- - examples/ostest: Works around a bug in printf() when cancellation
- points are enabled. printf() is a cancellation point because it
- calls write(). This is correct according to OpenGroup.org.
- However, printf holds the stdio library semaphore when it is
- canceled and this leaves the semaphore in a bad state. No fix for
- the printf bug yet.
- - apps/examples/nx: The NX example no longer supports single user
- mode.
- - apps/examples/nxtext: The nxtext example no longer supports single
- user mode.
- - apps/examples/nxhello now supports only multiuser mode.
- - apps/examples/nximage now supports only multiuser mode.
- - examples/nxlines: Now supports only multiuser mode.
- * Network Utilities: apps/netutils:
- - apps/netutils/ftpc: Fix some crazy comparisons to determine is a
- file is an absolute path. Noted by Anthony Merlino.
- * System Utilities (apps/system)
- - apps/system/i2ctool: Fixed i2ctool write operation in `no restart`
- mode (flag `-n`). It seems that I2C driver has changed a bit since
- i2ctool was written, so now i2ctool sends repeated start even if
- `no restart` flag (-n) was passed to it. From Dmitriy Linikov.
- NuttX-7.24 Release Notes
- ------------------------
- The 124th release of NuttX, Version 7.24, was made on March 2, 2018,
- and is available for download from the Bitbucket.org website. Note
- that release consists of two tarballs: nuttx-7.24.tar.gz and
- apps-7.24.tar.gz. These are available from:
- https://bitbucket.org/nuttx/nuttx/downloads
- https://bitbucket.org/nuttx/apps/downloads
- Both may be needed (see the top-level nuttx/README.txt file for build
- information).
- Additional new features and extended functionality:
- * Core OS:
- - SMP: Introduce spin_lock_irqsave() and spin_unlock_irqrestore().
- These APIs are simplified version of enter_critical_section()
- and leave_critical_section() to protect data (e.g. registers) in
- SMP mode. By using these APIs inside drivers, performance will
- be improved. From Masayuki Ishikawa.
- - System Timer: Replace critical section APIs with spinlock APIs.
- (64bit only). If SMP=n or SMP=y && SPINLOCK_IRQ=n, this works
- in the same way as before. If SMP=y && SPINLOCK_IRQ=y, performance
- will be improved. From Masayuki Ishikawa.
- - POSIX Timers: Replace critical section APIs with spin lock APIs in
- clock_gettime.c. This change will improve performance for SMP
- systems but nothing changes for non-SMP systems. In SMP mode,
- the running TCB is not always at the g_readytorun.head. From
- Masayuki Ishikawa.
- - SMP: Introduce spin_lock_wo_note() and spin_unlock_wo_note(). These
- APIs are used in sched_note.c to protect instrumentation data. The
- difference between these APIs to exsiting spin_lock() and
- spin_unlock() is that they do not perform instrumentation to avoid
- recursive call when SCHED_INSTRUMENTATION_SPINLOCKS=y. From
- Masayuki Ishikawa.
- - Interrupts: Add a configuration option to show interrupt
- information via a procfs file.
- * File Systems/Block and MTD Drivers
- - VFS: Add support for truncate() and ftruncate().
- - FAT, SmartFS, UserFS, UnionFS, TmpFS, NFS: Add truncate() support.
- - FAT. Effectively handles the situation when a new file position is
- within the current sector. Accelerates the work of the FS with a
- multitude of operations to write small pieces of data within the
- current sector. From Aleksandr Vyhovanec.
- * Graphics/Display Drivers:
- - HiletGo OLED: Add configuration support for HiletGo SSD1306 OLED.
- - lcd/ft80x: This commit adds an FTDI/BridgeTek FT80x GUI driver. It
- is untested (I don't even have hardware yet) and, hence, it is
- marked as EXPERIMENTAL).
- * Networking/Network Drivers:
- - 6LoWPAN: Adds configuration options for specifying preloaded
- address contexts for compression From Anthony Merlino.
- - TCP: Introduce tcp receive window control based on I/O buffer.
- NOTE: The algorithm is still experimental but useful for http
- streaming. From Masayuki Ishikawa.
- - UDP: Add an implementation of UDP write buffering.
- - Routing Tables: Adding ftruncate() support eliminates an issue
- in file-based routing table management system.
- - Telnet: Add support for Telnet character mode From Masayuki
- Ishikawa.
- * Other Common Device Drivers:
- - drivers/input/ft5x06.c: Add a driver for the FT5x06 capacitive,
- multi-touch, touchscreen controller.
- - drivers/input/ft5x06: Add a polled mode of operation for the FT5x06
- in attempt to work around the fact that the LPCXpresso-LPC54628
- chose a non-interrupt pin for the FT5x06 interrupt. Driver is still
- not yet functional.
- - drivers/power/bq2429x.c: Add trickle charging mode From Juha
- Niskanen.
- - drivers/sensors: Add support to MAX44009 ambient light sensor.
- From Juha Niskanen.
- - drivers/sensors: Added support for LIS3DH accelerometer sensor.
- From Matt Thompson.
- - drivers/eeprom: EEPROM driver for AT24xx compatible EEPROMs.
- From Sebastien Lorquet.
- * Simulation
- - sim: Add support for a RAM MTD driver and initialization for use
- with SmartFS.
- - sim: Add support for testing NXFFS.
- * ARM:
- - ARMv7-A, ARMv7-R, ARMv7-M: Add atomic read-add-write and
- read-subtract-write functions.
- * Infineon XMC4xxx:
- - XMC4xxx: Refactor PLL setup, refactored PLL/CLK config, easier,
- checks for correctness, call go_os_start if STACK_COLORIZED, smarter
- config of EXTCLK output freq. From David Alessio.
- * Infineon XMC4xxx Boards:
- - Add FPU to xmc4 ostest. Remove +x from makefiles, preserve
- .gdbinit across make clean, add FPU support to ostest on xmc4,
- add FPU test to ostest on xmc4 From David Alessio.
- * Microchip/Atmel SAMD/L Drivers:
- - SAMD: SAMD External Interrupt Controller (EIC) support From Matt
- Thompson.
- - SAMD/L: Added Analog Comparator basic initialization From Matt
- Thompson.
- - SAMD/L: Added FDPLL clock support. Fixed sequence of OSC32K
- calibration setup. From Matt Thompson.
- - SAMD/L: Added loading factory USB calibration data from NVRAM.
- From Matt Thompson.
- - SAMD/L: Added experimental DMA support to SPI driver. spi_exchange()
- uses a pair of DMA channels for TX and RX. From Matt Thompson.
- * Microchip/Atmel SAM3/4 Boards:
- - Flip&Click SAM3X: Add board support for the Mikroe Flip&Click
- SAM3X.
- - Flip&Click SAM3X: Adds basic board support for the HiletGo OLED.
- * Microchip PIC32MZ
- - PIC32MZEF: Add architectural support for the PIC32MZEF family.
- * Microchip PIC32MZ Boards
- - Flip&Click PIC32MZ: Adds board support for the Mikroe Flip&Click
- PIC32MZ board.
- - Flip&Click PIC32MZ: Add board support for HiletGo OLED.
- - Flip&Click PIC32MZ: Add an nxlines configuration for use in
- testing the custom HiletGo Click board.
- * NXP Freescale LPC43xx Drivers:
- - LPC43xx: Adapt LPC176x RTC driver for the LPC43xx. From Gintaras
- Drukteinis.
- - LPC43xx: Add Windowed Watchdog Timer (WWDT) driver. Tested on
- LPC4357 but should be compatible for all LPC43xx MCUs.
- From Gintaras Drukteinis.
- - Leverage the LPC54xx SD/MMC back to the LPC43xx (where it came from
- originally).
- * NXP Freescale LPC43xx Boards:
- - Bambino-200e: Add LPC43 SDMMC board support to Bambino-200E. From
- Alan Carvalho de Assis.
- * NXP Freescale LPC54xx:
- - LPC546xx: Added basic architectural support for the LPC546xx
- family.
- * NXP Freescale LPC54xx Drivers:
- - LPC546xx: Basic NSH configuration includes support for UARTs,
- SysTick timer, GPIOs, LEDs, and buttons
- - LPC546xx: Additional drivers include EMC, I2C, Ethernet
- - LPC546xx: Implement GPIO interrupt support.
- - LPC546xx: And unverified SPI driver is included.
- - LPC546xx: Ported LPC1788 LCD driver to use the LPC54xx pin.
- - LPC546xx: Bring in LPC43xx SD/MMC driver from
- https://github.com/Smoothieware/smoothie-nuttx/tree/master/nuttx/arch/arm/src/lpc43xx
- and adapt for use with the LPC43xx
- - LPC546xx: Add DMA driver ported from the LPC43xx GPDMA driver.
- - LPC546xx: Bring in WWDT driver from LPC43.
- - LPC546xx: Add an RTC driver and a RTC character driver lower half.
- - LPC546xx: Add support for a random number generator.
- - LPC546xx: Add an Ethernet driver.
- * NXP Freescale LP54xx Boards:
- - LCXpresso-LPC54628: Added support for the LPCXpresso-LPC54628
- board. The initial bring-up used a basic NSH port.
- - LCXpresso-LPC54628: On-board SDRAM is also supported
- - LCXpresso-LPC54628: Add support for I2C2 and for the I2C tool to
- the NSH configuration.
- - LCXpresso-LPC54628: Add support for the USER button. Enable the
- apps/examples/button test in the NSH configuration.
- - LCXpresso-LPC54628: Add the fb configuration for testing the LCD.
- - LCXpresso-LPC54628: Add support for the the FT5x06 touchscreen
- controller. Enable the driver as well as the apps/examples
- touchscreen test.
- - LCXpresso-LPC54628: Add an NxWM configuration.
- - LCXpresso-LPC54628: Add logic to bring up SDMMC.
- - LCXpresso-LPC54628: Add logic to register the RTC character driver
- if it is enabled. Enable the RTC and RTC character driver in the
- NSH configuration.
- - LCXpresso-LPC54628: Add a netnsh configuration that was be used to
- test the Ethernet driver.
- - LCXpresso-LPC54628: Add LittlevGL graphics demo configuration.
- * On Semiconductor LC823450
- - LC823450 SMP improvements: (1) Apply irq_spin APIs to
- modifyregXX, (2) Do not use modifyreg32() to enable Mutex, (3)
- Modify IRQ control for i2s. Apply irq_spin APIs to
- dma/syscontrol/usbdev. From Masayuki Ishikawa.
- - LC823450: LC823450 http streaming improvements: (1) Use spinlock
- APIs in lc823450_gpio.c. (3) Fix a potential race condition in
- up_enable_irq(), (3) Use spinlock APIs instead of critical section
- APIs, (4) Enable HRT_TIMER in lc823450_timerisr.c. (5) Use spinlock
- APIs instead of critical section APIs. (6) Fix race conditions in
- dma/usbdev. From Masayuki Ishikawa.
- - LC823450: Introduce DVFS. This version only supports manual mode
- and Vdd1 is fixed to 1.2V. From Masayuki Ishikawa.
- * On Semiconductor LC823450 Drivers
- - LC823450: Refactor timer driver. Add MTM timer APIs for DVFS.
- Introduce up_rtc_gettime() for CONFIG_RTC_HIRES. Introduce idle
- time calculation in DVFS. Also, DVFS autonomous mode based on CPU
- idle time is supported. NOTE: voltage control is still disabled.
- From Masayuki Ishikawa.
- * On Semiconductor LC823450 Boards
- - LC823450-XGEVK: I2S interrupt will be handled on CPU0 with this
- change. Assign CPU1 to lpwork. This change will improve load
- balancing for networking with RNDIS. From Masayuki Ishikawa.
- - LC823450-XGEVK: Enable SPINLOCK_IRQ and NXPLAYER in rndis. From
- Masayuki Ishikawa.
- - LC823450-XGEVK: LC823450 http streaming improvements: (1) In SMP
- mode, H/W interrupts should be handled on CPU0 to avoid deadlocks.
- (2) Call up_enable_irq() to assign CPU0 for IRQ handling. (3)
- Enable HRT_TIMER, LC823450_MTM0_TICK, SPINLOCK_IRQ, (4) Enable
- NET_TCP_RWND_CONTROL, NXPLAYER_HTTP_STREAMING_SUPPORT (rndis only)
- From Masayuki Ishikawa.
- - LC823450-XGEVK: Enable DVFS in lc823450_bringup.c. Enable DVFS
- in audio and rndis. Add Telnet character mode to rndis. From
- Masayuki Ishikawa.
- - LC823450-XGEVK: Explicitly assign I2S IRQ handling to CPU0. From
- Masayuki Ishikawa.
- - LC823450-XGEVK: Enable RTC_HIRES instead of RTC_DATETIME (audio/
- rndis). Disable TCP_WRITE_BUFFERS and change SCHED_LPWORKPRIORITY
- (rndis). Update SMP and DVFS related part. From Masayuki Ishikawa.
- * STMicro STM32:
- - STM32 F7: Add support for the STM32F72x/73x family. From Bob
- Feretich.
- * STMicro STM32 Drivers:
- - STM32 HRTIM: Add interface to change outputs SET/RST configuration.
- From Mateusz Szafoni.
- - STM32 HRTIM: Add interface to get timer clock frequency,
- calculation, add compare/capture registers significant bits
- checking. From Mateusz Szafoni.
- - STM32 HRTIM: Add interface to set timer frequency, fix slave timers
- reset configuration, change POWER_INFO to TIMER_INFO From Mateusz
- Szafoni.
- - STM32 HRTIM: Add repetition support and fix enum overflow From
- Mateusz Szafoni.
- - STM32 HRTIM: Add HRTIM push-pull mode configuration. From
- raiden00pl.
- - STM32 FLASH: Add progmem support for STM32L15XX From Juha Niskanen.
- * STMicro STM32 Boards:
- - configs/photon: Adds BOARD_TIMn_FREQUENCY macros From Anthony
- Merlino.
- - configs/indium-f7: Adds support for the RAF Research Indium-F7
- board. From Bob Feretich.
- - Rename the configs/stm32f0discovery board directory to
- configs/stm32f051-discovery. There are others stm32f0discovery
- boards with different MCUs and different peripherals on the board.
- From Alan Carvalho de Assis.
- - configs/stm32f072b-discovery: Adds support for stm32f072b-disco
- board. This is the board. I added the LEDs of this board and tested
- the compilation. From Alan Carvalho de Assis.
- - configs/stm32f103-minimum: Add AT24 EEPROM support on STM32F103-
- Minimum board From Alan Carvalho de Assis.
- - configs/stm32f103-minimum: Add support to BMP180 on BluePill
- (stm32f103-minimum) board. From Alan Carvalho de Assis.
- - configs/stm32f334-disco: Add buck converter and boost converter
- logic. From Mateusz Szafoni.
- - configs/stm32f103-minimum: Add zerocross support to STM32F103-
- Minimum board From Alan Carvalho de Assis.
- - configs/stm32f103-minimum: Add OLED SSD1306 support to
- STM332F103-Minimum From Alan Carvalho de Assis.
- - configs/stm32f103-minimum: Add board support to MAX6675 Thermocouple
- sensor From Alan Carvalho de Assis.
- - configs/stm32f746g-disco: Add stm32f746g-disco Ethernet configuration.
- Add USART1 support (connected to the USB virtual serial port) From
- Louis Mayencourt.
- - configs/viewtool-stm32f107: Add support for FT80X initialization.
- Add ft80x configuration that will eventually be used for testing the
- ft80x if I ever receive hardware.
- * Tools:
- - tools/logparser: Add a tool which will help me to convert git logs
- to ChangeLog format.
- * NSH: apps/nshlib:
- - apps/nshlib: Add support for a truncate command. This will be used
- to test the new ftruncate file system support.
- - apps/nshlib: Add support for Telnet character mode. From Masayuki
- Ishikawa.
- - apps/nshlib: Add support for '-n' option to the echo command. From
- Masayuki Ishikawa.
- - apps/nshlib: Add irqinfo command.
- * Examples/Tests: apps/examples:
- - apps/examples/userfs: Add truncate() support for userfs.
- - apps/examples/lvgldemo: Add lvgldemo example for LittlevGL.
- - apps/examples/veml6070: Add VEML6070 Application Example. From
- Alan Carvalho de Assis.
- - apps/examples/bmp180: Add BMP180 application example. From Alan
- Carvalho de Assis.
- - apps/examples/ft80x: Add a test of the FT80x based on FTDI
- SampleApp. Includes tests of GPU primitives and graphics co-
- processor commands.
- * Network Utilities: apps/netutils:
- - apps/netutils/netlib: Add default route in netlib_set_dripv4addr().
- From Masayuki Ishikawa.
- * Graphics: apps/graphics:
- - apps/graphics/littlevgl: Add littlevgl library. From Alan Carvalho
- de Assis.
- - apps/graphics/ft80x: Add the FTDU FT80x GUI support library.
- Consists of some display list helpers, audio helpers, touch helpers,
- RAM access, register access etc.
- * System Utilities (apps/system)
- - apps/system/nxplayer: Add support for HTTP streaming in nxplayer.
- From Masayuki Ishikawa.
- - apps/system/setlogmask: Adds 'setlogmask' application that allows
- you to set the syslog priority via a simple command. From Anthony
- Merlino.
- - apps/system/usbmsc: Added Kconfig options to configure write
- protection for each LUN. From Fabio D'Urso.
- - system/stackmonitor: Re-design the stack monitor so that it does not
- make forbidden calls directly into the OS, breaking the portable POSIX
- OS interface. It now properly uses the PROCFS file system to glean
- information about stack usage.
- Bugfixes. Only the most critical bugfixes are listed here (see the
- ChangeLog for the complete list of bugfixes and for additional, more
- detailed bugfix information):
- * Core OS:
- - System Timer: Change the way that the 64-bit time is sampled.
- Previously, we disabled interrupts before sampling the 64-bit
- timer since the uint64_t access is not atomic on most CPUs. However,
- disabling (local) interrupts does not work in the SMP case. In that
- case, the timer interrupt may be running on only one of the CPUs;
- disabling interrupts on a different CPU will provide no protection
- from timer rollover. To work around this, logic was added that
- samples 64-bit timer is sampled twice and if 32-bit rollover was
- detected between samples, then loops until there is no rollover.
- - POSIX Timers: In SMP mode, running TCB is not always at the head of
- the g_readytorun list. This change removes DEBUGASSERT() to avoid
- this condition. From Masayuki Ishikawa.
- - Spinlocks: Add memory barrier operations in spin_unlock(). In ARM
- document regarding memory barriers, SP_DMB() must be issued before
- changing a spinlock state to SP_UNLOCKED. However, we found that
- SP_DSB() is also needed to ensure that spin_unlock() works
- correctly for network streaming aging test. From Masayuki Ishikawa.
- - Sporadic Scheduler: Fix compiler error in Sporadic Scheduler when
- priority inheritance is enabled. Noted by eunb.song@samsung.com
- - Priority Inheritance: Fix some priority inheritance related issues
- noted during review of logic. Also add some REVISIT comments for some issues noted in the design.
- - boardctl: Remove the BOARDIOC_TSCTEST_TEARDOWN and
- BOARDIOC_TSCTEST_SETUP boardctl() commands. Remove all
- implementations of board_tsc_teardown(). Each board now initializes
- the touchscreen controller as a normal part of its board bring-up.
- board_tsc_setup() is gone; the touchscreen controller is now treated
- like any other on-board device.
- - configs: CONFIG_MAX_TASKS must be a power of 2.
- - SMP: Introduce a new global IRQ clearing logic and tasklist
- protection. The previous implementation of clearing global IRQ in
- sched_addreadytorun() and sched_removereadytorun() was done too
- early. As a result, nxsem_post() would have a chance to enter the
- critical section even nxsem_wait() is still not in blocked state.
- This patch moves clearing global IRQ controls from
- sched_addreadytorun() and sched_removereadytorun() to
- sched_resumescheduler() to ensure that nxsem_post() can enter the
- critical section correctly. For this change,
- sched_resumescheduler.c is always necessary for SMP configuration.
- In addition, by this change, task_exit() had to be modified so that
- it calls sched_resumescheduler() because it calls
- sched_removescheduler() inside the function, otherwise it will cause
- a deadlock. However, I encountered another DEBUGASSERT() in
- sched_cpu_select() during HTTP streaming aging test on LC823450-XGEVK.
- Actually sched_cpu_select() accesses the g_assignedtasks which might
- be changed by another CPU. Similarly, other tasklists might be
- modified simultaneously if both CPUs are executing scheduling logic.
- To avoid this, I introduced tasklist protection APIs. With these
- changes, SMP kernel stability has been much improved. From Masayuki
- Ishikawa.
- - SMP: Fix this_task() to be an atomic operation. In the previous
- implementation, this_task() was defined in sched.h by using just a
- macro current_task(this_cpu()). However, I found that this is not
- atomic and actually sometimes switching CPU happened in executing
- the macro when we tested audio steaming plus executing commands via
- Telnet. This change resolves this issue by implementing atomic
- this_task()in sched_thistask.c which is newly introduced. From
- Masayuki Ishikawa.
- - SMP: Implements a global scheduler lock capability as part of SMP
- support. This allows the scheduler to be locked with no knowledge
- or access to the TCB of the currently running task. This is
- necessary because accessing the TCB of the currently running task
- is, itself, a non-atomic operation. This global scheduler lock
- capability was add just to support that atomic access to the TCB.
- - SMP: Extend the last global lock change to work with the
- LC823450-XGEVK which does not support the atomic fetch add but
- does support disabling interprocessor interrupts. Disabling
- interprocessor interrupts will also guarantee that the TCB address
- calculation is atomic.
- - SMP: Fix a infinite recursion problems that a recent changes
- introduced into the i.MX6 SMP implementation. This is not seen
- with the LC823450 because you can disable inter-processor interrupts
- in that architecture; but you cannot in the ARMv7-A/GIC architecture.
- - SMP: Remove SMP related logic in sig_dispatch.c. This change
- prevents from a deadlock in up_schedulesigaction.c where inter-CPU
- signal handling is actually implemented. arch/arm/src/armv7-m: Fix
- signal handling for SMP. In previous implementation, signal handling
- for SMP was incorrect. Thus, for example, if an inter-CPU signal
- happened an incorrect tcb was signaled and caused ASSERT(). This
- change fixes the issues and works for both inter-CPU signal handling
- and signal handling on the same CPU. From Masayuki Ishikawa.
- - Tasking: Add nxtask_create(). Kthread_create() and nxtask_create()
- are internal OS functions and should not modify the errno variable.
- Convert legitimate uses of task_create() to nxtask_create().
- Review handling of returned values from all uses of kthread_create()
- (as well as nxtask_create()).
- - Tasking: Threads started by board bring-up logic should be kernel
- threads, not user tasks.
- - Tasking: Threads started by drivers should be kernel threads, not
- user tasks.
- - Semaphore Usage: Added ECANCELED condition to DEBUGASSERT's
- checking sem_wait result From Dmitriy Linikov.
- - errno: Add new internal OS function nxsched_setaffinity() that is
- identical to sched_isetaffinity() except that it does not modify the
- errno value. All usage of sched_setaffinity() within the OS is
- replaced with nxsched_setaffinity().
- - errno: Internal functions sched_reprioritize() and
- sched_setpriority() no longer modify the errno value. Also renamed
- to nxsched_reprioritize() and sched_setpriority().
- - errno: Add new internal OS function nxsched_getscheduler() that is
- identical to sched_getscheduler() except that it does not modify the
- errno value. All usage of sched_getscheduler() within the OS is
- replaced with nxsched_getscheduler().
- - errno: Add new internal OS function nxsched_setparam() that is
- identical to sched_setparam() except that it does not modify the
- errno value. All usage of sched_setparam() within the OS is
- replaced with nxsched_setparam().
- - errno: Add new internal OS function nxsched_getparam() that is
- identical to sched_getparam() except that it does not modify the
- errno value (actually, the previous value erroneously neglected to
- set the errno value to begin with, but this fixes both issues). All
- usage of sched_getparam() within the OS is replaced with
- nxsched_getparam().
- - errno: wd_start() is an internal OS function and should not set the
- errno value. Reviewed and updated every call to wd_start() to
- verify if return value is used and if so if the errno value is
- accessed.
- - errno: Fix several inappropriate accesses to get_errno() that were
- missed in previous changes (some going back to nuttx-7.23). Add new
- nxsched_setscheduler() and nxsched_getaffinity() which are
- equivalent to their counterparts without the nx on front. These
- versions do not modify the errno value. Changed all calls within
- the OS to use these newer versions of the functions.
- - errno: binfmt/, configs/, grahics/, libc/, mm/, net/, sched/: OS
- references to the errno variable should always use the set_errno(),
- get_errno() macros.
- - drivers/, fs/ and libc/: OS references to the errno variable should
- always use the set_errno(), get_errno() macros.
- * File System/Block and MTD Drivers:
- - FAT: CONFIG_FAT_MAXFNAME may not exceed NAME_MAX (CONFIG_NAME_MAX)
- - NFS: Correctly infer file type. The file type is in struct
- nfs_statinfo_s's ns_type field, not in the ns_mode field. From
- Michael Jung.
- - NFS: Fix buffer corruption. In case multiple read requests to the
- NFS server are required to fill up the user provided buffer,
- nfs_read() might write behind the end of said buffer. This is fixed
- with this change. From Michael Jung.
- - VFS: reopen() should return NULL when oflags is less than 0, not
- equal to 0. Because negative value is returned on failure of
- lib_mode2offlags() which converts the mode string into file open
- mode flag.
- - ProcFS: Fix an error in a common function that manages read data.
- - drivers/mmcsd: Respect SDIO_CAPS_DMABEFOREWRITE on CMD25. From
- Evgeniy Bobkov.
- - AT24xx: Correct page size for AT24C02 part. From Alexander
- Oryshchenko.
- - mtd_config.c: Add still more error handling (to detect bad
- underlying flash implementations). Remove MTD_ERASE that was
- erasing data block instead of erase block. This is a partial
- revert of 4f18b4. Reported-by: Pascal Speck <iktek01@yahoo.com>
- * Graphics/Display Drivers:
- - drivers/lcd: Fix the default I2C address of SSD1306 OLED display
- (7- vs 8-bit addressing) From Alan Carvalho de Assis.
- - drivers/lcd: lcd_framebuffer.c does not need to include board-
- specific board.h.
- - include/lcd: Eliminate a warning from an SSD1306 header file by
- adding a forward reference to struct i2c_master_s. From Sebastien
- Lorquet.
- * Networking/Network Drivers:
- - ARP: Fix an error introduced when ICMP and ICMP6 socket support was
- added in NuttX-7.3. A gratuitous ARP (or solicitation) was being
- sent after receive of the ECHO replay (advertisement).
- - ARP: Fix IGMP multicast address computation on Nuttx network stack.
- This change fixes the IGMP address computation to allow multicast
- UDP messages. The destination address was created with the incorrect
- bytes of the given IPv4 address. From Louis Mayencourt.
- - ioctl: The existence of the network driver ioctl() method should
- depend on CONFIG_NETDEV_IOCTL rather than CONFIG_NETDEV_PHY_IOCTL.
- The former enables the method, the later enables a subset of
- possible driver IOCTLs.
- - TCP: Write buffering logic should not wait for a free buffer if
- the socket was opened non-blocking.
- - TCP: Fixed bad return value handling in psock_tcp_send(). send()
- expects psock_tcp_send() to return a negated errno value, not -1
- with the errno set (GN: I added same change for tcp_send_buffered.c
- which has the same issue as tcp_send_unbuffered.c) From Pelle
- Windestam.
- - TCP: Fixes hardfault when network goes done and network monitoring
- is in place. From Gianpaolo Ferroni Ariani.
- - TCP: tcp_send_[un]buffered.c: Check routing table in
- psock_send_addrchck(). Previously only ARP table was considered
- when determining if the data will actually be sent. From Juho
- Grundstrom.
- - TCP: Generalize Juho Grundstrom's IPv4 change for IPv6 as well.
- - UDP: Remove some conditional logic that was true if there is only a
- single network device, but not true in the multi-device context.
- - UDP: In sendto(), return EHOSTUNREACH if the network is down.
- * Common Drivers:
- - drivers/pipes: In poll logic, fix off-by-one error in calculation
- of bytes in the buffer. Buffer calculation in pipe poll setup is
- off-by-one when read index is larger than write index. This causes
- poll() not getting POLLIN when buffer has one byte as calculation
- gives zero bytes in buffer. From Jussi Kivilinna.
- - drivers/audio: Improve stability of the WM8776 driver in SMP mode.
- Apply irq_spin APIs to improve performance. Repeat to process a
- message to avoid deadlock. From Masayuki Ishikawa.
- - drivers/ioexpander: Fixed build of PCF8574 driver when its
- interrupts aren't enabled by config. From Dmitriy Linikov.
- - drivers/syslog: Fixes LOG_UPTO macro to include specified log level.
- From Anthony Merlino.
- - drivers/sensors: Fix HTS221 sensor reset with BOOT bit From Jussi
- Kivilinna.
- - drivers/loop: If we want to open read-only in losetup.c, flags
- should be O_RDONLY not O_RDWR. From Fabio D'Urso.
- - drivers/timers/ds3231.c: Correct some debug statements. From
- Alexander Oryshchenko.
- - drivers/sensors/lis2dh: Use realtime clock if monotonic is not
- available From Juha Niskanen.
- - drivers/i2c and drivers/spi: Fix compile error if
- CONFIG_DISABLE_PSEUDOFS_OPERATIONS, fix bad NULL checks From Juha
- Niskanen.
- * ARMv7-A:
- - Data Cache: Fix cp15_invalidate_dcache. In cases where more than
- one dcache line was to be invalidated, a missing branch label
- would result in a false branch target into cp15_flush_idcache. Also
- the .size macro was fixed for both cp15_invalidate_dcache. From
- Michael Jung.
- - SMP: Port the signal-related SMP change by Masayuki Ishikawa to the
- ARMv7-A family.
- * Extensa:
- - SMP: Port the signal-related SMP change by Masayuki Ishikawa to the
- Xtensa family.
- * Infineon XMC4xxx Drivers:
- - XMC4xxx: Only setup USB clock when USB PLL is enabled From Alan
- Carvalho de Assis.
- - XMC4xxx: Fix USIC_BRG_SCLKCFG definition From Alan Carvalho
- de Assis.
- * Microchip PIC32MZ
- - MIPS32: In up_idle, the kludge that was conditionally enabled if
- the work queue was enable appears to be needed even when he work
- queue is not enabled on the PIC32MZ.
- - PIC32MZ: Fix some typos in debug instrumentation in pic32mz-gpio.c;
- fix some typos related to UART5 configuration in pic32mz-serial.c.
- * Microchip/Atmel SAMD/L:
- - SPI: In sam_spibus_initialize(), the pinmux configuration was
- smashing the previous CTRLA register configuration. There are
- also some typos in samd_spi.h From Matt Thompson.
- - SPI: Fixes g_spi2ops and g_spi2dev using incorrect values From Matt
- Thompson.
- - SPI: SPI must be disabled before changing the mode bits in CTRLA
- register From Matt Thompson.
- - DMA: Fix DMA controller support. From Matt Thompson.
- * NXP/Freescale LPC17xx Drivers:
- - LPC17xx: Disable LPC17 FDR when not used. If a boot loader set the
- fractional divider (FDR) the baud rate in nuttx will be wrong
- (multiplied by this fraction). So if it is not used, it should be
- disabled. From Harald Gutsche.
- * NXP/Freescale Kinetis Drivers:
- - Kinetis: Correct some Ethernet PHY register bit tests for the
- KSZ8081 PHY. From Stewart.
- * On Semiconductor LC823450
- - arch/arm/src/LC823450: Add SP_DMB() into lc823450_testset.c.
- In LC823450, ldrex and strex are not supported. So we implemented
- up_testset() with H/W Mutex. However, there was a bug in memory
- access order. This change ensures correct memory access order in
- up_testset() for LC823450. From Masatoshi Tateishi.
- * STMicro STM32 Drivers:
- - STM32 F3 RCC: A flash wait state configuration. Flash latency must
- be fixed according to sysclk frequency. If this operation is not
- done or done after PLL configuration, the STM32 fail to continue
- boot operation if the frequency if greater than 24MHz according to
- the board variable STM32_SYSCLK_FREQUENCY. Tested on stm32f334-disco
- board. From Gwenhael Goavec-Merou.
- - STM32 RTC: Make STM32 usable with an external RTC.
- - STM32 SPI: Removed unnecessary (and incorrect) speed limitation.
- From Alexander Oryshchenko.
- - STM32 SPI: I have a SPI bus with both Mode 0 and Mode 3 devices
- on it. After performing SPI I/O to a Mode 0 device, switching to a
- Mode 3 device locked up the SPI interface. Only zeroes would be
- read. I traced the reason for the lock-up to arm/arm/src/stm32f7/stm32_spi.c function spi_setmode(). Changing
- the mode causes a spurious SPI clock transmission that confuses the
- stm32f7 SPI input hardware. This problem is solved by (1) changing
- the SPI mode with SPI (and perhaps DMA) disabled, and (2) flushing
- the receive FIFO if the mode change results in garbage in the FIFO.
- From Bob Feretich.
- - STM32 and STM32 F7: Remove confusing, redundant, and misleading
- definitions of STM32_BKP_BASE from the F2, F3, and F4 memory
- maps. Unlike the F1, these parts do not have a separate BKP address
- region. The BKP registers are with the RTCC address regions.
- stm32_bkp.h should only be used for STM32 F1. stm32_rtcc.h should be
- used to access BKP registers on F2, F3, and F4.
- - STM32 and STM32 F7: Architecture-specific code is not permitted to
- modify the errno variable.
- - STM32 F4 I2C: Correct some recent changes to STM32F4 I2C that broke
- poll mode of operation. From Alexander Oryshchenko.
- - STM32 F4 I2C: Corrections to STM32 F4 I2C to restore functionality.
- From Alexander Oryshchenko.
- - STM32 F4 I2C: Corrections to STM32 F4 I2C to fix the NORESTART
- flag. From Alexander Oryshchenko.
- - STM32 F7: Fixes a bug in multi-block SD-card operations on the
- STM32F7 platform. DBLOCKSIZE must be the size of SD-card block, not
- the total amount of transferred bytes. From Evgeniy Bobkov.
- - STM32 F7: Fix undefined variable when using USART1 for other
- purposes than UART (e.g. SPI). From Frank Benkert.
- - STM32 F7: Backport RTC alarm setting changes from STM32L4. Most
- notably this fixes RTC getting stuck issue when both alarms were
- used. Root cause was writing RTC ISR register contents to RTC CR
- register. From Juha Niskanen.
- - STM32 L4 Flash: Change flash programming to use page buffer for
- unaligned writes. From Juha Niskanen.
- * STMicro STM32 Boards:
- - Nucleo-L432KC: Fix some bogus logic noted by Fanda.
- - configs/nucleo-* and configs/stm32l476vg-disco: Fix more
- stm32_userleds.c bogus logic From Juha Niskanen.
- - Nucleo-L432KC: Fixed nucleo-l432kc broken build when
- CONFIG_USERLED_LOWER defined From Fanda.
- - Nucleo-L432KC: Issue #85: /dev/userleds is not working for
- Nucleo-L432KC fixed From Fanda Vacek.
- - STM32F429I-Disco: Separate SPI4 from MTD init. I was trying to
- attach a non-MTD peripheral to an STM32F429I Discovery Board's SPI4
- port and was hitting compilation problems, since CONFIG_MTD and
- thus 'struct mtd_geometry_s' was not defined. This patch separates
- SPI4 initialization logic from MTD initialization logic. From
- Michael Jung.
- - STM32F103-Minimum: Remove CONFIG_NX_LCDDRIVER dependence from
- stm32_ssd1306.c From Alan Carvalho de Assis.
- * C Library/Header Files:
- - libc/stdio: In dtoa(), up_interrupt_context() is used in a debug
- assertion. up_interrupt_context() is not available in the user-mode
- phase of the PROTECTED or KERNEL build configurations. In those
- configurations, enabling libc floating point support and debug
- assertions will result in an undefined reference to
- up_interrupt_context().
- - libc/netdb: Fixed parsing of DNS response packets having compressed
- names ending with pointer. There were troubles parsing response
- packets which have compression of QNAME/NAME field when only
- trailing part of the name (not the whole name) is replaced with
- pointer to another part of the packet. This commit fixes parsing of
- such packets. Also I added checks to keep parsing only in bounds of
- the read part of DNS response packet. From Dmitriy Linikov.
- * Tools
- - tools/*.c: Add #define _GNU_SOURCE to all C files that call
- asprintf() to eliminate a warning.
- - tools/cvsparser.c: Add a check to avoid access past the end
- of a fixed size array
- * NSH: apps/nshlib:
- - apps/nshlib: Fix compile error when CONFIG_NSH_DISABLESCRIPT is not
- defined. The field np_flags does not exist if scripting is disabled.
- * Examples/Tests: apps/examples:
- - apps/examples/touchscreen: Eliminate BOARDIOC_TSCTEST_SETUP.
- * Network Utilities: apps/netutils:
- - apps/netutils/ftpc: Fix some corner-cases that could cause FTP to
- access past the end of valid data.
- * Wireless Utilities: apps/wireless:
- - apps/wireless/ieee802154/i8shark: Fixes special XBee compensation
- by purposely chopping off the FCS. From Anthony Merlino.
- NuttX-7.25 Release Notes
- ------------------------
- The 125th release of NuttX, Version 7.25, was made on June 3, 2018,
- and is available for download from the Bitbucket.org website. Note
- that release consists of two tarballs: nuttx-7.25.tar.gz and
- apps-7.25.tar.gz. These are available from:
- https://bitbucket.org/nuttx/nuttx/downloads
- https://bitbucket.org/nuttx/apps/downloads
- Both may be needed (see the top-level nuttx/README.txt file for build
- information).
- Additional new features and extended functionality:
- * File Systems/Block and MTD Drivers
- - fs/cromfs: Added CROMFS file system. CROMFS is a commpressed, in-
- memory, read-only file system based on LZF.
- - fs/vfs: Added support for checking if a descriptor is a socket in
- fstat(). From Pelle Windestam.
- * Graphics/Display Drivers:
- - drivers/lcd: Remove support for the Nokia6100 LCD. That LCD uses a
- 9-bit SPI interface (the 9th bit being the command/data bit that is
- normally a discrete). That communication was never successfully
- integrated. I now believe that it would would require some special
- support from the low-level, MCU SPI driver to manage that 9th bit.
- The deleted code is still available in the Obsoleted repository.
- * Networking/Network Drivers:
- - net/tcp: Added support for TCP Keepalive, add SO_KEEPALIVE socket
- option. Added socket options needed to manage TCP-keepalive and TCP
- state machine logic to detect if that the remote peer is alive.
- - net/tcp: In tcp_input(), add the logic to detect, decode, and
- respond to TCP Keep-Alive packets.
- - net/tcp: Extended support for sending to non-blocking tcp sockets.
- From Pelle Windestam.
- - net/bluetooth: Added support for AF_BLUETOOTH sockets.
- - drivers/net: Added TAP (network bridge) mode to tun.c. In the
- previous implementation, TAP mode did not handle a packet correctly.
- Also, the driver did not set the link layer type and could not
- assign the interface name. This change fixes such issues and supports
- TAP mode correctly. From Masayuki Ishikawa.
- * Wireless/Wireless Drivers:
- - wireless/ieee802154: Added basic MAC support for RX-ENABLE.request
- primitive From Anthony Merlino.
- - wireless/ieee802154: Added MAC ackreq flag to TX descriptor for use by
- radio driver. The radio layer is responsible for a full "transaction".
- Because of differences in radio capabilities, the radio must be
- responsible for the handling of acks and retransmissions. This commit
- simply passes the ackreq meta-data flag along to the radio. Also
- Fixes bug where primitive was freed when it shouldn't have been,
- causing double free call. From Anthony Merlino.
- - wireless/bluetooth: Bring in the Bluetooth stack from the Intel/
- Zephyr arduino101_firmware_source-v1.tar package.
- - drivers/bluetooth: Added re-architected version of the Bluetooth
- UART driver from the Intel/Zephyr arduino101_firmware_source-v1.tar
- package.
- - include/nuttx/wireless: Added a setbaud() method to the HCI UART
- lower half interface that can be used to change the default BAUD
- selection.
- - wireless/bluetooth and include/nutt/net: Added support for Bluetooth
- IOCTL commands.
- - drivers/wireless/bluetooth: Added a NULL device to support some very
- low level testing on the Simulator.
- - drivers/wireless/cc3000: Eliminate support for the CC3000 wireless
- part because it doesn't use the USRSOCKET. From Alan Carvalho de
- Assis.
- - drivers/wireless/ieee80211: Added BCM43428 support. From hhuysqt.
- * Other Common Device Drivers:
- - drivers/1wire: Added 1-wire subsystem and ds28e17 driver From Juha
- Niskanen.
- - drivers/1wire: Added PM hooks and unlink support to sht21 sensor
- (allowing hot-swappable I2C bus from 1-wire converter). Unlike most
- other unlink implementations in NuttX drivers, this one does not
- allow any I2C operations after unlink, making it possible to
- deallocate the I2C bus. From Juha Niskanen.
- - drivers/i2c: Added support for the pca9540bdp i2cmultiplexer. From
- Giorgio Groß.
- - drivers/power: Added pm_unregister From Juha Niskanen.
- - drivers/power: Added generic upper-half motor driver From Mateusz
- Szafoni.
- - drivers/rgbled: Added support for multichannel PWM (multiple PWM
- channels on a single timer) From Anthony Merlino.
- - drivers/sensors: Added support for Sensirion SHT2x humidity sensor.
- From Juha Niskanen.
- - drivers/sensors: Added LSM330 SPI and ADXL372 drivers along with the
- - drivers/sensors: Added support for INA3221 power sensor. This has a
- 3 channel bus/shunt voltage pairs. From Anthony Merlino.
- cluster driver infrastructure. From Bob Feratich.
- - drivers/sensors: Added multiple MAX31855 sensors feature support.
- From Tiago Almeida.
- - drivers/wireless/cc1101.c: Driver improvements from from lihaichen.
- - progmem interface: Discern r/w and erase page sizes. Introduce new
- up_progmem_erasesize architecture API to be able to communicate the
- read/write page size independently from erase page size. Implement
- up_progmem_erasesize for all architectures that already support
- progmem, assuming that for those architectures the sizes of both
- read/write and erase pages are identical. From Michael Jung.
- * Simulation
- - configs/sim: Added a configuration that will support some limited
- testing of the Bluetooth stack.
- * ARM:
- - ARM: All ARM architectures now support CONFIG_ARCH_IDLE_CUSTOM.
- * MIPS:
- - MIPS: All MIPS architectures now support CONFIG_ARCH_IDLE_CUSTOM.
- * Infineon XMC4xxx Drivers:
- - XMC4: Added SPI support for Infineon XMC45xx microcontroller. From
- Alan Carvalho de Assis.
- * Infineon XMC4xxx Boards:
- - XMC4500-Relax: Added board support for SPI. From Alan Carvalho de
- Assis.
- * Nordic NRF52:
- - NRF52: Initial support for the NRF52 including UART, Timer, and
- GPIO support. From Janne Rosberg.
- * Nordic NRF52 Drivers:
- - NRF52: Added watchdog timer drivers. Includes significant
- updates from Levin Li.
- - NRF52: Added nRF52 Flash PROGMEM support From Alan Carvalho de
- Assis.
- * Nordic NRF52 Boards:
- - configs/nrf52-pca10040: Added support for the NRF52-PCA10040 board
- including LEDs and buttons From Janne Rosberg.
- - configs/nrf52-pca10040: Added support for starting the watchdog
- timer on the nRF52. From Alan Carvalho de Assis.
- - configs/nrf52-pca10040: Added a configuration for testing the
- watchdog timer. From Alan Carvalho de Assis.
- * NXP Freescale i.MX RT:
- - i.MX RT: Brings in basic support for the i.MX RT 1050 'crossover'
- SoC. Includes timer and UART support. This port was the joint
- effort of Janne Rosberg, Ivan Ucherdzhiev, and myself. I give
- credit to Ivan for the kill because he is the one to held on to
- the end. From Ivan Ucherdzhiev.
- * NXP Freescale i.MX RT Drivers:
- - i.MX RT: Added power management hooks.
- - i.MX RT: Added eDMA support (unverified).
- - i.MX RT: Added Ethernet driver. From Jake Choy.
- - i.MX RT: Added cache operations to permit the Ethernet driver to
- work with the D-Cache enabled, at least in write-through mode.
- Added support for PHY interrupts and PHY IOCTLs.
- * NX FreescaleP i.MX RT Boards:
- - IMXRT1050-EVK: Added support for booting from the on board HYPER
- Flash. From Ivan Ucherdzhiev.
- - IMXRT1050-EVK: Added logic to support the board's user LED. From
- Jake Choy.
- - IMXRT1050-EVK: Added procfs auto-mount support in imxrt_bringup.c.
- From Ivan Ucherdzhiev.
- - IMXRT1050-EVK: Added LIBCXX test configuration.
- - IMXRT1050-EVK: Added support for the imxrt1050-evk button. From
- Jake Choy.
- - MXRT1050-EVK: Added support for on-board NOR FLASH boot. From
- Ivan Ucherdzhiev.
- - IMXRT1050-EVK: Disable LED support because pins conflict with PHY.
- Enable device statistics. Enable NSH ifup and ifdown commands.
- Added an NSH configuration for testing Ethernet.
- * NXP Freescale Kinetis:
- - K28F: Added architecture support for the Kinetis K28F.
- * NXP Freescale Kinetis Drivers:
- - SDHC: Make Kinetis SDHC pullups work the same as the STM32 SDIO
- pullups.
- * NXP Freescale Kinetis Boards:
- - Freedom-K28F. Added support for the Kinetis Freedom-K28F board.
- * NXP LPC17xx:
- - LPC17xx: Added support for ARMv7-M run time stack checking on NXP
- LPC17xx MCUs based on CONFIG_ARMV7M_STACKCHECK. Basically copied
- from STM32. From Michael Jung.
- * NXP LPC17xx Drivers:
- - LPC17xx: Added a configurable option to allow using a part of
- LPC17xx's internal flash memory as a Memory Technology Device via
- NuttX' mtd_progmem infrastructure. Tested with LPC1769. From
- Michael Jung.
- * NXP LPC17xx Boards:
- - Olimex-LPC1766STK: Remove support for the Nokia6100 LCD. That
- LCD uses a 9-bit SPI interface (the 9th bit being the command/data
- bit that is normally a discrete). That communication was never
- successfully integrated.
- * NXP LPC43xx Boards:
- - configs/bambino-200e: Added support for multiple MAX31855 sensors
- to the bambino-200e. From Tiago Almeida.
- * OpenRISC
- - arch/or1k/src. Added basic architectural support for the OpenRISK
- mor1kx architecture. The initial commit was verified on a Qemu
- simulation but is otherwise untested. From Matt Thompson.
- * OpenRISC Board
- - configs/or1k. OpenRISK mor1kx Qemu simulation. From Matt Thompson.
- * STMicro STM32:
- - STM32: Added support for the STM32F401xB and STM32F401xC families.
- * STMicro STM32 Drivers:
- - STM32 HRTIM: Added HRTIM software capture trigger, added software
- reset trigger, added outputs polarization configuration From
- raiden00pl.
- - STM32 ADC: Added ADC injected channels configuration. From Mateusz
- Szafoni.
- - STM32 HCIUART: Added a Bluetooth HCI UART lower half driver for the
- STM32.
- - STM32 HCIUART: Implement the setbaud() method for the STM32 HCI
- UART interface.
- - STM32 SDIO: Added support for SDIO card to SDIO driver. From
- hhuysqt.
- - STM32 SDIO: Added internal pull-up option for SDIO pins. From Alan
- Carvalho de Assis.
- - STM32 F2/F4 ADC: Added Vbat measurement to ADC driver for
- STM32F20xx and STM32F4xxx. As with the MCU temperature and VREFINT
- measurement, this change requires user to enable the corresponding
- channel first. For Vbat channel the ioctl cmd is
- IO_ENABLE_DISABLE_VBAT_CH, and its arg should be a pointer to bool
- which must be true to enable and false to disable the Vbat channel.
- Moreover, since Vbat input contains a built-in voltage divider, it
- is highly suggested to disable Vbat input channel after measurement
- is done in order to prevent battery drain through the divider. From
- Dmitriy Linikov.
- - STM32, STM32L4 1WIRE: Added one bit read and write to 1-wire
- interface. This is needed for devices that require single bit
- timeslot generation and for 1-Wire search algorithm triplets. From
- Juha Niskanen.
- - STM32 F3 SPI: Enable DMA for SPI on stm32f30xxx MCUs. From Michal
- Lyszczek.
- - STM32 L4 1WIRE: Ported 1wire driver from STM32. From Juha
- Niskanen.
- - STM32 L4 I2C/SPI/1WIRE: Added PM hooks to I2C, SPI and 1-wire From
- Juha Niskanen.
- - STM32 F7 RTC: Added CONFIG_RTC_PERIODIC support. Also makes the RTC
- lowerhalf more like in STM32L4. From Juha Niskanen.
- - STM32 F7 ADC/I2C/SPI: Added PM hooks to ADC, I2C and SPI. From
- Juha Niskanen.
- * STMicro STM32 Boards:
- - Indium-F7: Removed support for the Indium-F7 board. This was done
- for two reasons: (1) The board support was just clone of the
- Nucleo-144 board support with naming changes. There has been no
- support and no further development for the board support. (2) There
- does not seem to be any available Indium-F7 board available to the
- public anywhere on the Internet. There is not even a reference to
- the board on the rafresearch.com web stie.
- - Nucleo-L452RE: Added buttons example From Juha Niskanen.
- - Nucleo-L476RG: Added support to Nokia LCD PCD8544 on nucleo-l476rg.
- From Alan Carvalho de Assis.
- - Nucleo-L476RG: Added nxdemo configuration to nucleo-l476rg using
- PCD8544. From Alan Carvalho de Assis.
- - Olimex-STM32-P407: Added a zmodem test configuration.
- - Olimex-STM32-P407: Added the module configuration.
- - Photon: Added RGB led support From Anthony Merlino.
- - STM32F103-Minimum: Added support for DFU bootloader From Simon
- Piriou.
- - Spark: Removes Spark board configuration. Still available in the
- Obsoleted repository. If there is no CC3000 support, then there is
- no purpose in supporting the Spark either.
- - STM32F334-Disco: Added buck/boost converter example configuration.
- From Mateusz Szafoni.
- - STM32F4 Discovery: Added support for multiple MAX31855 sensors to the
- STM32F4 Discovery From Tiago Almeida.
- - STM32F4 Discovery: Added support in bring-up logic to initialize the
- HCI UART and register the HCI UART network device.
- - STM32F4 Discovery: Added MAX7219 support to STM32F4Discovery board.
- From Alan Carvalho de Assis.
- - STM32F4 Discovery: Added board configuration for CS43L22 audio
- example. From Alan Carvalho de Assis.
- - STM32F4 Discovery: Added a module configuration for testing the
- kernel module example with the STM32F4Discovery board. From Alan
- Carvalho de Assis.
- - STM32F429I-DISCO: Added a LittlevGL configuration for stm32f429i-
- disco. From seyyah.
- - STM32F746G-DISCO. Added clang support to stm32f746g-disco board.
- From Goran Mekic.
- - STM32L1 Discovery: Added support for the STM32L152RCT6 version of
- the board.
- * TI TMS570:
- - TMS570: Added support for the TMS570LS3137ZWT. From Ivan Ucherdzhiev.
- * TI TMS570 Boards:
- - configs/tms570ls31x-usb-kit: Added support for the TI Hercules
- TMS570LS31x USB Kit From Ivan Ucherdzhiev.
- * TI Tiva:
- - CC3200: Remove all support for the CC3200. This was a port that was
- started but never completed. What good is partial CC3200 support
- with no wireless support?.
- * TI Tiva Drivers:
- - EEPROM: Implements an EEPROM driver in compliance with MTD driver
- as provided by NUTTX for TM4C1294. The EEPROM driver currently
- supports only two functionalities - read bytes(multiple of 4) and
- write bytes (multiple of 4). From Shirshak Sengupta.
- - FLASH: Implemented Flash CONFIG_MTD_BYTE_WRITE for TM4c1294.
- Implemented the tiva_write function which will write an arbitrary
- number of bytes to flash (in multiple of 4). From Shirshak Sengupta.
- - Serial: Added TERMIOS IOCTL support to the Tiva serial driver.
- From Dmitry Sharihin.
- * TI Tiva Boards:
- - CC3200-Launchpad: Remove all support for the CC3200-Launchpad.
- This was a port that was started but never completed. What good is
- partial CC3200-Launchpad board support with no wireless support?.
- * Libraries/Header Files:
- - libs/: Moved all of the libraries under a common directory called
- libs/ (libc, libnx, and libxx). This almost certainly break libcxx
- for now.
- - libs/libc/time: Added an implementation of clock().
- - libs/libc/lzf: Added a modified version of Marc Alexander Lehmann's
- LIBLZF3.6 library From Boris Astardzhiev.
- - libs/libc/unistd: Initial, minimal implementation of sysconf().
- Only sufficient to support the functionality of less standard
- getdtabilesize(). From Michael Jung.
- - libs/libdsp: Added DSP support library. From Mateusz Szafoni.
- - include/sys: Added resource.h.
- - include/nuttx/video: Add overlay support to framebuffer interface
- definition. From Marco Krahl.
- * Tools:
- - tools/gencromfs.c: Added tools/gencromfs.c, a tool that can be used
- to generate CROMFS file system images.
- - tools/mkromfsimg.sh: Include an option in mkromfsimg.sh to ignore
- FAT/RAMDISK. This permits you to build tiny systems with ROMFS but
- with the rather large FAT FS support. From Alan Carvalho de Assis.
- - tools/nxstyle.c: Added check for blank lines before and after single
- line comments. From Bob Feretich.
- - tools/sethost.sh: Added support for macOS.
- - tools/uncrustify.cfg: An initial cut at an uncrustify C formatting
- script from Gregory Nutt. Updated, corrected, and verified. From
- Bob Feretich.
- * Build System:
- - Makefile: Added support for nconfig frontend for 'make nconfig'.
- From Michal Lyszczek.
- - configs/: Added definition of strip to many Make.defs files.
- - staging/: Remove fixed lib/ subdirectory and its content. Replace
- with new directory called staging/ that is created dynamically when
- building and removed when 'make clean' is done. This both improves
- the naming and eliminates a garbage directory from the repository.
- - tools/: Move all build-related files (except the top-level Makefile)
- into the tools/ sub-directory. This really cleans up the top-level
- directory.
- * NSH: apps/nshlib:
- - apps/nshlib: Added the mkfatfs -r option which can be used to
- specify the number of entries in the FAT12/FAT16 root directory.
- From Boris Astardzhiev.
- * Examples/Tests: apps/examples:
- - apps/examples/adxl372_test and lxm330spi_test: Added ADXL372 and
- LSM330 tests. From Bob Feretich.
- - apps/examples/cc3000: Removed the CC3000 example. From Alan
- Carvalho de Assis.
- - apps/examples/cromfs: Added an example of how to build a CROMFS
- file system image.
- - apps/examples/elf: Extend the ELF program module demo so that you
- can use compressed ELF programs with CROMFS.
- - apps/examples/elf: Use strip command to make ELF binaries MUCH
- smaller. Added an option to strip debug symbols even if the debug
- symbols are enabled in the base code.
- - apps/examples/max31855: Added an example to read multiple max31855
- sensors. From Tiago Almeida.
- - apps/examples/netloop: Update network loopback example so that it
- can be used to test TCP KeepAlive.
- - apps/examples/nxdemo: Added nxdemo application From Alan Carvalho
- de Assis.
- - apps/examples/powerled: Added arch initialization.
- - apps/examples/uavcan: Removed because apps/canutils/libuavcan is no
- longer available.
- * System Utilities: apps/system
- - apps/system/lzf: Added the test case from Marc Alexander Lehmann's
- LIBLZF3.6 librrary From Boris Astardzhiev.
- - apps/system/embedlog: Support for embedlog data loggin package from
- https://embedlog.kurwinet.pl/ From Michal Lyszczek.
- - apps/system/zmodem: Added an option to enable hardware flow control
- via termios. Allow stack size and priority to be configured.
- - apps/system/zmodem: Call tcflush() before closing the serial port.
- This is necessary because that close operation may hang if hardware
- flow control is enabled. Consider this scenario: After the host
- sz runs on the host, it exits and leaves CTS high. The target rz
- completes, and tries to close the serial port. But if there is
- buffered Tx data, then the close will hang when it tries to drain
- the buffered Tx data since there is no where it can go. tcflush()
- discards the buffered data and permits the close to continue.
- There is additional logic in nuttx/drivers/serial needed to work
- with this.
- * CAN Utilities: apps/canutils:
- - apps/canutils/libuavcan. Removed! libuavcan has not built for a
- year or so. The basic problem is that as NuttX advances, the old
- frozen version of libuavcan has become absolute because it violates
- the portable POSIX OS interface. No one is maintaining the port so
- there is no alternative but to remove it.
- * Network Utilities: apps/netutils:
- - apps/netutils/tftpc: Modified the TFTP client functions to use a
- data read/write callback instead of a file. This allows TFTP to
- write to arbitrary destination (in my case, a MTD device - for
- firmware update). Two new functions are introduced for this, named
- tftpget_cb and tftpput_cb. They are just made of most of the
- existing code. The previously existing tftpget/tftpput functions
- are now wrappers on the new ones, with callbacks that read/write
- from files, so my modifications are backwards compatible with
- existing applications, eg the associated nsh commands dont need to
- be changed. From Sebastien Lorquet.
- * Wireless Utilities: apps/wireless:
- - apps/wireless/bluetooth/btsak: Added a Bluetooth debug tool.
- Bugfixes. Only the most critical bugfixes are listed here (see the
- ChangeLog for the complete list of bugfixes and for additional, more
- detailed bugfix information):
- * Core OS:
- - sched/sched: Fix a deadlock in SMP mode. Two months ago, I
- introduced sched_tasklist_lock() and sched_tasklist_unlock() to
- protect tasklists in SMP mode. This change works well for HTTP
- audio streaming aging test with lc823450-xgevk. However, I found a
- deadlock in the scheduler when I tried similar aging tests with DVFS
- autonomous mode where CPU clock speed changed based on cpu load. In
- this case, call sequences were as follows. To avoid this deadlock,
- I added sched_tasklist_unlock() when calling up_cpu_pause() and
- sched_addreadytorun(). Also, added sched_tasklist_lock() after the
- call. Also added critical sections to lib_filesem.c, mm_sem.c, and
- net_lock.c for SMP for SMP. From Masayuki Ishikawa.
- - sched/sched: Change ordering of round-robin time slice check
- (sched_process_scheduler()) and processing of wdog timers
- (wd_timer()). wd_timer()'s callback function can change current
- running task and, hence, must be done after the time slice check.
- The time slice check will decrement the currently running task's
- time slice allotment. If such a context switch occurs, then the
- newly started task will lost one could of that allotment before it
- even has a chance to run. From EunBong Song.
- * File System/Block and MTD Drivers:
- - fs/fat: In fs_stat(), when stat'ing the root directory, avoid
- calculating the address of the root directory entry. The
- calculation is bogus (but not harmful) because the root directory
- does not have a directory entry. Noted by Boris Astardzhiev.
- - fs/fat: Avoid calculating the bogus directory entry address for
- the FAT root directory (since it has no directory entry). This
- change should have no effect, other than making the logic clearer.
- From Boris Astardzhiev.
- - fs/mount: Fix wrong size reported by df -h. Reason is that size
- in bytes is calculated always on uint32_t types and cards bigger
- than 4GB will overflow uint32_t type. Solution is to use uint64_t
- where possible. From Michal Lyszczek.
- - fs/smartfs: Fix a hardfault in SmartFS. Problem occurred when
- opening a file with O_CREAT (only) when the file arelready exists
- but has a size of zero. From Michal Lyszczek.
- - fs/vfs: Fix negative errno set in fs_open.c From Michal Lyszczek.
- - drivers/mtd: Fixed a W25 driver w25_cacheflush sector bug. From
- lihaichen.
- - drivers/mtd: mtdconfig_register() returned OK instead of -ENOMEM on
- failed allocation. From Michal Lyszczek.
- * Graphics/Display Drivers:
- - drivers/lcd/ft80x: ACTIVE host command appears to be formatted
- differently than other host commands; Fix ROM CHIPID. Appears to
- be big-ending, BCD. Fix some compile issues when debug features
- are enabled.
- - drivers/lcd/ft80x: Fix a typo that caused the driver to fail to
- recognize the ft801 chip version. From Gregory Nutt.
- - Review all board implementations of board_lcd_initialize(). The
- NuttX convention is that all internal functions that return errors
- as an 'int' must return a negated errno value on failure and a non-
- negative value on success. Most were right but eight of them had
- cloned logic that returns 1 on success and zero on failure. both
- of which are interpreted as success by the caller since they are
- non-negative.
- * Networking/Network Drivers:
- - net/tcp: Fixed problem with send() retrun value when using
- nonblocking I/O over buffered tcp socket From Dmitriy Linikov.
- - net/sixlowpan: Fix a nasty, byte-ordering/endian-ness problem.
- The root cause has been found and corrected. And a half dozen
- or so bandaid fixes were reverted.
- - net/sixlowpan: Preserve big-endian (network order) when
- uncompressing address. From Anthony Merlino.
- - net/sixlowpan: TCP send should have PSH and ACK flags set when
- sending. This matches the standard network (Ethernet) TCP send
- logic. From Anthony Merlino.
- - net/udp: Fix several issues using connected UDP sockets: sendto()
- should not accept an address. Normally send() should be used with
- connect UDP sockets instead. recvfrom() is no longer necessary.
- recvfrom() and poll() should not reset to accept any addresses but
- should, instead, only accept inputs and events from the connected
- remote peer. On of these issues was noted by ???
- <liguiding@pinecone.net>. Changes were made as summarized here:
- http://www.masterraghu.com/subjects/np/introduction/unix_network_programming_v1.3/ch08lev1sec11.html
- From Gregory Nutt.
- - net/udp: Resolve race condition in connection-less UDP sockets with
- read-ahead buffering. In connection-mode UDP sockets, a remote
- address is retained in the UDP connection structure. This
- determines both there send() will send the packets and which packets
- recv() will be accepted. This same mechanism is used for
- connection-less UDP sendto: A temporary remote address is written
- into the connection structure to support the sendto() operation.
- That address persists until the next recvfrom() when it is reset to
- accept any address. When UDP read-ahead buffering is enabled,
- however, that means that the old, invalid remote address can be left
- in the connection structure for some time. This can cause read-
- ahead buffer to fail, dropping UDP packets. Shortening the time
- between when he remote address is reset (i.e., immediately after the
- sendto() completes) is not a solution, that does not eliminate the
- race condition; in only makes it smaller. With this change, a flag
- was added to the connection structure to indicate if the UDP socket
- is in connection mode or if it is connection-less. This change
- effects only UDP receive operations: The remote address in the UDP
- connection is always ignored if the UDP socket is not in connection-
- mode. No for connection-mode sockets, that remote address behaves as
- before. But for connection-less sockets, it is only used by sendto().
- * Wireless/Wireless Drivers:
- - drivers/wiresless/ieee80211: Correct some initialization problems
- with BCM43362 chip. From hhuysqt.
- - drivers/ieee802154/xbee: Added a timeout to send logic to handle
- case where XBee module fails to respond to a Transmit request with
- a Transmit Status From Anthony Merlino.
- * Common Drivers:
- - Per OpenGroup.org, syslog -- and, hence, nonstandard vsyslog, and
- debug wrappers -- does not return a value. Rename _vsyslog to
- nx_vsyslog. Use internal nx_vsyslog in the few cases where a
- return value is required.
- - drivers/leds: Fixes RGB LED issues caused by uninitialized memory
- with CONFIG_RGBLED_MULTICHAN. The uninitialized pwm_info_s struct
- caused a rogue channel to be started causing errors in the pwm
- driver From Anthony Merlino.
- - drivers/sensors/lis2dh: Clear INT1 at SNIOC_WRITE_INT1THRESHOLD
- ioctl. From Jussi Kivilinna.
- - drivers/sensors/sht21: Changed I2C_TRANSFER return value so that
- it return on zero on success, not the count of bytes transferred.
- From Juha Niskanen.
- - drivers/serial: Per Matias Edlund: I recently used the tcflush
- function and found that it failed with ENOTTY. The reason is that
- the TCFLSH case in the function uart_ioctl in the file
- drivers/serial/serial.c does not update the ret value." On
- success, the TCFLSH IOCTL logic needs to explicitly set the return
- value (ret) to zero.
- - drivers/serial: Added a timeout to uart_tcdrain(). Even if
- tcflush() is used to discard buffered data, the close() can still
- hang if (a) hardware flow control is enabled, (b) CTS == 1, and
- (c) there is data stuck in the hardware Tx FIFO. tcflush() does
- not currently clear the MCU serial drivers' hardware Tx FIFOs.
- This is a workaround for that.
- - drivers/sensors: Fix APDS9960 work queue BUG found by Kyle Lei.
- From Alan Carvalho de Assis.
- * Simulator:
- - arch/sim: Various fixes necessary to build the simulator under
- MSYS2.
- * ARMv7-R:
- - ARMv7-R: Corrected several ARMv7-R issues. From Ivan Ucherdzhiev.
- * Infineon XMC4xxx Boards:
- - XMC4500-Relax: Call xmc4_spidev_initialize() in xmc4_boot.c. From
- Alan Carvalho de Assis.
- * NXP/Freescale LPC17xx Drivers:
- - LPC17xx USB: Fix USB device endpoint allocation bookkeeping. From
- Michael Jung.
- - LPC17xx USB: Freeing endpoints should be set the same allocations
- as when endpoint was allocated.
- - LPC17xx USB: Fix loss of RX initiatives. USB bulk endpoints are
- double buffered on LPC17xx MCUs. This means that up to two packets
- might be received on an OUT endpoint that can not be handled
- immediately if the receive request queue is empty. Thus,
- rxpending must be a counter not a boolean flag. From Michael Jung.
- * NXP/Freescale Kinetis Drivers:
- - Kinetis USG: USB device fixes: Use correct CONFIG OTG control,
- Fix interrupt storm when cable is disconnected. The DM, DP state
- were incorrect because the pulldowns were not enabled. Also the
- pending asynchronous resume interrupt needed to be re-armed after
- the suspend is in effect. This is now done in the isr. From David
- Sidrane.
- - Kinetis Serial: In kinetis_lowputc.c, fix esBRFA calculation
- effecting baudrate. Previous BRFA was not cleared and or-ed into
- new BRFA, hence, buadrate was wrong. Where Baud Rate Fractional
- Divisor (BRFD) UART baud rate = clock / (16 * (SBR + BRFD)). From
- David Sidrane.
- - Kinetis Serial: In kinetis_lowputc.c, fixed parity settings.
- Kinetis UART must be placed in 9 bit mode (M=1) with when 8 bit data
- with parity is required. If left in 8 bit mode (M=0) with parity
- then D7 of the TX/RX register becomes parity bit. Hence what is
- called 9-bit or 8-bit Mode Select is a misnomer. 8 bit mode when
- parity is enabled is realy 7 bit with parity. From David Sidrane.
- * NXP/Freescale Kinetis Boards:
- - configs/teensy-3.x: Remove CONFIG_USBDEV_DUALSPEED from the usbnsh
- configuration. Hardware supports only FS.
- * NXP i.MX6 Drivers:
- - i.MX6: Bring in a few i.MX6 fixes that were committed to similar
- files for the i.MX RT.
- * STMicro STM32:
- - STM32 F3: Problem: stm32f30xx hangs waiting for LSE to initialize.
- Reason for hang is that operation of setting LSE_ON does not take
- effect because there is no clock on PWR peripheral. This is
- initialized later in the code From Michal Lyszczek.
- * STMicro STM32 Drivers:
- - STM32 and STM32 L4 1WIRE: In 1wire driver, do not write useless
- WRITEBIT zero return value to const buffer From Juha Niskanen.
- - STM32 HRTIM: Fixed capture_get function,. From raiden00pl.
- - STM32 F3 ADC: Fixed bug in RCC reset logic that resets ADC1
- configuration when both ADC1 and ADC2 are in use From Mateusz
- Szafoni.
- - STM32 Ethernet: In case of PHY failure, usually because of the
- lack of 25/50 MHz REFCLK input, the Ethernet block would lock up
- in a while loop waiting for readiness, which will never happened.
- This prevented the board from starting at all in the case of a PHY
- failure. This commit adds a retry loop to avoid bricking the board
- if the Ethernet block is unable to start. From Sebastien Lorquet.
- - STM32 F7 SDMMC: Added support for the second SDMMC device. The
- second SDMMC device was already supported but the clock was never
- enabled. This fixes that. From William Douglas.
- - STM32 Serial: Fix UART glitch when lowputc is enabled. From
- Simon Piriou.
- - STM32 USB: Skip recipient check for descriptor related
- requests From Simon Piriou.
- * TI Tiva Drivers:
- - Tiva ADC: Fix compilation errors on Tiva ADC code when ADC is
- enable. From Vinicius Maciel.
- - Tiva Serial: Allow building of Tiva platform with no serial
- console. From Dmitry Sharihin.
- * C Library/Header Files:
- - lib/libc/netdb: Fixed boundary conditions in dns_recv_response().
- Fixed typos in include/nuttx/net/dns.h. From Masayuki Ishikawa.
- - libs/libc/modlib: Fixed backward test for an error in
- modlib_verify.c.
- * Build System:
- - Makefiles: Eliminate the spurious errors reported by 'make
- savedefconfig'.
- - Makefile(s): There is a sort command in the 'make savedefconfig'
- file. I found that sort behaves differently on different platforms
- based on the environment variable LC_ALL. Now, Makefile.unix will
- force LC_ALL=C just for the sort command so that we can all generate
- equivalent defconfig files.
- - Makefile(s): The clean_context target needs to invoke a
- corresponding clean_context target in the apps/Makefile in order to
- remove linkages. From Gregory Nutt.
- - LibTargets.mk, tools/Config.mk: Drop executable bit on installed
- libraries. The rules to install libraries under lib/ were modified
- to use mode 0644 instead of the default 0755. From Andrey Zabolotnyi.
- * Examples/Tests: apps/examples:
- - apps/examples/ft80x: Fix some size calculations. Added option to
- disable primitive tests. just too boring to have to watch over and
- over again. Fix a typo in backlight fade logic; Fix error in
- formatted display light debug dump output.
- - apps/examples/ft80x: Text is handled by the coprocessor and, hence,
- must use RAM_CMD, not RAM_DL.
- - apps/examples/ft80x: Fix some errors in co-processor demos. Correct
- an error in the spinner demo.
- - apps/examples/nsh and posix_spawn: Must not call exec_setsymtab()
- directly. That is a non-POSIX internal OS interface.
- - apps/examples/ostest: Do not call AIO test without
- CONFIG_EXAMPLES_OSTEST_AIO From Juha Niskanen.
- - apps/examples/smps: Fix typos in Kconfig. All power, voltage,
- current values were strings with no default. I assume they should
- be 'int' with what default?.
- - apps/examples/smps: Fixes in some printf and in Kconfig From
- Mateusz Szafoni.
- - apps/system/zmodem: Fix Makefile.host. It was broken when zmodem.h
- was moved to apps/include/system. Fix an incompatibility with the way
- that CRCs are calculated.
- * System Utilities: apps/system:
- - apps/system: Applications should use the standard clock() interface,
- not the internal NuttX clock_systimer() interface.
- - apps/system/stackmonitor: Fix comparison between pointer and zero
- character constant. From Juha Niskanen.
- * Network Utilities: apps/netutils:
- - apps/netutils/netlib: Various fixes needed to get a clean netlib
- build with Bluetooth only.
- * Wireless Utilities: apps/wireless:
- - apps/wireless: Applications should use the standard clock()
- interface, not the internal NuttX clock_systimer() interface.
- NuttX-7.26 Release Notes
- ------------------------
- The 126th release of NuttX, Version 7.26, was made on September 8, 2018,
- and is available for download from the Bitbucket.org website. Note
- that release consists of two tarballs: nuttx-7.26.tar.gz and
- apps-7.26.tar.gz. These are available from:
- https://bitbucket.org/nuttx/nuttx/downloads
- https://bitbucket.org/nuttx/apps/downloads
- Both may be needed (see the top-level nuttx/README.txt file for build
- information).
- Additional new features and extended functionality:
- * Core OS:
- - General: Eliminate use of the non-standard type systime_t and
- replace it the equivalent, standard type clock_t From Gregory Nutt.
- - General: Replace non critical PANIC with DEBUGPANIC to save the
- code space From Xiang Xiao.
- - General: Replace all ASSERT with DEBUGASSERT to save the code
- space From Xiang Xiao.
- - Initialization: Add option to mount block device for
- INIT_FILEPATH case. From anchao.
- - clock(): clock_systimer() is no longer a system interface. It has
- been replaced with the equivalent, standard interface clock().
- Moved the implementation of clock() from the C library into the OS
- core. This is necessary because it calls the (now) internal OS
- function clock_systimer(). clock() is now accessed only via a
- system call in certain configurations. From Gregory Nutt.
- - clock Utilities: Move clock_timespec_[add|subtract] to
- include/nuttx/clock.h From Xiang Xiao.
- - Binary Loader: Add binfmt_initialize(). All binary formats are
- now registered centrally vs. in board-specific logic. This
- simplifies the usage of the binfmt subsystem. From Xiang Xiao.
- - Binary Loader: Reference default symtab name to binfmt From anchao.
- - mm: Add mm_heapmember function and reimplement kmm_heapmember base
- on mm_heapmember since this function is very useful if multiple
- heaps exist. From Xiang Xiao.
- - mm: Add {kumm/kmm}_calloc API. Add calloc API for manage user
- memory and kernel memory in Flat Build/Kernel Build without kernel
- heap. From zhuyanlin.
- - pthreads: Add support static pthread stack. Add standard
- pthread_attr_setstack() and pthread_attr_getstack(). In all cases
- where the stack is released, add check to see which allocator must
- be used to free the stack: The user or the kernel allocator. From
- xuanlin.
- - Semaphores: Apply the semaphore wait function
- nxsem_wait_uninterruptible(). This function is a wrapped version
- of nxsem_wait() that is uninterruptible and convenient for use.
- From liuhaiyang.
- - Signals: Add default signal action to SIGKILL. From ligd.
- - Signals: Update the signal default action logic to support
- sigaction(). signaction() must be able to handle and input action
- of SIG_DFL to setup the default signal action; it mast also return
- SIG_DFL it is replacing the default action. From Gregory Nutt.
- - Signals: Default Signal Actions. Change some types to
- superficially simplify. Add configuration options to enabled
- default signal behaviors on a per-signal basis. I don't think
- users are prepared for SIGALRM to terminate the task (which is the
- correct default behavior if you don't change it). Extend the
- implementation of default signals so that it is totally table
- driven and extensible by simply mondifying the content of const
- tables. From Gregory Nutt.
- - Signals: Add support for SIGINT in addition to SIGKILL.
- - Signals: Add logic and an interface to determine if a signal can
- be caught or ignored. sigaction now correctly returns EINVAL on
- any attempt to catch or ignore such signals (only SIGKILL for now
- and only if CONFIG_SIG_DEFAULT=y). From Gregory Nutt.
- - Signals: Add support for default signal actions for SIGSTOP,
- SIGSTP, and SIGCONT. Add procfs support to show stopped tasks.
- From Gregory Nutt.
- - Signals: Add nxsig_action() to solve a chicken and egg problem:
- We needed to use sigaction to set default actions, but sigaction()
- would refuse to set actions if the default actions could not be
- caught or ignored. From Gregory Nutt.
- - Signals: Add configuration option to selectively enabled/disable
- default signal actions for SIGSTOP/SIGSTP/SIGCONT and SIGKILL/SIGINT.
- - Signals: If a task/thread was already blocked when
- SIGSTOP/SIGSTP was received, it will restart in the running state.
- It will appear that to the task/thread that the blocked condition
- was interrupt by a signal and returns the EINTR error. From
- Gregory Nutt.
- - Signals: Update signal default STOP action. If waitpid was
- called with the WUNTRACED then wake up waitpid(). From Gregory
- Nutt.
- - IRQs: Monitor the irq execution time. This is very useful for
- measuring the interrupt latency. From Xiang Xiao.
- - IRQ Dispatch: Add support interrupt chains in NuttX. IRQ chain is
- very useful in these cases: (1) Multiple hardware connect to the
- same request line(e.g. PCI), (2) Need multiple driver to support
- one hardware block (like Linux MFD) From zhuguangqing.
- - Work Queue: Modify high priority work queue to support multiple
- threads. From ligd.
- - System Calls: Add support for getpeername() and get_sockname()
- system calls. From Gregory Nutt.
- - System Calls: svcall/sycall logic needs to get the ucontext
- argument from R4 instead of stack since all syscall parameters pass
- from registers in syscall.h From Xiang Xiao.
- - CPU Load Measurement: Support the CPU load measurement using
- timer_lowerhalf_s interface From Xiang Xiao.
- - Assertions: Change CONFIG_BOARD_RESET_ON_CRASH to
- CONFIG_BOARD_RESET_ON_ASSERT, arch/: Implement call to
- board_reset() if in all implementations of up_assert() when
- CONFIG_BOARD_RESET_ON_ASSERT=y. From Xiang Xiao.
- - boardctl(): Add support for board_app_finalinitialize() From ligd.
- - Architecture Interface: Add prototype for an architecture-specific
- up_trigger_irq function. From dongjianli.
- - Architecture Interface: Add the garbage collection hook so each
- architecture can do custom memory cleanup if necessary. From Xiang
- Xiao.
- - Architecture Interface: Add architecture-specific prototypes for
- conversions between physical and virtual address. From ligd.
- * File Systems/Block and MTD Drivers
- - ProcFS: Add support for a procfs entry that will permit examining
- the environment of any task. From Gregory Nutt.
- - ProcFS: Add support for proc/self/, a convenient way for getting
- information about the currently running task. From Gregory Nutt.
- - HostFS: Add support for open() append mode From anchao.
- - HostFS: Add ftruncate support. From Xiang Xiao.
- - HostFS: Remove ARCH_SIM dependence since other architectures
- (e.g., arm semihosting) could support hostfs too From Xiang Xiao.
- - HostFS: Support remote directory names without a trailing '/'
- From ligd.
- - HostFS: Add re-try when hostfs mount() fails From ligd.
- - NFS: Update NFS client mount to VER3 From zhangyuan7.
- - Partitions: Add PTABLE parser fs/partion: Add a partition parser
- framework fs/driver/fs_blockpartition.c: Add
- register_blockpartition for block partition From Xiang Xiao.
- - MTD: Add gd25 driver From wangyanjiong.
- - MTD: In MTD partitions, copy the partition name to internal
- buffer so that the caller can free the name argument From Xiang
- Xiao.
- - MTD: Support initialization of an FTL block device with a custom
- name From Xiang Xiao.
- - MTD: FTL: Reduce size of stack buffer from 64 to a maximum size
- as determined from NAME_MAX. From Gregory Nutt.
- - VFS poll(): Send poll() notification when the Tx buffer is flushed
- From ligd.
- - VFS fstat(): Add file_fstat() function for internal OS use. From
- ligd.
- - VFS fcntl(): Add file_fcntl, psock_fcntl, and psock_dupsd for use
- within the kernel. From Xiang Xiao.
- - VFS dup2(): Addpsock_dupsd for use within the kernel. From Xiang
- Xiao.
- - VFS poll(): Add poll use in kernel space. From dongjianli.
- - VFS select(): Make select be more consistent with Linux man page:
- 'The timeout ... Some code calls select() with all three sets
- empty, nfds zero, and a non-NULL timeout as a fairly portable way
- to sleep with subsecond precision.' From anchao.
- * Networking/Network Drivers:
- - Sockets: Add getpeername() support From ligd.
- - sockopt(): Move psock check from [get|set]sockopt to
- psock_[get|set]sockopt From Xiang Xiao.
- - getsockname(): Add psock_getsockname function From Xiang Xiao.
- - Netlink Sockets: This brings in a fragmentary, experimental
- implementation of NETLINK sockets. There is not too much to that
- socket support on this initial commit, just the netlink socket
- framework. However, I decided to bring it into master because
- there is a enough that I would not want to lose what is in place.
- And since it is dependent on CONFIG_EXPERIMENTAL, its presence on
- master should be innocuous. From Gregory Nutt.
- - Interface Indexes: Add driver interface index support. Add
- implementation of if_nametoindex() and if indextoname(). Raw
- AF_PACKET sockets now depend on CONFIG_NETDEV_IFINDEX. Add syscall
- support for if_nametoindex() and if_indextoname(). Includes an
- algorithm to prevent an interface index from being reused until all
- network interfaces have by assigned once. The prevents removable
- devices from being removed, unregistered and re-installed,
- re-registered and keeping the same interface index. From Gregory
- Nutt.
- - Driver Interface: Add devif_loopback() to check the loopback
- case where a packet is being sent to itself. Modify the net driver
- to call this function in this case. This function will simply
- re-inject the packet back into the network and the network driver
- will not put anything on the wire. From Xiang Xiao.
- - Network Devices: Remove all references to CONFIG_NET_USER_DEVFMT.
- That feature is now unconditionally enabled. This was done because
- (1) the feature does not require very much additional memory, and
- (2) it causes confusion in the configuration due to the additional
- complexity. Any network drivers that fail to zero the device
- structure interface name field (d_ifname) because calling
- netdev_register() will, however, get a nasty surprise. From
- Gregory Nutt.
- - Network Devices: Add support for Microchip LAN91C111 driver From
- Xiang Xiao.
- - Network Devices: netdev_findby_ipv[4|6]addr return
- netdev_default() as last resort but don't return loopback device
- if another network device is in the UP state. From Xiang Xiao.
- - Network Device IOCTLs: Add si_ioctl callback and net_ioctl_arglen
- so usrsock could forward the ioctl to the remote end/ From
- dongjianli.
- - IPv6: Rename g_ipv6_allzeroaddress with the more meaning
- g_ipv6_unspecaddr since the all-zero address is the IPv6
- unspecified address (sometime IN6_ADDR_ANY). Replace more inline
- tests for IPv6 multicast with common net_is_addr_mcast() macro.
- From Gregory Nutt.
- - ARP: arp_find() now checks if the target IP belongs to one of the
- local network devices. From Xiang Xiao.
- - ARP: Make the function arp_find() thread-safe. It now returns a
- copy of the MAC address from the ARP table entry, rather than a
- potentially unstable reference to the ARP table entry. From
- Gregory Nutt.
- - TCP: Re-work of TCP receive window size algorithm. The new logic
- is based only on the ability to buffer TCP read-ahead data. From
- Gregory Nutt.
- - UDP: Add support for the UDP_BINDTODEVICE protocol socket option
- From Sebastien Lorquet.
- - Slip: Uncomment the prompt of NET_SLIP_PKTSIZE in Kconfig file.
- From Xiang Xiao.
- - USRSOCK: Combine some the duplicated logic. From Xiang Xiao.
- - USRSOCK: Optimize option dependence From Xiang Xiao.
- - USRSOCK: Add the listen/accept/getpeername/ioctl support From
- dongjianli.
- * Other Common Device Drivers:
- - Analog DAC: Add driver for digital to analog converter DAC7571.
- Nucleo-L422KC: Add support for a connect DAC7571 converter. From
- Daniel Pereira Carvalho.
- - Audio Interface: Change member samp of apb to pointer so driver
- can customize sample buffer allocation From ZhongAn.
- - Audio Interface: Add ioctl cmd 'AUDIOIOC_SETBUFFERINFO' so user
- space could config the buffer From ZhongAn.
- - Audio Interface: Add hardware format support From anchao.
- - I2S Interface: Add i2s_rxchannels and i2s_txchannels methods to
- the I2S lower half interface. From ZhongAn.
- - Audio: Move the I2S character driver to a dedicated folder. From
- Xiang Xiao.
- - Audio: Add audio_i2s device driver. From ZhongAn.
- - Audio: Add the composite audio driver From Xiang Xiao.
- - Crypto: Move dev_urandom.c into new crypto folder. From Xiang
- Xiao.
- - GPIO driver: Add gpio_pin_unregister function to GPIO driver
- driver/ioexpander: Add pinset struct to GPIO driver for interrupt
- pins larger than 64. Initialize pintype/inttype when registering
- ioexpander device. Add SETPINTYPE ioctl command to the GPIO
- driver. From zhuyanlin.
- - I2C Interface: Add a definition to distinguish a new START of
- messages from a repeated start. No lower-half I2C drivers actually
- implement this new flag bit, however. In I2C write/read logic use
- new repeated START definition where appropriate. Rename
- I2C_M_NORESTART to I2C_M_NOSTART since it may be used in other
- contexts than a repeated start. Add comments to clarify setup for
- repeated start. From Gregory Nutt.
- - I2C: Add the standard speed macros. From dongjiuzhu.
- - Leds: Add support to MAX7219 to control 7-segment displays. From
- Alan Carvalho de Assis.
- - Power: PM: Add pm_stay and pm_relax function so special apps(e.g.
- mediaplayer) could disable suspend during playback much like linux
- kernel counterpart From Xiang Xiao.
- - Power: PM: Add pm_querystate function From zhuguangqing.
- - Power: PM: Don't update the power state in work thread: (1)
- Simplify the code logic and remove the work queue dependence, (2)
- Power calculation is too simple to delay into the work queue From
- Xiang Xiao.
- - Power: PM: Decrease the power state in the reverse order. Since
- the child driver need power off before parent driver. From
- zhuguangqing.
- - Power: PM: Make power manager service available as soon as
- possible: (1) Initialize g_pmglobals at the definition, (2) skip
- hold the lock if OS isn't ready From Xiang Xiao.
- - Power: PM: Add PM_RESTORE to notify driver that device exit WFI
- so the driver could restore state. For example, WDT may stop
- counting before enter low power state and restore the counting
- again in PM_RESTORE notification From zhuguangqing.
- - Power: PM: Add timer to decrease PM level automatically. From
- ligd.
- - PTYs: Add support so that a PTY can poll for both IN/OUT event
- simultaneously. From ligd.
- - PWM: Move pwm.c into pwm folder From Xiang Xiao.
- - RTC Interface: Extend struct rtc_time by adding. From Xiang
- Xiao. tm_nsec if RTC supports hiresolution time. From Xiang Xiao.
- - Sensors: Add support for Telair T6713 carbon dioxide sensor. From
- Juha Niskanen.
- - Sensors: Add support for LSM303AGR and LSM6DSL sensors From
- DisruptiveNL.
- - Sensors: Add driver for DHTxx sensor. From Ouss4.
- - syslog: Enable a partial, crippled version of syslog_flush();
- Call syslog_flush() from assertion handling logic of all
- architectures. From Gregory Nutt.
- - syslog: Channel configuration. Decouple SYSLOG_SERIAL_CONSOLE and
- ARCH_LOWPUTC. Since some hardware can output log to the special
- debug channel not serial. From anchao.
- - syslog: Support pre-pending a prefix string to log output if
- enabled. This very useful to identify which CPU send out the log
- in AMP SoC. From anchao.
- - Serial: Add Ctrl-C/Ctrl-X support. From ligd.
- - Serial: Support UART direct write for non console device From
- xuanlin.
- - Serial: It is no longer necessary to restrict Ctrl-C handling to
- the FLAT build sched/signal: Add a new configuration option to
- select signal default actions, separate handling of signal default
- actions from both task startup logic and from the serial TTY
- Ctrl-C logic. Add a signal set in the group structure to keep
- track of what signals have been set to the default action. In
- dispatching signals in PROTECTED or KERNEL mode, use this signal
- set to determine if the default signal handler is attached and
- dispatch the signal in kernel mode for the default actions. From
- Gregory Nutt.
- - Serial: Integrate new Ctrl-C logic with the ISIG flag in the
- termios c_lflag. From Gregory Nutt.
- - Serial: Use SIGINT instead of SIGKILL when control-C is pressed.
- From Gregory Nutt.
- - Serial: Add support for Ctrl-Z. This works just like the
- recently added Ctrl-C support except that SIGSTP is sent when the
- Ctrl-Z characters is encountered vs. SIGINT. From Gregory Nutt.
- - 16550 UART: Add a configuration, analogous to the STM32
- configuration option, to suppress the NuttX standard re-ordering
- for /dev/ttySN for special case of the 16550 UART.
- - 16550 UART: Add CONFIG_SERIAL_UART_ARCH_MMIO option so the a
- memory mapped device doesn't need to provide uart_getreg() and
- uart_putreg() implementations.
- - 16550 UART: Add stub implementations of DMA-related methods in the
- 16550 UART v-table. From ligd.
- - 16550 UART: Add serial termios handling From anchao.
- - 16550 UART: Support 16550 auto hardware flow control
- drivers/serial/uart_16550.c: Add configuration option
- CONFIG_16550_SUPRESS_INITIAL_CONFIG. This is identical to the
- standard configuration in arch/Kconfig
- CONFIG_SUPPRESS_UART_CONFIG, but with scope of only the 16550
- driver. From Xiang Xiao.
- - syslog: Make timestamp output same as linux kernel. It's very
- useful if NuttX syslog retarget to Linux syslog. From Xiang Xiao.
- - Timers: Add maxtimeout method to the struct timer_ops_s interface
- From Xiang Xiao.
- - Timers: Add a new method to the struct oneshot_operations_s
- interface to get the current time from a oneshot timer driver (if
- it is available from the lower half) From Xiang Xiao.
- - Timers: Implement timer arch API on top of timer driver. From
- Xiang Xiao.
- - Timers: Implement alarm arch API on top of oneshot driver
- interface. From Xiang Xiao.
- - Timers: Implement RTC arch API on top of RTC driver interface.
- From Xiang Xiao.
- - CDC/ECM: Adds USB device support for CDC/ECM From Michael Jung.
- - USB Host: Add support for the Maxim M3421E USB host driver. Not
- yet fully tested. From Gregory Nutt.
- * General Architecture-Specific:
- - All architectures: Make sure the up_irq_enable() is available on
- all architectures. From Gregory Nutt.
- * Simulation
- - Simulator Configurations: Add dsptest configuration. From Mateusz
- Szafoni.
- - Simulator: In network driver (1) Remove up_comparemac() check for
- matching MAC address. Let's trust that the tap device just return
- the packet which belong to us like other real network device
- hardware. (2) Add network device statistics support. From Xiang Xiao.
- * ARM:
- - ARM (all): Add CONFIG_DEBUG_MEMFAULT to Kconfig. From Masayuki
- Ishikawa.
- - ARM: (1) Add semihost support for syslog, (2) Add semihost support
- for HostFS From Gregory Nutt.
- * ARMv6-M:
- - ARMv6-M: Introduce CONFIG_DEBUG_HARDFAULT_INFO to up_hardfault.c
- From Masayuki Ishikawa.
- * ARMv7-M:
- - ARMv7-M: Removes support for the dedicated vector handling from the
- many older architectures. Only common vectors are now supported.
- From Gregory Nutt.
- - ARMv7-M: Introduce CONFIG_DEBUG_HARDFAULT_INFO to up_hardfault.c
- From Masayuki Ishikawa.
- - ARMv7-M: Implement SYSTICK timer driver From Xiang Xiao.
- - Simulator: Add loadable demo for arch sim. From anchao.
- - ARMv7-M: Add logic to trigger ARMv7-M interrupts and exceptions.
- From Gregory Nutt (from sample logic by Xiang Xiao).
- - ARMv7-M: Add NVIC definitions needed by up_trigger_irq(). From
- Gregory Nutt.
- * ARMv7-R:
- - ARMv7-R: Add general interrupt controller. This is based on
- ARMv7-A gic controller code. From EunBong Song.
- - ARMv7-R: Add invalidate dcache in arm_head.S. From EunBong Song.
- * Infineon XMC4xxx Drivers:
- - XMC4 GPIO: Add a specific bit encoding to GPIO driver for
- opendrain GPIO pin. From Alan Carvalho de Assis.
- * Infineon XMC4xxx Boards:
- - XMC4500-Relax: Add support to MAX6675 on XMC4500-Relax board.
- From Alan Carvalho de Assis.
- * Microchip PIC32MX Boards;
- - PIC32MX: Update some PIC32MX configurations so that either the
- MPLAB or Penguino toolchains may be used. From Gregory Nutt.
- * Microchip/Atmel SAMD2x/L2x:
- - SAMD2x/L2x: Rename all usage of samdl/SAMDL to samd2l2/SAMD2L2 to
- make room in the name space for samd5e5/SAMD5E5 From Gregory Nutt.
- * Microchip/Atmel SAMD5x/E5x:
- - SAMD5x/E5: Add a port to the SAMD5x/E5x MCU family. From Gregory
- Nutt.
- * Microchip/Atmel SAMD5x/E5x Drivers:
- - SAMD5x/E5x SPI/I2C: Bring in untested SPI and I2C drivers from
- SAMD2L2. From Gregory Nutt.
- - SAMD5x/E5x DMA: Leverage the SAMD2L2 DMA controller. From Gregory
- Nutt.
- - SAMD5x/E5x USB: Bring the SAMDL2 USB driver into the SAMD5E5
- port. From Gregory Nutt.
- * Microchip/Atmel SAMD5x/E5x Boards:
- - Metro M4: Add support for the Adafruit Metro M4 board. From
- Gregory Nutt.
- - Metro M4: Add an option to build the Metro M4 image to run out of
- SRAM. This ought to be a safer and quicker way to do the initial
- bring-up (having bricked the first Metro M4 due to a bad FLASH
- image). From Gregory Nutt.
- - Metro M4: Add a configuration option to use OSCULP32K instead of
- XOSC32K. From Gregory Nutt.
- - Metro M4: After some final fixes related to the SERCOM console,
- the basic NSH configuration appears fully functional. From
- Gregory Nutt.
- - Metro M4: Verify the CMCC and enable it by default in the NSH
- configuration. From Gregory Nutt.
- * Microchip/Atmel SAMv7 Drivers:
- - SAMv7 CAN: Add ability for CAN BUS_OFF autorecovery according
- ISO11898-1:2015. With this change we added an ioctl for triggering
- the autorecovery sequence for BUS_OFF to the CAN-driver and the
- SAMV7 low-level driver. According the datasheet: If the device
- goes Bus_Off, it will set MCAN_CCCR.INIT of its own accord,
- stopping all bus activities. Once MCAN_CCCR.INIT has been cleared
- by the processor (application), the device will then wait for 129
- occurrences of Bus Idle (129 * 11 consecutive recessive bits)
- before resuming normal operation. At the end of the Bus_Off
- recovery sequence, the Error Management Counters will be reset.
- During the waiting time after the resetting of MCAN_CCCR.INIT, each
- time a sequence of 11 recessive bits has been monitored, a Bit0
- Error code is written to MCAN_PSR.LEC, enabling the processor to
- readily check up whether the CAN bus is stuck at dominant or
- continuously disturbed and to monitor the Bus_Off recovery
- sequence. MCAN_ECR.REC is used to count these sequences. From
- Frank Benkert.
- * NXP Freescale i.MX RT Drivers:
- - i.MXRT RTC: Add support for the i.MXRT RTC. This is code complete
- (with limited features and options) but untested. The HPRTC is
- functional. However, if the LPSRTC is enabled, then there is a
- hang during LPSRTC initialization. It appears that there is some
- problem in providing clocking and initializing the LPSRTC domain.
- From Gregory Nutt.
- - i.MXRT SNVS: Add trivial SNVS from Rev 1. of the Reference Manual.
- From Gregory Nutt.
- - i.MXRT LSPI: IMXRT1050 LPSPI register and bit definitions added.
- From Ivan Ucherdzhiev.
- - i.MXRT Serial: IMXRT1050 LPUART TERMIOS support added. From Ivan
- Ucherdzhiev.
- * NXP Freescale i.MX RT Boards:
- - IMXRT1050-EVK: Add knsh configuration. PROTECTED mode NSH build.
- From Gregory Nutt.
- * NXP Freescale Kinetis:
- - Kinetis: Add DMA support. From David Sidrane.
- * NXP Freescale Kinetis Drivers:
- - Kinetis: Use circular DMA as an option to augment the RX FIFOs in
- the Serial driver. From David Sidrane.
- * NXP LPC54xx:
- - LPC54xx: The LPC54608 can only run at a maximum frequency of
- 180Mhz. This configuration requires uses the clk_in, external
- crystal clock, to drive the PLL. When that input was selected, the
- board bootup failed waiting for the PLL to lock. After referring
- the driver from NXP, we should turn on power sources for the ext
- clock if system pll input select clk_in. NOTE that the LPC54628
- did not require this step... perhaps because the system oscillator
- power was already enabled. From kxjiang.
- - LC823450: Add support for mpu and userspace LC823450-XGEVK: Add
- kostest PROTECTED build LC823450-XGEVK: Add knsh PROTECTED build
- From Masayuki Ishikawa.
- * NXP LPC54xx Boards:
- - Lpcxpresso-LPC54628: Update lvgl board config to use the new
- version From Alan Carvalho de Assis.
- * On Semi LPC23450 Drivers:
- - LC823450 Bluetooth: Add lc823450 Bluetooth support. From Masayuki
- Ishikawa.
- - LC823450 I2S: Add tx start threshold to lc823450_i2s.c In
- addition, lc823450_i2s_send() now accepts byte-aligned stream.
- From Masayuki Ishikawa.
- - LC823450 SPI: Add SPI flash driver for lc823450. NOTE: Only bus
- accelerator mode is supported. From Masayuki Ishikawa.
- - LC823450: Change C-Buffer under-level control. The under-level
- setting was changed from 1KB to 55KB. In previous implementation,
- the setting can be changed by the tx threshold but it is fixed at
- startup. Also, check write size and adjust alignment if needed.
- From Masayuki Ishikawa.
- * On Semi LPC23450 Boards:
- - LC823450-XGEVK: Add loopback test for digital MIC on lc823450 via
- i2schar driver. From Masayuki Ishikawa.
- - LC823450-XGEVK: Add lc832450 elf test. From Masayuki Ishikawa.
- - LC823450-XGEVK: Add posix_spawn configuration From Masayuki
- Ishikawa.
- * STMicro STM32:
- - STM32 L4: Add initial support to STM32L4+ chips From Juha Niskanen.
- - STM32 H7: A partial port to the STMicro STM32H7 by Simon Laube was
- brought in from the PX4 repositories. Numerous changes were
- make(by Mateusz Szafone). The basic STM32 H7 NSH configuration is
- now functional, thanks to Mateusz Szafoni.
- * STMicro STM32 Drivers:
- - STM32 F0, F1-F4, F7, L4, H7: Added Single Wire Kconfig variable.
- From David Sidrane.
- - STM32 DAC: Set OUTEN bit for DAC1CH2 and DAC2CH1 power/motor.
- Direction parameter is now int8 + add overload fault. From Mateusz
- Szafoni.
- - STM32 F1-F4 ADC: Allow multiple channels without DMA on
- STM32L15XX. From Juha Niskanen.
- - STM32 F1: Add FLASH register definitions for F1 parts that have
- dual banked FLASH. From Dmitriy Linikov.
- - STM32 F2: Added progmem interface support for STM32 F2 From
- Dmitriy Linikov.
- - STM32 F4: Ports STM32 LTDC and STM32 DMA2D to use the
- framebuffer interface From Marco Krahl.
- - STM32 F7: This change ports Marco Krahl's STM32F4 framebuffer
- overlays for the LTDC and DMA2D into the STM32F7. That driver was
- same as the STM32 F4 driver. From Gregory Nutt.
- - STM32 F7: Port input capture from stm32. From Juha Niskanen.
- - STM32 F7 FLASH: Ported the STM32 F2/F4 driver to the STM32 F7
- platform. From Evgeniy Bobkov.
- - STM32 F7 SDMMC: Add SDIO card support to SDMMC driver. From
- Ramtin Amin.
- - STM32 F7 Serial: Previous logic would invalidate the data cache as
- each byte was read from the DMA buffer. This change adds logic to
- invalidate the data cache less frequently by monitoring the state
- of the Rx DMA buffer cache coherency and invalidating only regions
- as necessary. From Evgeniy Bobkov.
- - STM32 F7: Add up_stackcheck.c From Daniel Agar.
- - STM32 F7: Port the low-level PM functions to STM32 F7. From Juha
- Niskanen.
- - STM32 L4: STM32L4 has fetchadd and testset From Juha Niskanen.
- - STM32 L4: Added custom pin mapping for STM32L4X2XX processors.
- From Daniel P. Carvalho.
- - STM32 L4 FLASH: stm32l4xrxx: allow board to override flash wait
- states From Juha Niskanen.
- - STM32 L4: Some updates to analog peripherals ADC, COMP and DFSDM
- for STM32L4XR From Juha Niskanen.
- - STM32 L4: Add getstatus and getperiod() method to the timer
- driver (includes coding standard changes made prior to commit)
- From Goden Freemans.
- - STM32 H7: Remove old references to RXDMA. Add configuration
- - STM32 H7: Remove old references to RXDMA. Add configuration
- option to select the Rx FIFO threshold level. From Gregory Nutt.
- * STMicro STM32 Boards:
- - STM32F103 Minimum: Add blackpill LED support From Russ Webber.
- - Viewtool-STM32F107: Add a TCP performance test using
- apps/examples/tcpblaster. From Gregory Nutt.
- - Viewtool-STM32F107: Add support for the MAX3421E to the
- Viewtool-STM32F107 board support From Gregory Nutt.
- - STM32F334-DISCO: Use a PID controller from libdsp in the BuckBoost
- driver. From Mateusz Szafoni.
- - STM32F4-Discovery: Remove STM32F4BB dependence from RNDIS; add
- RAMDISK support. From Alan Carvalho de Assis.
- - STM32F4-Discovery Add board support for MAX7219 as numeric display
- controller. From Alan Carvalho de Assis.
- - Olimex-STM32-P407: Add kernel ELF (kelf) configuration. From
- Gregory Nutt.
- - Olimex-STM32-P407: Add a kmodule configuration that can be used
- for testing installation of kernel modules in the protected build.
- From Gregory Nutt.
- - Olimex-STM32-P407: Add logic to support initialization of the
- kernel module symbol table installed in the pass1/ directory during
- the application phase of the build. The kmodule configuration
- appears to be fully functional. From Gregory Nutt.
- - Olimex-STM32-P407: Add board support for the DHTxx sensor. From
- Ouss4.
- - STM32F476G-DISCO: Add support for STM32F746G-disco board LCD.
- From Marcin Wyrwas.
- - STM32F476G-DISCO: Add a configuration to build working nxdemo
- application From Fanda.
- - STM32F476G-DISCO: Add support for STM32F746G-disco board SDRAM
- Changed fb config to use SDRAM. From Marcin Wyrwas.
- - STM32F476G-DISCO: Add touchscreen support and a LittlevGL demo for
- STM32F746G-DISCO From Marcin Wyrwas.
- - Nucleo-L476RG: Add support for an external SPI-driven SD card on
- the Nucleo-L476RG. From Gregory Nutt.
- - Nucleo-L476RG: Add support for LSM303AGR and LSM6DSL sensors From
- DisruptiveNL.
- - Nucleo-H743ZI: Use Nucleo Virtual console as default console in
- the NSH configuration From Mateusz Szafoni.
- - STM32L4R9-DISCO: Add stm32l4r9ai-disco support. From Juha Niskanen.
- - B-L475E-IOT01A: Add timer driver support. From Goden Freemans.
- * Libraries/Header Files:
- - libc endian: Add support for endian.h. From Gregory Nutt.
- - libc net: Add inet_aton() From Juha Niskanen.
- - libc netdb: Add getaddrinfo() and friends. From Juha Niskanen.
- - libc termios: Add lib_cfmakeraw.c From Masayuki Ishikawa.
- - libc stdlib: Add implementation of random() and srandom(). From
- Gregory Nutt.
- - libc unistd: Add a crippled version of daemon(). From Gregory Nutt.
- - libdsp: All floats with f-sufix libdsp: (1) add precision option
- for library, (2) add debug option for library and assertions in
- functions, (3) add current samples correction for SVM3, (4) add
- some motor control specific functions, (5) add basic speed
- observer, (6) fix phase shift in SMO observe, (7) add more logic to
- FOC. From Mateusz Szafoni.
- - include/nuttx/compiler.h, include/poll.h: Add logic to determine
- if the compiler supports anonymous structures and unions. From
- Gregory Nutt.
- - include/nuttx/mutex.h: Add inline wrapper functions to more
- clearly support semaphores when used as mutexs. From QianWenfa.
- - include/nuttx/nuttx.h: Added nuttx.h header file which is
- analogous to the linux.h header file. Currently, it contains on
- the definition of the container_of() macro. From zhuyanlin.
- - include/queue.h: Add dq_tail marco From zhuguangqing.
- - include/stdio.h: Add prototypes for popen() and pclose(). Actual
- implementation is in apps/system/popen() From Gregory Nutt.
- - include/sys/param.h: Add a dummy sys/param.h header file. This is
- not a standard file but is used by other systems and having the
- dummy file may minimize some porting efforts. From Gregory Nutt.
- * Tools:
- - nuttx/tools/kconfig2html.c: Due to new usage, tool needs to be
- able to handle configuration files with names other than Kconfig.
- From Gregory Nutt.
- - nuttx/tools/kconfig2html.c: Update tool to handle tristate types.
- From Gregory Nutt.
- - nuttx/tools/Config.mk: Add function CATFILE definition. Currently
- only used in apps/builtin/Makefile. From Gregory Nutt.
- - nuttx/tools/Config.mk: Add the recursive wildcard function,
- RWILDCARD, to Config.mk. From Gregory Nutt.
- - nuttx/tools/testbuild.sh: Add an option to specify the location of
- nuttx directory. From Gregory Nutt.
- - nuttx/tools/refresh.sh: Add a --prompt option that will let you
- use --silent but will prompt before overwriting the original
- defconfig. From Gregory Nutt.
- - nuttx/tools/link.sh. Update link.sh per suggestions by Mark so
- that it can be used with MSYS vs copydir.sh. From Gregory Nutt.
- - nuttx/tools/mkexport.sh: Save the System.map file and User.map
- file (if it exists) in the export package so that it can be used to
- extract addresses. From Gregory Nutt.
- - nuttx/tools/mkexport.sh: Save the name of the STRIP tool too. From
- Gregory Nutt.
- - nuttx/tools/nxstyle.c: Add capability to detect multiple blank
- lines. Single spacing required by the coding standard. Also coding
- standard fixes to server .c files for problems found during testing
- nxstyle. From Gregory Nutt.
- - apps/tools: Add +x to mksymtab.sh. From Masayuki Ishikawa.
- - apps/tools/define.sh and define.bat: Move a copy of define.bat
- and sh from nuttx/tools to apps/tools so that they will be
- available for the import build. From Gregory Nutt.
- * Build System:
- - Apps/ Build System. The apps/ build system has undergone a major
- renovation to better support building applications as ELF modules.
- Module selections have changed from 'bool' to 'tristate' types.
- This means that building an ELF now is as simple setting the value
- to 'm'. This effort required many changes, too many to summarize
- here. The solution was contributed by Masayuki Ishikawa, Anchao
- An, and Xiang Xiao (and myself to a lesser extent).
- - NuttX/ Build System: This change extends support for the two-pass
- build. Its primary purpose is to incorporate source logic
- generated by applications into the kernel phase of the build.
- In the two pass build, the application logic is built during the
- first phase, pass 1. In that phase, the application may generate
- and install source files in the pass1/directory. The operating
- system is built during phase 2 of the build. At that time, those
- source files in the pass1/ directory will be built and incorporated
- into the kernel address space.
- The primary purpose of the pass1/ directory is to such
- application-generated kernel symbol tables. For an example of the
- use of this feature, look at
- apps/examples/module/drivers/Makefile. Kernel symbol tables are
- needed to support kernel modules. Of course, addition
- board-specific logic in, say, configs/<board>/src would have to be
- included to make use of the application-installed symbol tables.
- From Gregory Nutt.
- - Remove CONFIG_ARCH_CALIBRATION. It is awkward to use and no longer
- necessary now that we have apps/examples/calib_udelay. From
- Gregory Nutt.
- - Build System: With recent changes to apps/ all configurations that
- build applications as modules must now also select
- CONFIG_APPS_LOADABLE. From anchao.
- - Build System: Add dynamic application loadable support. From
- anchao.
- - Build System: Add configuration CONFIG_ARCH_GNU_NO_WEAKFUNCTIONS
- to suppress use of weak functions. Some gnu derived toolchains do
- not support weak symbols. From Xiang Xiao.
- - Kconfig: Move 'option modules' from NSH_FILE_APPS to
- BUILD_LOADABLE From anchao.
- - apps/ Build System: Introduce a build system for loadable apps
- for nsh. Add 'option modules' to NSH_FILE_APPS so that a user can
- change an application configuration to tristate (y/n/m)
- - apps/import: Add Makefile.symtab which can be used to compile the
- dynamically created symbol table C file. Also adds
- tools/mksymtab.sh. From Gregory Nutt.
- * NSH: apps/nshlib:
- - apps/nshlib: Add parsing support for back-slash quoted
- characters. Currently only implemented properly if
- CONFIG_NSH_ARGCAT is also selected. This commit is in response to
- Bitbucket Issue 11 opened by Maciej Wójcik From Gregory Nutt.
- - apps/nshlib: Add inverted logic support in the form of 'if !
- <cmd>' From Beat Küng.
- - apps/nshlib: Expand reboot and poweroff commands to include a
- second, optional mode argument From ligd.
- - apps/nshlib: Add a force flag (-f) to mksmartfs command. SmartFS
- will be formatted only if (1) the FLASH does not already hold a
- SmartFS, or (2) the force flag is set. From Xiang Xiao.
- - apps/nshlib: NSH prompt string is now configurable. nsh> is
- still the default. From Xiang Xiao.
- - apps/nshlib: Add control-C support for terminating built-in and
- exec'ed file tasks. From ligd.
- - apps/nshlib: Call BOARDIOC_FINALINIT after start-up script (or
- immediately after BOARIOC_INIT is there is no start-up script).
- From ligd.
- - apps/nshlib: When using waitpid() to wait for a built-in
- application or a file application to exit. Add the WUNTRACED
- options to so the the waitpid() call will also be awakened if the
- waited-for task is stopped as well. From Gregory Nutt.
- * NSH Builtins: apps/builtin:
- - apps/builtin/Makefile. This commit changes apps/builtin to search
- the registry recursively. By supporting directories, external
- projects can install the hooks into the registry and easily clean
- them up and reinstall if something needs to be updated. Based on
- an idea from Anthony Merlino. From Gregory Nutt.
- * Examples/Tests: apps/examples:
- - apps/examples/calib_udelay: Add tool for calibrating
- CONFIG_BOARD_LOOPSPERMSEC From Juha Niskanen.
- - apps/examples/dhtxx: Example for the DHTxx sensor. From Ouss4.
- - apps/examples/dsptest: Add unit test for Nuttx DSP library From
- Mateusz Szafoni.
- - apps/examples/elf: CROMFS and ROMFS configuration currently only
- usable in FLAT build. Add configuration to use ELF objects on
- external media like SD card or USB drive instead. From Gregory
- Nutt.
- - apps/examples/elf: If the test ELF files are on media in
- removable media such as SD or USB FLASH, the wait until the media
- has been installed and initialized before starting the test. From
- Gregory Nutt.
- - apps/examples/fb: Adds example to test framebuffer overlay From
- Marco Krahl.
- - apps/examples/gps: Add GPS example using MINMEA lib From Alan
- Carvalho de Assis.
- - apps/examples/i2sloop: Add i2sloop application. This application
- can be used to test I2S loopback like: ' nsh> i2sloop &'. From
- Masayuki Ishikawa.
- - apps/examples/lvgldemo: Update LVGL to version 5.1.1 From Alan
- Carvalho de Assis.
- - apps/examples/module: Add support for CROMFS and for stripping
- symbols from ELF module binaries. From Gregory Nutt.
- - apps/examples/module: Add support for automounting removable media.
- This involves a wait for the block driver to become available
- before performing the mount. From Gregory Nutt.
- - apps/examples/module: When built in the PROTECTED or KERNEL
- modes, the symbol table is not built by the application. That is
- because the build will fail since the kernel module depends on
- internal OS symbols thar are not available to the application
- build. With this change the examples does not attempt to build
- the kernel symbol table in these modes. Instead it just copies
- the kernel module symbol table into the nuttx/pass1 directory
- where it can be build directly into the OS during pass2 of the
- build. From Gregory Nutt.
- - apps/examples/ostest: Add a small test for SIGSTOP, SIGCONT, and
- SIGKILL actions. From Gregory Nutt.
- - apps/examples/popen: Add a test of popen/pclose. From Gregory
- Nutt.
- - apps/examples/powerled: Add arch initialization. From Mateusz
- Szafoni.
- - apps/examples/tcpblaster: Add TCP performance measurement test.
- From Gregory Nutt.
- * System Utilities: apps/system
- - apps/system/cle: Usage improvements including command line
- history (taken from readline) and support for addition control
- characters. From mst.
- - apps/system/i2c: Adapt to rename I2C_M_RESTART->i2C_M_START.
- I2C_M_NOSTOP should be in flags of first message in every
- write-read and write-write mesage sequence. From Gregory Nutt.
- - apps/system/i2c: Allow registers besides 0x00 in the dev command.
- From Jakob Haufe.
- - apps/system/nsh: Add logic to automatically register an
- application symbol table as part of NSH initialization. From
- Masayuki Ishikawa.
- - apps/system/nsh: The symbol table name and size variable names
- can now be configured. From Gregory Nutt.
- - apps/system/nsh: Move apps/examples/nsh to apps/system/nsh. It
- has become so entrenched that it is hardly an example these days.
- May as well formalized it as a system task. From Gregory Nutt.
- - apps/system/nxplayer: Refactor nxplayer.c. Apply
- netlib_parsehttpurl() and
- remove unnecessary usleep(). From Masayuki Ishikawa.
- - apps/system/nxplayer: Release buffer before session and release
- semaphore in nxplayer_setvolume system/nxplayer/nxplayer.c:
- Remove & for apb->samp reference. It is already a pointer. From Xiang Xiao.
- - system/nxplayer/nxplayer.c: Add playraw command From ZhongAn.
- - apps/system/nxrecorder: Add nxrecorder application From ZhongAn.
- - apps/system/popen: Add an implementation of the standard popen()
- and pclose() OS interfaces. These are implemented as applications
- vs. part of the OS because they depend on NSH. Untested on
- initial commit. From Gregory Nutt.
- - apps/system/system and popen: Adapt so that these can be used in
- the KERNEL build mode. In this case, simply replace task_spawn()
- with posix_spawn(). This depends on the existence of some
- environment where /bin/sh exists and can be used to execute one
- NSH command. For the case of system(), this change was more
- complete because it previously used task_create(). Now it uses
- either task_spawn() or posix_spawn(), depending upon the
- configuration. From Gregory Nutt.
- - apps/system/taskset: Add taskset command for SMP systems. This
- command can be used to retrieve or set a process's CPU affinity.
- For example,
- nsh> taskset -p 4
- pid 4's current affinity mask: 2
- nsh> taskset -p 3 4
- pid 4's current affinity mask: 3
- nsh> taskset -p 1 busyloop &
- From Masayuki Ishikawa.
- - apps/system/zmodem: Support -p <path> for rz to change the folder
- for the received file. Switch debug output from printf to
- syslog. Send the next packet for ZME_ACK in ZMS_SENDING to avoid
- rz on the host side stuck make send work reliable even without
- hardware flow control. From Xiang Xiao.
- * Network Utilities: apps/netutils:
- - apps/netutils/dhcpc: Activates BINDTODEVICE if available. From
- Sebastien Lorquet.
- * Wireless Utilities: apps/wireless:
- - apps/wireless/i8sak: i8sak daemon now gets shutdown if not in use.
- Previously, once the i8sak daemon was started, by running any
- command, it would stay running. This means that if you want to use
- i8sak to setup your network, but then want exclusive access to the
- char device, or network device, you have to manually shutdown the
- i8sak daemon. Now the daemon stays active as long as required to
- finish any commands, or stays open if a new command keeps it on,
- but when all work is finished, it shuts down. From Anthony Merlino.
- * Filesystem Utilities: apps/fsutils:
- - mkfatfs: Clean up some name BS_ and MBR_ refer to the same record
- and should use the same naming (MBR_). From Gregory Nutt.
- - mkfatfs: Add definitions for the FAT boot record (FBR). From
- Gregory Nutt.
- - mksmartfs: Add a check to see if the SmartFS is already
- formatted. From Xiang Xiao.
- * Graphic Utilities: apps/graphics:
- - graphics/littlevg/: Update LVGL to version 5.1.1 From Alan
- Carvalho de Assis.
- * Test Utilities: apps/testing:
- - testing/unity: Add Unity - unit testing library from
- ThrowTheSwitch.org. From Mateusz Szafoni.
- Bugfixes. Only the most critical bugfixes are listed here (see the
- ChangeLog for the complete list of bugfixes and for additional, more
- detailed bugfix information):
- * Core OS:
- - Signals: Signal handlers maybe run with interrupts enabled or
- disabled, depending on how the task the received the signal was
- blocked. (i.e.: If sem_wait() is called, then we disable
- interrupts, then block the currently running task). This could be
- dangerous, because user code would be running with interrupts
- disabled.
- This change forces interrupts to be enabled in up_sigdeliver()
- before executing the signal handler calling up_irq_enable()
- explicitly. This is safe because, when we return to normal
- execution, interrupts will be restored to their previous state when
- the signal handler returns. From Gregory Nutt (Based on a
- recommendation by Mark Shulte).
- - Signals: Lock the scheduler while while killing the children so
- that we do not lose priority and let the task group continue to
- run in an indeterminate state. From Gregory Nutt.
- - Groups: Fix a deadlock when loading an ELF From Masayuki Ishikawa.
- - Groups: In some circumstances, group_killchildren() could have
- called pthread_cancel() to kill a task. Also, the behavior would
- not be as expected if a pthread had cancellation disabled. From Gregory Nutt.
- - Posix Message Queues: mq_notify() fix - only part of struct copied
- to internal structure. As source address the address of the struct
- member sigev_value was used, and it is not located the start of the
- struct. This leads to invalid data being copied to internal
- structure. Both source and destination should be of type struct
- sigevent* . From Simon Liedl.
- - vfork(): vfork operation needs to allocate and copy the task
- argument too. Also correction of the address correction cannot
- depend on the stack pointer since it is not available in all
- architectures. Rather calculate the offset from the stack
- allocation pointer From Xiang Xiao.
- - IRQ Dispatch: Ensure vector never points to NULL since interrupt
- may happen before irq_initialize() From Xiang Xiao.
- - Work Queue: workqueues don't need set global data to zero since
- .bss is cleared automatically. Removing this unnecessary
- initialization also avoids the loss the work items queued before
- initialization. From ligd.
- - Work Queue: Remove work queue polling delay to simplify the code
- logic and save the power. From xuanlin.
- - syslog: Fix syslog crash on 64bit simulation. From anchao.
- - Pipes: Write to a pipe when there are no readers from the pipe
- should return -EPIPE. From ligd.
- - System Calls: Fix 6th parameter type of posix_spawnp in
- syscall.csv From Masayuki Ishikawa.
- - System Calls: Remove unused SYS_nnetsocket from syscall.h. Because
- SYS_nnetsocket is not implemented so far, it should be removed so
- that SYS_prctl can work correctly. From Masayuki Ishikawa.
- - Binary Loader: Refactor binfmt_exec.c. This change also fixes an
- argv issue for CONFIG_SCHED_ONEXIT=n or CONFIG_SCHED_HAVE_PARENT=n
- From Masayuki Ishikawa.
- - Binary Loader: Re-architect the way that loadable ELF or NXFLAT
- modules are unloaded. Memory resources must be recovered when the
- task loaded into memory exits. The original implementation used
- the death-of-child SIGCHLD signal to perform the unload. There are
- several problems with this: It is overly complex, it requires that
- the parent task stay resident while the loaded task runs, and it
- has fatal logic flaws in the protected and kernel model builds
- because the user signal handler attempts to run in the kernel
- address space. This corrects the issue using a mindlessly simply
- BINFMT callback when the task exits. From Gregory Nutt.
- - ELF Binary Loader: Set priority level to default if parent has no
- priority. From anchao.
- * File System/Block and MTD Drivers:
- - Auto-mounter: Ignore return values from work_cancel(). From
- Gregory Nutt.
- - SmartFS: Fixed filesystem corruption when writing to small file
- after open(... O_APPEND). From Dmitriy Linikov.
- - SmartFS stat(): A previous change added support for checking if a
- descriptor is a socket in fstat().' but it changed sys/stat.h in
- way that breaks smartfs file-type stat flags. CROMFS is similarly
- broken, as tools/gencromfs.c was not updated to match the
- sys/stat.h changes. This commit fixes both issues. It probably is
- not a good idea to use NuttX sys/stat.h bit-field values directly
- in stored structure of filesystem. From Jussi Kivilinna.
- - HostFS: Update duplicated definitions in HOSTFS that must match
- NuttX values. From ligd.
- - HostFS: Ensure f_type is equal to HOSTFS_MAGIC. From Xiang Xiao.
- - ROMFS: Make romfs_devread32 more portable From anchao.
- - TmpFS: Correct logic in tmpfs_ioctl() that extracts the priv state
- structure from the file system structures. It was not getting the
- right value and causing mmap() to fail. Noted by Jesse. From
- Gregory Nutt.
- - ProcFS network statistics: Was not handling the output correct for
- the case of an IEEE 802.11 device. From Gregory Nutt.
- - ProcFS IRQs: Fix occasional computation error when fracpart >=
- 1000 From Xiang Xiao.
- * Networking/Network Drivers:
- - TAP/TUN: Fixed custom tun devname formatting. From Dmitriy Linikov.
- - Network Drivers: This change attempts remove some long standard
- confusion in naming and some actual problems that result from the
- naming confusion. The basic problem is the standard MTU does not
- include the size of the Ethernet header. For clarity, I changed
- the naming of most things called MTU to PKTSIZE. For example,
- CONFIG_NET_ETH_MTU is now CONFIG_NET_ETH_PKTSIZE. This makes the
- user interface a little hostile. People think of an MTU of 1500
- bytes, but the corresponding packet is really 1514 bytes (including
- the 14 byte Ethernet header). A more friendly solution would
- configure the MTU (as before), but then derive the packet buffer
- size by adding the MAC header length. Instead, we define the
- packet buffer size then derive the MTU.
- The MTU is not common currency in networking. On the wire, the
- only real issue is the MSS which is derived from MTU by subtracting
- the IP header and TCP header sizes (for the case of TCP). Now it
- is derived for the PKTSIZE by subtracting the IP header, the TCP
- header, and the MAC header sizes. So we should be all good and
- without the recurring 14 byte error in MTU's and MSS's. From
- Gregory Nutt.
- - netdev: Fix.. Too many calls to net_unlock() From Gregory Nutt.
- - IPv6: There are many different checks for IPv6 multicast
- addresses. Most of the checks are different. RFC 3513 clearly
- specifies how to detect an IPv6 multicast address: they should
- begin with 0xffxx. I did not change some of the checks in
- ipv6_input.c, however. In that file, the comments indicate that
- the code should only pick of certain multicast address that begin
- with 0xff02. From Gregory Nutt.
- - ARP: Fix some backward logic in an if condition. From Gregory
- Nutt.
- - TCP Re-assembly: Rename CONFIG_TCP_REASSEMBLY to
- CONFIG_IPv4_REASSEMBLY. Add some fixes to get a clean compile with
- CONFIG_IPv4_REASSEMBLY enabled. There are several problems with
- the current implementation: It is untested (and depends on
- CONFIG_EXPERMIMENTAL). It uses some Ethernet specific definitions
- (and depends on CONFIG_NET_ETHERNET). There is only a single
- reassembly buffer. The last two issues prevent use of this feature
- in any context where IPv4 packets may be reassembled for multiple
- network devices concurrently). From Gregory Nutt.
- - TCP: Set the default TCP MSS to the value required by RFC 879 and
- never change it under any circumstance unless the remote host
- requests a larger MSS via an option the TCP header. From Gregory
- Nutt.
- - TCP: Fix a deadlock condition that can occur when (1) all network
- logic runs on a single work queue, (1) TCP write buffering is
- enabled, and (2) we run out of IOBs. In this case, the TCP write
- buffering logic was blocking on iob_alloc() with the network
- locked. Since the network was locked, the device driver polls that
- would provide take the write buffer data and release the IOBs could
- not execute. This fixes the problem by unlocking the network lock
- while waiting for the IOBs. From Gregory Nutt.
- - TCP: Remove g_netstats.tcp.syndrop++ from tcp_data_event() From
- Masayuki Ishikawa.
- - TCP Monitor: Fix net unlock issue when tcp close. This bug could
- leave the net locked. From zhangyuan7.
- - UDP: When sending a broadcast (or multicast) packet do not attempt
- to look up the device by the destination IP address. Rather, use
- the locally bound address for these cases to select the correct
- network device. From Gregory Nutt.
- - UDP: Restore some legacy behavior that was lost with the
- implementation of CONFIG_NET_UDP_BINDTODEVICE: If no device has a
- local address when the broadcast packet is sent and the UDP socket
- is not bound to a device, there select some arbitrary device. This
- is certainly lunacy in the case where there are multiple network
- devices registered because the wrong device will probably be
- returned. It works find, however, for the legacy case where only a
- single network device is registered. From Gregory Nutt.
- - UDP: Fix for network byte-order issue when checking if an address
- is a multicast address. From Jake Choy.
- - USRSOCK: Correct of semaphore usage issues. From Gregory Nutt.
- - USRSOCK: Fix re-definitions of struct iovec. From ligd.
- - ICMP/ICMPv6 Connection: Change the type of id in
- icmpv[6]_findconn to uint16_t From Xiang Xiao.
- - ICMP/ICMPv6: Fix failure to poll ICMP socket issue. From
- dongjianli.
- * Wireless/Wireless Drivers:
- - XBee: Fixes issue with timeouts. Timeouts were in ticks but
- should have been in ms. This caused false triggers of timeout
- causing redundant packets, etc. From Anthony Merlino.
- - BCM43xx: Add missing logic to the BCM43xx IEEE 802.11 driver to
- poll for more Tx data after the last transfer completes. From
- Gregory Nutt.
- - BCM43xx: Bring in some fixes from the 'Haywire' branch. From
- Ramtin Amin.
- * Common Drivers:
- - Audio: Fix compile error in i2schar.c (CONFIG_DEBUG_ASSERTIONS=y)
- From Masayuki Ishikawa.
- - Audio I2S: Fix bad NULL pointer check From Juha Niskanen.
- - Input: Fixed FT5x06 driver to correctly close (previously it
- unregistered interrupt handler during close). From Marcin Wyrwas.
- - MMC/SD: Fix an error that was causing SDIO multiple block
- transfers from achieving full performance. From Bob Feretich.
- - Sensors: Increases SPI frequency in MAX6675 from 400Khz to 4MHz.
- From Alan Carvalho de Assis.
- - Sensors: Remove comment references to touchscreens from ADXL345
- driver. From Russ Webber.
- - Serial: Don't overwrite nwritten unconditionally on UART write
- failure. From Xiang Xiao.
- - Serial DMA: Move head/tail pointer reset to uart_recvchars_dma
- since dma may be still transferring in the background. From Xiang
- Xiao.
- - Serial DMA: In DMA mode, the use of uart_disablexinit() is
- insufficient to protect a critical section.
- enter/leave_critical_section() must be used in those cases if
- CONFIG_SERIAL_DMA=y From Xiang Xiao.
- - Serial DMA: Fix typo error in uart_recvchars_dma() From Xiang Xiao.
- - 16550 UART: u16550_txempty() should check UART_LSR_TEMT to avoid
- some data left in the transmit FIFO From Xiang Xiao.
- * ARMv7-A:
- - ARMv7-A (and i.MX6): Add support for per-CPU IRQ and FIQ interrupt
- stacks (bugfix). Add support so that up_assert will print the
- correct interrupt stack on an assertion (FIQ stack is still not
- printed). From Gregory Nutt.
- * ARMv7-R:
- - ARMv7-R: Fix some wrong configuration of program status
- register. PSR_E_BIT bit should be set for big endian system.
- PSR_A_BIT bis is set automatically as arm cortex-r4 reference
- manual 3.7.4. So we don't need to set this bit. From EunBong Song.
- - ARMv7-R: Fix some wrong MPU register definition. Change
- MPU_RBAR_ADDR_MASK and MPU_RACR_TEX_SHIFT mask as arm cortex-r4
- reference manual. Region Base Address Register 0-4 bits are
- reserved. MPU Region Access control register type 3-5 bits. From
- EunBong Song.
- * ARMv7-M:
- - ARMv7-M, Cortex F7: Add a configuration to enable workaround for
- r0p1 Errata 837070: Increasing priority using write to BASEPRI does
- not take effect immediately. This update is required to be
- serialized to the instruction stream meaning that after this update
- completes, it takes effect immediately and no exceptions of lower
- priority than the new boosted priority can pre-empt execution.
- Because of this erratum, the priority boosting does not take place
- immediately, allowing the instruction after the MSR to be
- interrupted by an exception of lower priority than the new boosted
- priority. This effect is only limited to the next instruction.
- Subsequent instructions are guaranteed to see the new boosted
- priority. This was raised in Bitbucket issue 113 from Vadzim
- Dambrouski. From Gregory Nutt.
- - ARMv7-M: MPU: mpu_log2regionceil needs take into account the
- offset too From Xiang Xiao.
- - ARMv7-M MPU: The prototype of mpu_log2regionfloor() changed; an
- additional parameter was added. However, none of the calls to
- mpu_log2regionfloor() were updated to pass the new, additional
- parameter. From Gregory Nutt.
- * Infineon XMC4xxx Drivers:
- - XMC4 SPI: XMC4 SPI was working only for the first transfer From
- Alan Carvalho de Assis.
- * Microchip/Atmel SAMv7 Drivers:
- - SAMv7 MCAN: Correct an error in the BUS_OFF reporting. In case of
- BUS_OFF the old implementation was leading to a package storm. Now
- it reports the error condition BUS_OFF only once. From Frank
- Benkert.
- * NXP/Freescale LPC43xx Drivers:
- - LPC43xx CAN: Fix lpc43 CAN configuration. Configuration settings
- were used and documented in README.txt files, but never in any
- Kconfig file. From Gregory Nutt.
- - LPC43xx: Make WWDT usable again. LPC43xx WWDT driver was not
- updated when irq_dispatch grew an argument parameter. Also fixes
- two typos and a naming inconsistency (WWDT vs. WWDG). From Jakob
- Haufe.
- * NXP/Freescale Kinetis Drivers:
- - kinetis: USB0 fix interrupt storm on error. The ERROR bit of
- USBx_ISTAT needed to be cleared once an error occurs. From David
- Sidrane.
- - Kinetis: SDHC fix SDIO driver so that DMA works. There were 2
- problems. The first was that the interrupt did test DINT and raise
- a completion events. But since DINT is just an indication of DMA
- completion, TC is a valid way to determine that the transfer is
- complete. The second problem is that Software Reset For DAT Line
- SDHC_SYSCTL[RSTD] clears the bits 24-0 in SDHC_PROTO this looses
- the wide bus setting DTW From David Sidrane.
- - Kinetis: (1) PIT add Liftime and Chaining, (2) flexcan fix
- duplicate line and ordering, (3) kinetis_lowput.c LPUART data
- format with parity fix. The 9-bit data mode is typically used with
- parity to allow eight bits of data plus the parity, (4) lowputc
- LPUART_BAUD_INIT has to be defined. Build fails with test case
- enable LPUART0 and make UART1 console. If HAVE_LPUART_DEVICE is
- defined then LPUART_BAUD_INIT has to be defined even if the LPUART
- is not the console From David Sidrane.
- - Kinetis: I2C ensure timeout on bus error. The code had a dead
- wait on I2C_S_BUSY. Noise on the bus would cause the driver to
- hang. Add timeout on invalid states of I2C_S_BUSY to allow the
- upper layers do deal with restart or abort. From David Sidrane.
- * NXP i.MXRT Drivers:
- - i.MXRT Ethernet: I finally got the Ethernet CRC32 to work properly
- after the FAE pointed me in the right direction: (1) Added CRC32
- functions for multicast address filtering, (2) Do not reset PHY
- settings when doing an ifup, (2) Use chip's unique id as the device
- MAC, and (4) Enable discard enet frames with errors at PHY layer.
- From Jake Choy.
- * On Semi LC823450 Boards:
- - LC823450-XGEVK: Fix parallel build on lc823450-xgevk. This change
- fixes an archive file (*.a) corruption by locking $(TOPDIR).
- Please note that locking the current directory is insufficient
- because some archive files such as libapps.a are specified with
- absolute path. From Masayuki Ishikawa.
- - LC823450-XGEVK: Change IOB related params for rndis. Since TCP
- flow control scheme was changed, HTTP audio streaming has not been
- working. These IOB params are not optimized but HTTP audio
- streaming now works. From Masayuki Ishikawa.
- * STMicro STM32:
- - STM32 F7: Fix compile error caused by intentional use of fall
- through From Daniel Agar.
- * STMicro STM32 Drivers:
- - STM32 F1-F4: Port Bob Feritich's change to STM32 F2 and F4 which
- appear to have identical SD support and I/O compensation
- requirements.
- - STM32 F1-F4, STM32 F7, and STM32 L4: The STM32 RTC driver was
- being selected by the global CONFIG_RTC option. That is in
- correct. For example, if you want to disabled the STM32 RTC and
- use an external RTC you cannot because the external RTC also
- depends on the global CONFIG_RTC. The solution is to add a new
- CONFIG_STM32xx_RTC configuration option the permits to you select
- or deselect the STM32 RTC but still be able to selecte the external
- RTC. From Gregory Nutt.
- - STM32 F3 I2C: Fix compile error with I2C reset. From Juha
- Niskanen.
- - STM32 F7 Serial: Fix ioctl TIOCSSINGLEWIRE The TRM notes that UE
- must be disabled in order to write HDSEL in USART_CR3. This was not
- being done, so calls to TIOCSSINGLEWIRE were silently failing.
- This change checks the state of UE in USART_CR1, clears the UE bit
- before writing HDSEL, then re-enables it if neccesary. From Kurt
- Kiefer.
- - STM32 F7 DMA: DMA macros did not account for the increase from 8
- to 16 DMA channels. From Gregory Nutt.
- - STM32 F7 I2C: I2C reset Configure I2C pins as GPIO output. Pins
- were reset to inputs in the deinit(). This resets them to outputs.
- From David Sidrane.
- - STM32 F7: All of the SDMMC pins were set to 50 MHz, but not the
- clock. This sets the clock to 50 MHz also. This combined with
- turning on I/O compensation makes intermittent failures go away.
- From Bob Feritich.
- - STM32 F7: Port Bob Feritich's change to SDMMC2 and to all other
- STM32 F7 architectures. Also add a configuration option to
- automatically enable I/O compensation. From Gregory Nutt.
- - STM32 F7 SDMMC: Fix data timeout errors with multi-block
- transfers. From Bob Feretich.
- - STM32 L4: Corrects some mistakes in pin definitions for the
- STM32 L4 family. According to datasheet of STM32L496xx, STM32L475xx
- and STM32L443XX the AF2 of PE14 is TIM1_BKIN2 not TIM2_BKIN. From
- Daniel Pereira Carvalho.
- - STM32 L4: Avoid using redundant CONFIG_STM32L4_STM32L4X2. This is
- almost always same as CONFIG_STM32L4_STM32L4X3. Avoid duplication
- to reduce macro clutter. This patch limits
- CONFIG_STM32L4_STM32L4X2 usage to dependency tracking and pinmap.
- Also enable ADC for CONFIG_STM32L4_STM32L4X5 (untested, but same
- RM). From Juha Niskanen.
- - STM32 H7 Serial: don't include stm32_dma.h From raiden00pl.
- * STMicro STM32 Boards:
- - STM32F4-Discovery: Fix pca9635pw LED driver compilation on
- STM32F4-Discovery. From Alan Carvalho de Assis.
- - STM32F4-Discovery: Krassimir Cheshmedzhiev claims that sys/types.h
- needs to be included in the RGB LED file to avoid undeclared 'OK'
- From Gregory Nutt.
- - STM32F4-Discovery: Missing EXTERN(_vectors) in linker script.
- From Gregory Nutt.
- - Nucleo-L422KC: Fix RAM size; STM31L4x2xx has only 64Kb of RAM.
- Remove references to I2C and SDIO: There is no I2C2 or SDIO on the
- STM32F4x2xx. From Daniel P. Carvalho.
- - Nucleo-L422KC: Fix stm32_userleds. After change LD2 to LD3 in
- board.h stm32_userleds.c was broken. From Daniel P. Carvalho.
- - Nucleo-L422KC: Fix TIMx clock configuration. Also removes
- definitions related to timers not available in the STM32L432KC.
- From Daniel Pereira Carvalho.
- - Nucleo-L452RE: Fix TIMx clock configuration. This is cloned from
- similar change to the Nucleo-L422KC. Also fixes DAC build
- failure. From Juha Niskanen.
- - B-L475E-IOT01A: Fix copy paste errors in names:
- stm32_bringup->stm32l4_bringup. Noted by Freemans Goden. From
- Gregory Nutt.
- - STM32VL-Discovery: Changed the status LED to be the green one as
- mentioned in the README file. Removed the global array for buttons
- and replace it with the only button. Improve defconfig for the nsh
- configuration. From Ouss4.
- * C Library/Header Files:
- - libc audio: Call nxsem_destroy in apb_free. From Xiang Xiao.
- - libc netdb: The 'port' argument to the static alloc_ai() function
- is always in network byte order. However, that static function was
- still calling HTONS() on the port, incorrectly converting it back
- to host byte order. From Gregory Nutt.
- - libc netdb: Fix a link error in lib_gethostbynamer.c with protected
- build. NOTE: g_lo_ipv4addr also exists in
- net/loopback/lo_globals.c which can be linked with kernel build
- only. From Masayuki Ishikawa.
- - libc unistd : Fix backward conditional logic in Kconfig. From
- Gregory Nutt.
- - include/nuttx/compiler.h: Fix warning: __cplusplus is not defined.
- Some gcc derived compiler do not define __cplusplus From Xiang
- Xiao.
- - include/nuttx/fs/binfs.h: Fix warning: Type defaults to 'int' in
- declaration of 'mountpt_operations' From Xiang Xiao.
- - include/nuttx/net/ethernet.h: Remove CONFIG_NET_ETHERNET guard
- From Xiang Xiao.
- - include/nuttx/semaphore.h: don't include nuttx/fs/fs.h. (1) Avoid
- nested loops if CONFIG_SIG_EVTHREAD enabled, (2) semaphore.h
- doesn't depends on fs.h. From Gregory Nutt.
- - include/crc64.h: Fix warning: integer constant is too large for
- its type From Xiang Xiao.
- - include/limits.h and include/sys/types.h: Fix warning about
- 'SIZE_MAX' redefined. include/nuttx/usb/audio.h: Fix warnings due
- to '-' used whete '_' intended. From Xiang Xiao.
- - include/spawn.h: Fix posix_spawnattr_destroy warning: 'the
- address of attr will always evaluate as true' From Xiang Xiao.
- - include/sys/types: Move wint_t and wctype_t from wchar.h to
- types.h. This change is compatible as before since wchar.h
- include types.h indirectly. This fixes a compilation error with
- newlib's math.h: 'unknown type name wint_t' From Xiang Xiao.
- - apps/include/netutils/netlib.h: Eliminate a warning about
- AF_UNSPEC and AF_INET not defined. From Gregory Nutt.
- * Build System:
- - Build System: Fix parallel build in making context. This change
- avoids running $(MKSYSCALL) and .context in parallel and ensures
- that tools/mksyscall is built before it is actually used. From
- Masayuki Ishikawa.
- - Kconfig files: Fix several errors noted by Alex Denisov in
- Bitbucket issue 115. From Gregory Nutt.
- - apps Build System: Fix an error when building apps/ without
- nuttx/, using only the NuttX export package and assuming that the
- nuttx/ directory in not even present. In this case, the problem
- fixed where the apps/Make.defs file was selecting tools from the
- /tools directory which does not exist because TOPDIR=apps/import.
- Instead, for this build case, I have not thought of any option but
- to duplicate scripts as necessary in the apps/tools directory.
- Also added a top-level target to compile the symbol table. Misc
- fixes: quoting in scripts, some errors in script syntax. From
- Gregory Nutt.
- - apps/Application.mk: If a loadable module is generated the we
- need to add logic to remove the loadable module in the 'make
- clean' logic. From Gregory Nutt.
- * Tools:
- - nuttx/tools/Makefile.unix: Was not cleaning up export directory
- if it was left from a failed export. From Gregory Nutt.
- - apps/tools: Fix an error in mksymtab.sh From Masayuki Ishikawa.
- * NSH Library: apps/nshlib:
- - apps/nshlib: Fix 'while' and 'until' loop condition The loop
- condition logic was inverted: 'while true; do echo "test"; done'
- would exit immediately, while using 'until' would stay in the
- loop. This is the opposite of how it is supposed to work. The
- reason is that 'state' was set wrong because 'whilematch' is a
- bool. From Beat Küng.
- - apps/nshlib: I was able to cause an assertion with some typos in
- testing the 'fi' command. Not an important thing, but this will
- protect against the assertion. From Gregory Nutt.
- - apps/nshlib: Increase the default configuration for the maximum
- number of command line arguments to 7 (CONFIG_NSH_MAXARGUMENTS).
- This is needed for 'mount' with the -o option. From Xiang Xiao.
- - apps/nshlib: Do not dereference NULL 'pstate' in nsh_console.c.
- From Juha Niskanen.
- * Examples/Tests: apps/examples:
- - apps/examples: Remove illegal calls into OS to initialize BINFMT
- support. This must be moved to the board initialization logic
- within the OS. From anchao.
- - apps/examples/nettest: Fix typo: NET_LOOPBACK ->
- CONFIG_NET_LOOPBACK nettest: Fix compilation error. Should enable
- NET_SETSOCKOPT for preventing compilation error. From EunBong Song.
- - apps/examples/ostest: Signal handling tests should use the same
- configurable stack size as used in other tests, not
- PTHREAD_STACK_DEFAULT. From Gregory Nutt.
- - apps/examples/ostest: Attempt to make the nested signal test
- compatible with the suspend/resume test. Some signals cannot be
- caught when the suspend/resume configuration is in place. From
- Gregory Nutt.
- - apps/examples/smps: Fixes in some printf and in Kconfig. From
- Mateusz Szafoni.
- * System Utilities: apps/system:
- - apps/system/cu: (1) Protect from possible re-definition of signal
- values, (2) Fix CU ctrl-C hand when remote core hang. From ligd.
- - apps/system/i2c: Fix a backward comparison in i2c_main.c. Noted
- by Jakob Haufe. From Gregory Nutt.
- - apps/system/nsh: Fix compile errors with
- CONFIG_EXAMPLES_NSH_SYMTAB=y. From Masayuki Ishikawa.
- - apps/system/ping and ping6: Send ID and seqno in network byte
- order. From Xiang Xiao.
- - apps/system/ping and ping6: Change dependency in ping and ping6
- Kconfig. These may be implemented in users sockets and, hence,
- may need to be available even if ICMP and ICMPv6 sockets are not
- support. From Xiang Xiao.
- - apps/system/system: Add 'const' to make function prototype
- compatible with OpenGroup.org requirement From Xiang Xiao.
- - apps/system/zmodem: Fix error "sz_main.o: No such file or
- directory" From Xiang Xiao.
- * Network Utilities: apps/netutils:
- - apps/netutils/ftpc: Fix handling of url-encoded strings From
- Dmitriy Linikov.
- - apps/netutils/ping: Remove unsupported ping. netutils/ping is not
- supported anymore. It's better to remove this folder for
- preventing confusing. ping is supported by system/ping. From
- EunBong Song.
- * Wireless Utilities: apps/wireless:
- - apps/wireless/wapi: Remove dependency on CONFIG_EXPERIMENTAL from
- Kconfig From Gregory Nutt.
- * GPS Utilities: apps/gpsutils:
- - apps/gpsutils/minmea: Include wchar.h in minmea.c file to fix
- wint_t error From Alan Carvalho de Assis.
- * Interpreters: apps/interpreters:
- - Remove apps/interpreters/micropthon. There are several reasons
- for this. (1) the current version 1.3.8 is very old and no one is
- supporting it. (2) the port only includes the core micropython
- logic and none of the Python libraries. As such it is useless in
- any real application. (3) There have recently been compile
- failures reported. It looks like this is due to changes in newlib
- based toolchains that now bring in incompatible newlib header
- files. See issue 104 at
- https://bitbucket.org/nuttx/nuttx/issues/104/build-micropython-138-error.
- With no one dedicated to the support of micropython, it can no
- longer be carried in the NuttX apps/ repository. From Gregory Nutt.
- NuttX-7.27 Release Notes
- ------------------------
- The 127th release of NuttX, Version 7.27, was made on November 14, 2018,
- and is available for download from the Bitbucket.org website. Note
- that release consists of two tarballs: nuttx-7.27.tar.gz and
- apps-7.27.tar.gz. These are available from:
- https://bitbucket.org/nuttx/nuttx/downloads
- https://bitbucket.org/nuttx/apps/downloads
- Both may be needed (see the top-level nuttx/README.txt file for build
- information).
- Additional new features and extended functionality:
- * Core OS:
- - Assertions: Add 'BOARD_ASSERT_RESET_VALUE' in config/Kconfig and
- replace reboot status '0' to 'CONFIG_BOARD_ASSERT_RESET_VALUE'. From
- Gregory Nutt.
- - Assertions: up_registerdump capture the general register if not yet
- saved and up_saveusercontext is implemented, the register dump is very
- useful to find the cause of failure. From Xiang Xiao.
- - Assertions: up_stackdump() dump the full stack if stack overflow the
- stack info is very useful to find the backtrace From Xiang Xiao.
- - binfmt/ and libs/libc: Make exepath_*() more common: Move
- exepath_*() related code to libc/misc, rename exepath_ to envpath_,
- and rename BINFMT_EXEPATH to LIB_ENVPATH. From nchao.
- - CLOCK: Support CLOCK_MONOTONIC in clock_getres.c. From Xiang Xiao.
- - Clock Timekeeping: Use clock_basetime() to initialize
- g_clock_wall_time to get the best initial RTC value and initialize
- g_clock_last_counter too since the hardware may not start counting
- from zero. From Xiang Xiao.
- - exit(): Add SCHED_EXIT_KILL_CHILDREN option to kill all child threads
- when the main thread of a task exits. From nchao.
- - IOBs: Add an IOB notifier that will notify any registered threads
- that want to known when an IOB has been freed. This is basically just
- a wrapper around the generic notifier. Includes a divider that can be
- used to reduce the rate of IOB notifications. From Gregory Nutt.
- - Memory Manager: In mm_free(), add DEBUGASSERT()'s to catch memory
- corruption early. From Petteri Aimonen.
- - Memory Manager: Add debug option CONFG_MM_FILL_ALLOCATIONS to fill
- all mallocs() with recognizable value. From Petteri Aimonen.
- - sched/signal and syscall/: Add support for pselect() and ppoll()
- functions From dongjianli.
- - Task Groups: group_foreachchild() now iterates in reverse order since
- the callback (e.g. group_killchildren) may remove the tcb from list.
- From zhangyuan7.
- - WDOG Timer: Improve accuracy of wd_gettime() in tickless mode From
- ligd.
- - Work Queues: Add a generic notification facility that runs on a work
- queue. The notication facility can notify a group of subscribers to
- an event via callbacks. This API is for use within the OS only. From
- Gregory Nutt.
- * File Systems/Block and MTD Drivers
- - FAT: Add CONFIG_FAT_LFN_ALIAS_HASH to speed up creating long
- filenames. Long filenames on FAT file systems have associated 8.3
- character alias short filenames. The traditional form of these is
- FILENA~1.EXT with a running count of the number of similar names.
- However creating this unique count can take several seconds if there
- are many similarly named files in the directory. Enabling
- FAT_LFN_ALIAS_HASH uses an alternative format of FI0123~1.TXT where
- the four digits are a hash of the original filename. This method is
- similar to what is used by Windows 2000 and later. From Petteri
- Aimonen.
- - FAT: Add CONFIG_FAT_LFN_ALIAS_TRAILCHARS alternative format for 8.3
- filenames. Traditional format for long filename 8.3 aliases takes
- first 6 characters of long filename. If this option is set to N > 0,
- NuttX will instead take first 6-N and last N characters to form the
- short name. This is useful for filenames like "datafile12.txt" where
- the first characters would always remain the same. From Petteri
- Aimonen.
- - FAT: if block driver wait seems to be a long one, give time for other
- threads to run. From Petteri Aimonen.
- - file_open(): Add file_open() implementation with some fully-function,
- interim, placeholder logic. Change occurrences of open() followed by
- file_detach() in the OS to file_open(). From Gregory Nutt.
- - MX25LF25635F: Add support to Macronix MX25LF25635F serial NOR flash
- From David Sidrane.
- - nx_open(): Add nx_open() which is the same as open() except that it
- does not create a cancellation point nor does it modify the errno
- variable. Change most other, non-controversial calls to open() to
- nx_open(). From Gregory Nutt.
- - file_ioctl(): Replace calls to ioctl() in the OS to file_ioctl().
- From Gregory Nutt.
- - mount: Add mount() support for file systems that require MTD drivers
- (vs. block drivers). From Gregory Nutt.
- - mount: Add support for mounting a file system with either a block or
- an MTD driver. From Xiang Xiao.
- - MTD FTL: Support BIOC_FLUSH ioctl From Xiang Xiao.
- - MTD FTL: Make READAHEAD and WRITEBUFFER work independently of each
- other. There have cases we use writebuffer but not readbuffer, so the
- write buffer must be flushed before read. Let rwb driver do it. From
- zhuyanlin.
- - MTD FTL: Allocate eblock only when it's really needed From Xiang Xiao.
- - MTD FTL: Add support support unlink operation to avoid the memory
- leak. From Xiang Xiao.
- - MTD Partition: Add register_mtdpartition() for MTD partition From
- Xiang Xiao.
- - MTD Partition: Remove the hard code partition name length From Xiang
- Xiao.
- - MTD Proxy: Make MTD device accessible via a character driver proxy
- like block devices From Xiang Xiao.
- - ProcFS: Change output of the ProcFS 'env' file so that it looks more
- like output from the 'env' command. From Gregory Nutt.
- - ProcFS: Add support to provide MLD statistics at /proc/net/mld. From
- Gregory Nutt.
- - ProcFS: Remove MTD ProcFS and mtd_procfsoperations() since we can now
- get the same information from inode From Xiang Xiao.
- - ProcFS: Add /proc/version support to get version info From iuhaitao.
- - ProcFS: Add support for named MTD drivers in the pseudo file system.
- This will, eventually, allow us to mount file systems that need MTD
- drivers without having to fake an intervening block driver.
- - R/W Buffer: Don't queue work to flush write buffer if
- CONFIG_DRVR_WRDELAY == 0 From Xiang Xiao.
- - R/W Buffer: Improve the rwb_read/write overlap performance From
- zhuyanlin.
- - SIM HOSTFS: Support S_IFSOCK, DT_LNK, O_DIRECT and O_SYNC From Xiang
- Xiao.
- - SPIFFS: Brings in a NuttX port of version 0.3.7 of Peter Anderson's
- SPIFFS flash file system into NuttX. From Gregory Nutt.
- * Networking/Network Drivers:
- - Network Configuration Add new configuration CONFIG_NET_MCASTGROUP.
- This option is selected automatically if either CONFIG_NET_IGMP or
- CONFIG_NET_MLD are selected. Most conditional logic based on
- CONFIG_NET_IGMP replaced with conditioning on CONFIG_NET_MCASTGROUP.
- From Gregory Nutt.
- - Network Device: Add notification logic for the case where the network
- goes down. From Gregory Nutt.
- - Network Device: Rename netdev_dev_lladdrsize() to netdev_lladdrsize()
- and move the prototype to include/nuttx/nex/netdev.h, giving is global
- scope within the OS. From Xiang Xiao.
- - ARP: Redesign ARP table aging to simplify the net initialization
- From Xiang Xiao.
- - ARP: Check ifname match before sending packet. From Xiang Xiao.
- - ARP and ICMPv6: Double the delay time on each iteration for ARP/ICMP
- to fight work jitter better. From Xiang Xiao.
- - ICMP/ICMPv6: Add NET_ICMP[v6]_NO_STACK for usrsock case From Xiang
- Xiao.
- - ICMPv6: Encapsulate the link scope address generation into
- icmpv6_linkipaddr() From Xiang Xiao.
- - ICMPv6: Remove the coupling between ICMPv6 and Ethernet by moving all
- Ethernet stuff to neighbor_ethernet_out.c and make the mac address as
- first field. From Xiang Xiao.
- - ICMPv6 MLD: Implement Multicast Listener Discovery (MLD) protocol based
- on RFC 2710 and RFC 3810. From Gregory Nutt.
- - ICMPv6 MLD: Implement MLDv1 compatibility mode. From Gregory Nutt.
- - ICMPv6 MLD: Implement 'Other Querier Present Timer'. This timer is
- used to revert to Querier mode if there is no other querier on the
- network. From Gregory Nutt.
- - IGMP: Backport some MLD design improvements/fixes. From Gregory Nutt.
- - IPv4 setsockopt(): Add implementation for all IPv4 socket options that
- have implemented IOCTL command counterparts. From Gregory Nutt.
- - IPv4/6 Socket Options: Add framework to support IPv4 and IPv6
- protocol socket options (i.e., SOL_IP and SOL_IP6). Handling of these
- socket options was a necessary step on the way to ICMPv6 MLD support.
- From Gregory Nutt.
- - ICMPv6 Autoconfiguration: Don't take the network device down when
- reconfiguring only the IP address from within ICMPv6 logic.
- Recommended by Xiang Xiao in order to avoid the long delays of
- bringing some networks back up. Normally it is required that the
- network be in the "down" state when re-configuring the network
- interface. This is thought not to be a necessary here because: (1)
- The ICMPv6 logic here runs with the network locked so there can be no
- outgoing packets with bad source IP addresses from any asynchronous
- network activity using the device being reconfigured. And (2) incoming
- packets depend only upon the MAC filtering. Network drivers do not
- use the IP address; they filter incoming packets using only the MAC
- address which is not being changed here. From Gregory Nutt.
- - IPv6 Input: Add logic to skip over the variable number of IPv6
- extension headers that may be present between the IPv6 header and the
- transport layer header. The extension headers are simply ignored.
- This is necessary because with MLD, certain incoming messages may
- have, at a minimum, a Router Alert Hop-by-hop extension header.
- Additional changes to ICMPv6, TCP, and UDP input to handle the offset
- protocol headers. From Gregory Nutt.
- - IPv6 Neighbor: Simplify the neighbor table aging process From Xiang
- Xiao.
- - IPv6 Neighbor: Simplify neighbor_dumpentry() implementation From
- Xiang Xiao.
- - IPv6 Neighbor: neighbor_lookup() checks if the target IP belongs to
- one of the local network devices. From Xiang Xiao.
- - IPv6 Neighbor: Support neighbor_out() for multiple link layer at the
- same time From Xiang Xiao.
- - IPv6 setsockopt(): Implement the IPV6_JOIN_GROUP and IPV6_LEAVE_GROUP
- socket options. From Gregory Nutt.
- - TCP: Extend the TCP notification logic logic so that it will report
- loss of connection events. From Gregory Nutt.
- - SLIP: Add IPv6 support and fix minor issue From Xiang Xiao.
- - TCP: Add TCP poll() logic to receive notifications when IOBs are
- freed. From Gregory Nutt.
- - TCP: In TCP backlog, add SOMAXCONN definition and implementation per
- OpenGroup.org. From zhangyuan7.
- - TCP/UDP: Extend send()/sendto() logic it also requires that at least
- one IOB is also available to be able to send. From Gregory Nutt.
- - TCP/UDP: Add notification logic when TCP or UDP read-ahead data is
- buffered. From Gregory Nutt.
- - TUN: Call ipv[4|6]_input dynamically by checking packet header and
- remove the code duplication From Xiang Xiao.
- * Wireless/Wireless Drivers:
- - Broadcom IEEE 802.11: Add capability for Broadcom chips to get
- firmware and CLM data from a mounted file system vs. in-memory data
- structures. From Ramtin Amin.
- - XBee IEEE 802.15.4: Add support for setting/getting tx power. From
- Anthony Merlino.
- * Other Common Device Drivers:
- - GPIO: Support multiple registrations of GPIO signal events. From
- Xiang Xiao.
- - INA226: Add INA226 device driver. From Daniel P. Carvalho.
- - MAX7219: Support all digits presented in the MAX7219 datasheet. From
- Alan Carvalho de Assis.
- - MLX90614: Add support for the Infrared Thermometer MLX90614 From
- Alan Carvalho de Assis.
- - RTC Driver: up_rtc_set_lowerhalf call clock_synchronize() for
- external RTC. From Xiang Xiao.
- - SYSLOG: Uncomment the g_syslog_channel->sc_flush call in
- syslog_flush(). From Xiang Xiao.
- - SYSLOG: syslog_initialize initialize dev/syslog too and call syslog
- to add the prefix and timestamp. From Xiang Xiao.
- - USB Composite and DFU drivers: Add support for Microsoft OS
- descriptors. These Microsoft-only descriptors help in loading the
- correct driver on Windows. They are especially helpful to give libusb
- access to a custom device without having to manually configure/install
- WinUSB driver. With this change DFU interface works automatically on
- Windows 10 with dfu-util 0.9 and libusb 1.0.22. On Windows 7 it still
- appears to need driver installation. From Petteri Aimonen.
- - USB DFU Device: Add DFU Runtime driver for activating boot-loader
- through USB command. From Petteri Aimonen.
- - USB RNDIS Device: Account for CONFIG_NET_GUARDSIZE in allocation of
- packet buffer allocation: Make USB device parameters configurable.
- From Sakari Kapanen.
- - USB RNDIS Composite Device: Fix strid comparison. Add support for
- composite configuration. From Petteri Aimonen.
- * Microchip PIC32MX Boards;
- - PCBLOGIC-PIC32MX: Remove support for the PCB Logic PIC32MX board. I do
- not find any references to PCB Logic on the web and I do not believe
- that this breakout board is available any longer. From Gregory Nutt.
- * NXP Freescale i.MX RT:
- - i.MXRT: Added support for the i.MXRT 106x family. From David Sidrane.
- * NXP Freescale i.MX RT Drivers:
- - i.MXRT: Add LPI2C driver. From Ivan Ucherdzhiev.
- - i.MXRT LPSPI: Add full support for the LPSPI in poll mode; includes a
- minor fix for LPI2C.
- - i.MXRT USDHC: Initial commit of the i.MXRT SDHC driver working in PIO
- mode. From Dave Marples.
- - i.MXRT USDHC: Complete the interrupt driven USDHC1 functionality for
- the IMXRT EVKB. Improve SD card handling in the DMA case. From Dave
- Marples.
- * NXP Freescale i.MX RT Boards:
- - IMXRT1060-EVK: Add support for the IMXRT1060-EVK. From David Sidrane.
- * NXP LPC17xx Boards:
- - Olimex-LPC1766STK: Add support to initialize a USB HID keyboard. Add
- a configuration for testing the HID keyboard. From Gregory Nutt.
- * On Semi LPC23450 Drivers:
- - LC823450: MPU support for FLAT build From Masayuki Ishikawa.
- * STMicro STM32:
- - STM32: Add support for STM32F303xD/E. From Mateusz Szafoni.
- - STM32 L4: Add initial support for STM32L412 and STM32L422 chips From
- Juha Niskanen.
- * STMicro STM32 Drivers:
- - STM32 ADC: Major refactor: Use STM32 ADC IP core version and ADC
- available functions instead of chip family names in conditional
- compilation. Replace family specific ADC headers with STM32 ADC IP
- core version headers. Configurable sample time supported for all
- chips, not just L1. Enable/disable interrupts supported for all
- chips, not just L1. Add ADC resolution configuration. From Mateusz
- Szafoni.
- - STM32 PWM: Improvements in STM32 PWM low level driver: Support
- complementary outputs, dead-time configuration, output polarity and
- IDLE state configuration. From Mateusz Szafoni.
- - STM32 PWM: Break and lock configuration and some cosmetics From
- Mateusz Szafoni.
- - STM32 SPI. Enable separate DMA per SPI configuration From Daniel Agar.
- - STM32 F7 FLASH: Allow programming OTP blocks through progmem
- interface From Jussi Kivilinna.
- - STM32 H7 I2C: Add I2C support for STM32H7. From raiden00pl.
- - STM32 H7 RCC: Update RCC definitions, add SPI clock configuration and
- some fixes in RCC. From raiden00pl.
- - STM32 H7 SPI: Add basic SPI support for H7. Enable SYSCFG clock in
- RCC. From Mateusz Szafoni.
- * STMicro STM32 Boards:
- - Nucleo-F302R8: Add support for Nucleo-F302R8 board From raiden00pl.
- - Nucleo-F302R8: Add PWM support. From Mateusz Szafoni.
- - Nucleo-F303ZE: Add basic support for nucleo-f303ze. From Mateusz
- Szafoni.
- - Nucleo-F303ZE: Support for ADC and ADC example. From Mateusz Szafoni.
- - Nucleo-L432KC: Added support for AT45DB Serial Flash From Daniel P.
- Carvalho.
- - Nucleo-L432KC: Add support for the INA226. From Daniel P. Carvalho.
- - Nucleo-H743ZI: Add NRF24L01 support. From Mateusz Szafoni.
- - Olimex-STM32-P407: Add a HID keyboard configuration. From Gregory
- Nutt.
- - STM32F4-Discovery: Add MLX90614 support for the STM32F4-Discovery
- board From Alan Carvalho de Assis.
- - STM32F429I-DISCO: Add PWM support. From Mateusz Szafoni.
- - STM32F429I-DISCO: Support for ADC and ADC example. From Mateusz
- Szafoni.
- * MIPS32:
- - MIPS32 Toolchain.defs: Add toolchain flags for the pinguino toolchain
- under Linux. From Ouss4.
- * RISC-V:
- - RISC-V GAP: This commit brings in support for the GAP8 architecture.
- The GAP8 is a 1+8-core DSP-like RISC-V MCU. Also included is support
- for the Gapuino GAP8 evaluation board. From hhuysqt.
- * Other Tools:
- - tools/tesbuild.sh: No longer installs and builds the NxWidgets
- libraries. They are now a port of apps/. From Gregory Nutt.
- * Libraries/Header Files:
- - include/net and include/sys: Align the constant values with values in
- the Linux kernel which makes targeting the usrsock server to Linux
- kernel easier. From Xiang Xiao.
- - include/netdb.h Add NO_ADDRESS definition From zhangyuan7.
- - include/netinet/in.h: Adds definitions for IPPROTO_IPV6 socket
- options to netinet/in.h. Adds missing fields to sockaddr_in6. Adds
- struct ipv6-mreq. These changes all follow the opengroup standard for
- netinet/in.h From Anthony Merlino.
- - include/netinet/in.h: Add IPv4 SOL_IP socket options for symmetry
- with IPv6 definitions added in a previous commit. Remove some
- duplicate types from sys/sockio.h. From Gregory Nutt.
- - include/netinet/in.h: Add other definitions required by
- OpenGroup.org. From Gregory Nutt.
- - include/netinet/in.h: Add Linux IP_PKTINFO and IPV6_PKTINFO
- definitions.
- - include/nuttx/net/ipv6ext.h: Create header file with all of the
- definitions of IPv6 extension headers that I could find. From Gregory
- Nutt.
- - include/nuttx/net/mld.h: Add MLD header file based on RFC2710 and
- RFC3810. From Gregory Nutt.
- - include/sys/socket.h: With increased size of struct sockaddr_in6, the
- size of struct sockaddr_storage in include/sys/socket.h must also be
- increase so that it can contain the new, larger sockaddr_in6. From
- Gregory Nutt.
- - libs/libc/misc: Add implementation of CRC8-CCITT. From Alan Carvalho
- de Assis.
- - libs/libc/modlib: Add per-module library symbol table support. From
- nchao.
- - libs/libc/net: Add basic implementation for recvmsg() and sendmsg()
- per OpenGroup.org specification. From ligd.
- - libs/libc/netdb: A few improvements to getaddrinfo: (1) Use the
- protocol and socktype hints in returned address, (2) Ignore AI_PASSIVE
- argument if hostname is not NULL From Anthony Merlino.
- - libs/libc/netdb: Make DNS receive timeout configurable. From ligd.
- - libs/libc/stdio: Eliminate recursive in conversion functions of
- lib_vsprintf(). From Xiang Xiao.
- - libs/libc/string: Add some new functions defined in POSIX.1-2017:
- stpncpy(), strsignal(), psignal(), psiginfo(). From Gregory Nutt.
- - libs/libc/string: Add memrchr() function From Xiang Xiao.
- - libs/libc/string: Make strerror() return the string "Success" for
- error = 0. From Petteri Aimonen.
- * Build System:
- - Makefile.unix/win: Remove deletion of Eclipse project files from make
- distclean target. From Gregory Nutt.
- - apps/Application.mk: Fix some build issues. (1) Unable to found
- target 'context' when CONFIG_NSH_BUILTIN_APPS disabled. (2) Unable to
- generate multiple programs. From Chao An.
- - apps/Directory.mk: Fix distclean targets. Makefiles were not
- removing generated Kconfig files. There was then no way to remove
- this Kconfig files without manually deleting them one at a time. From
- Gregory Nutt.
- * NSH: apps/nshlib:
- - apps/nshlib/, apps/examples/: Update to show newer file system
- object types returned by stat(). From Gregory Nutt.
- - apps/nshlib: Add support for the 'env' command. From Gregory
- Nutt.
- - apps/nshlib: Add support for NSH local variables if
- CONFIG_NSH_VARS are set. These are like environment variables but
- are local to NSH. The importance of this is that these variables
- are *not* inherited when NSH creates a new task. The new command
- 'export' was added. In this case, the NSH variable will be promoted
- to an environment variable and will then be inherited by any tasks
- executed by NSH. From Gregory Nutt.
- - apps/nshlib: If CONFIG_NSH_VARS=y, the NSH 'set' command with no
- argument will list all of the local NSH variables. From Gregory
- Nutt.
- * Examples/Tests: apps/examples:
- - apps/examples/gpio: Align with GPIO driver update From wangyanjiong.
- - apps/examples/ina226: Added INA226 example From Daniel P. Carvalho.
- - apps/examples/mld: Add a test of MLD. Provides a mechanism for some
- low-level bring-up of MLD. From Gregory Nutt.
- - apps/examples/mlx90614: Add mlx90614 test example From Alan Carvalho
- de Assis.
- - apps/examples/mlx90614/: Include support to change device address on
- mlx90614 From Alan Carvalho de Assis.
- - apps/examples/fstest: Adapt the existing fstest example for SPIFFS:
- For SPIFFS, add garbage collection and file system integrity IOCTL
- calls. Call statfs() and show state of file system on each loop. Add
- logic to dump logic content of SPIFFS. Ignore EINTR errors while
- reading or writing. Add configuration option to customize stack
- size. Detect when the media is full and stop writing files. Report
- total file size. From Gregory Nutt.
- - apps/examples/tcpblaster: Add an option to use poll() to pace input
- or output. From Gregory Nutt.
- - apps/examples/tcpblaster: Select CONFIG_LIBC_FLOATINGPOINT
- automatically. Units in output are wrong: Not Kbps bus Kb/Sec. From
- Gregory Nutt.
- - apps/examples/udpblaster: Add option to use poll() on output (only).
- From Gregory Nutt.
- * System Utilities: apps/system
- - apps/system/ping and apps/system/ping6: Set optind to zero in the
- error case/. Move all ping preparation work into icmp_ping. Support
- -W <timeout> and -s <size> option. Decouple the output from ping
- logic. From Xiang Xiao.
- - apps/system/ping and pings and apps/netutils/ping: Extract icmp ping
- and icmpv6 ping6 logic from system/ to C-callable library in
- netutils/. From ligd.
- - apps/system/progmem: Remove this utility. It makes illegal direct
- calls into the OS. From Gregory Nutt.
- * Network Utilities: apps/netutils:
- - apps/netutils/netlib and apps/examples/igmp: Adapt to use the
- corrected, semi-standard version of struct ip_msfilter. From Gregory
- Nutt.
- - apps/netutils/chat and apps/examples/chat: 'constify' chat variables
- and parameters From Xiang Xiao.
- * Wireless Utilities: apps/wireless:
- - apps/wireless/ieee802154/i8sak: Properly shuts down event thread.
- From Anthony Merlino.
- - apps/wireless/ieee802154/i8sak: Fixes i8sak name. Accidentally renamed
- to i8ask in recent changes From Anthony Merlino.
- - apps/wireless/ieee802154/i8sak: Adds support for getting/setting
- transmit power. From Anthony Merlino.
- * Graphic Utilities: apps/graphics:
- - apps/graphics/NxWidgets: Move the NxWidgets repository into the apps/
- repository. Remove old apps/NxWidgets directory. Move NxWidgets
- files into apps/graphics/NxWidgets. Integrate configuration/build
- system. Fix file paths in file headers. Remove some duplicate
- tools. Add new NxWidgets Unit Test configuration and build logic.
- From Gregory Nutt.
- - apps/graphics/NxWidgets: Add CNxString string + operator and
- ::format() function. Add CNumericEdit option to include unit name
- after the value. Make CNxWidget useWidgetStyle() public. From
- Petteri Aimonen.
- - apps/graphics/NxWidgets: Add CLabelGrid control for displaying text
- in grid format. From Petteri Aimonen.
- Bugfixes. Only the most critical bugfixes are listed here (see the
- ChangeLog for the complete list of bugfixes and for additional, more
- detailed bugfix information):
- * Core OS:
- - Clock: Remove g_monotonic_basetime and g_clock_monotonic_time since
- we don't need ensure monotonic time start from zero as state here:
- http://pubs.opengroup.org/onlinepubs/009696899/functions/clock_getres.html
- From Xiang Xiao.
- - Clock: Don't call up_timer_gettime in clock_gettime() and
- clock_systimer() to ensure the return value from them consistent with
- clock_systimespec From Xiang Xiao.
- - Clock Initialization: clock_inittime() needs to be done with
- CONFIG_SCHED_TICKLESS and clock_initialize should skip
- clock_inittime() for external RTC case since the RTC isn't ready yet.
- From Xiang Xiao.
- - IOBs: Work around some issues with the IOB throttle semaphore. It
- has some odd behaviors that can cause assertions in sem_post(). Also,
- it seems to get outside of its range occasionally. Need to REVISIT
- this. From Gregory Nutt.
- - IOBs: iob_navail() was returning the number of free IOB chain queue
- entries, not the number of free IOBs. Completely misnamed. From
- Gregory Nutt.
- - PM: Use the start time of state btime to calculate thrcnt; remove the
- loop whose count may be very big after the long idle From ligd.
- - PM Uninitialization: Fix pm_domain_s.stime un-initialize caused time
- error. From ligd.
- - sched_kfree() and sched_ufree(): This patch prevent heap corruption
- in a corner case where memory is freed while switching contexts. This
- change forces all de-allocations via sched_kfree() and sched_ufree()
- to be delayed. Eliminating the immediate de-allocation prevents the
- problem with the the re-entrant semaphore because the deallocation
- always occurs on the worker thread, never on the suspended task. From
- EunBong Song.
- - sigsuspend(): sigsuspend() shouldn't eat the pending signal but
- dispatch all instead From Xiang Xiao.
- - task_restart(): Was restarting tasks with all signals set in the
- sigprocmask set. Should have restarted with the sigprocmask cleared.
- Noted by Jeongchan Kim From Gregory Nutt.
- - unsetenv(): Fix and error in unsetenv() when un-setting the last of
- the environment variables. From Gregory Nutt.
- - waitpid(): Remove a bad error check. From Gregory Nutt.
- * File System/Block and MTD Drivers:
- - FAT: Fix file data corruption in fat_truncate(). From Petteri Aimonen.
- - Partitions: Try MTDIOC_GEOMETRY IOCTL before bops's geometry.
- From Xiang Xiao.
- - MTD Progmem: Change up_progmem_npages() to up_progmem_neraseblocks().
- page is a unit for read/write operation. eraseblock is a unit for
- erase operation. up_progmem_npages() is a little bit confusing
- because it returns number of erase blocks in flash memory. This patch
- changes up_progmem_npages to up_progmem_neraseblocks.
- up_progmem_eraseblock erase a block. so it's better to return the
- erase block size than page size. From EunBong Song.
- - R/W Buffer: Fix a lock issue From Xiang Xiao.
- - SmartFS: Current sector should have a space for next entry size. If
- not, we should move to next sector. From EunBong Song.
- * Networking/Network Drivers:
- - 6LoWPAN: Fixes bug in uncompress_addr handling of odd postfix. This
- affected multicast compress/uncompress since it's the only logic that
- used an odd postfix. The odd byte needs to be handled first, not
- last. From Anthony Merlino.
- - ARP and ICMPv6: Don't call d_txavail directly since it may point to
- NULL From Xiang Xiao.
- - ICMPv6: icmpv6_neighbor() shouldn't use the out of scope
- variable(dripaddr) From Xiang Xiao.
- - IPv6 input: Fixes logic in ipv6_input to handle more than ff02::/16
- multicast addresses. Don't forward mcast packets if scope is not
- appropriate From Anthony Merlino.
- - IPv6 Input: Fix a logic error when the received IPv6 srcaddr is a
- multicast address. Exiting logic only supported UDP multicast. But
- MLD and certain other ICMPv6 packets also require acceptance of
- multicast packets. From Gregory Nutt.
- - TCP: In TPC recv window calculations, in order to receive data we
- must not only have IOBs available, but we must also have at least one
- IOB chain qentry available. Otherwise, we will advertise that we an
- buffer a lot of data when, in fact, we cannot. This is an
- experimental fix to a performance problem noted by Masayuki Ishikawa.
- From Gregory Nutt.
- - TCP: Fix compiler error and warning when CONFIG_NET_SENDFILE=y From
- Xiang Xiao.
- - TCP Input: Fix recovery when ackseq > unackseq. The comment near
- this line says "reset the number of outstanding, unacknowledged
- bytes". However, the code actually resets the whole TCP connection.
- It was changed to the current form in commit f034d84ea1f with no
- explanation of the intent. Recover the line to what it was before that
- commit. From Sakari Kapanen.
- - TCP Write Buffering: Fix buffer release handling on failed buffer
- allocation. Attempt to release write buffer on failed TCP write I/O
- buffer alloc and tryalloc failed to wrb->wb_iob assertion. From Harri
- Luhtala
- - TCP/UDP: In the POLLOUT poll logic, request an immediate Tx poll from
- the network device bound to the socket. From Gregory Nutt.
- - UDP: On a failure to find the destination device, fallback to
- netdev_default device if the device is not found, rather than
- arbitrary using the device at the head of the list of devices. From
- Xiang Xiao.
- - USRSOCK: Revert previous commit to re-allow combination of usrsock
- and NuttX TCP/IP stack. For example, in case device has Ethernet and
- mobile connectivity and NuttX TCP/IP stack is used when configured to
- use Ethernet connection and usrsock when configured to use modem
- (modem TCP/IP stack through usrsock). From Jussi Kivilinna.
- - USRSOCK accept(): Mark newconn ready before issue accept request to
- avoid the case that the request is discarded due to the socket being
- in the invalid state From Xiang Xiao.
- * Wireless/Wireless Drivers:
- - Broadcom 802.11 Driver: There were two functions that have a address
- issue. In bcmf_read_sbreg() and bcmf_write_sbreg():
- SBSDIO_SB_OFT_ADDR_MASK should be used before map address space.
- Noted by Shao Li in Bitbucket issue #126. From Gregory Nutt.
- - Broadcom 802.11 Driver: Remove incorrect OR condition. Always true.
- Noted by Shao Li in Issue 127. From Gregory Nutt.
- - NRF24L01: Fix compilation errors. From Mateusz Szafoni.
- * Other Common Drivers:
- - ALARM Upper Half: Fix alarm ISR error when no CONFIG_SCHED_TICKLESS
- drivers/timers/arch_alarm.c: Use uint64_t to avoid alarm 32-bit
- overflow. From ligd.
- - MAX11802: Fix compilation errors and allow setting PULL and SAMPLE
- registers. From Petteri Aimonen.
- - S25FL1: During a MTDIOC_GEOMETRY ioctl call, the driver was
- incorrectly reporting the blocksize to be the same as the erasesize.
- The blocksize should be 256 (the page size). This patch fixes that,
- and now the SmartFS configration is working. From Ken Pettit.
- - SYSLOG: nx_syslog's return value should include the timestamp length
- From Xiang Xiao.
- - SYSLOG: syslog_putc() calls sc_force in idle task even if interrupt
- buffer enabled. The following cases may hang randomly in the bring up
- phase: (1) boot up process and (2) suspend/resume process. Either
- case runs in the idle task context, so it's difficult to debug the
- hang issue if these output go through the interrupt buffer. From
- Xiang Xiao.
- - SYSLOG: Ensure interrupt log doesn't interlace in normal log. Don't
- call syslog_putc in syslog_default_write because syslog_putc will try
- to empty the interrupt buffer every time. From Xiang Xiao.
- - UART 16550: Fix UART flow control issue. UART_MCR_RTS need be high
- even UART_MCR_AFCE is enabled From zhangyuan7.
- - USB RNDIS Device: Fix buffer overrun check in rndis.c. The rndis
- driver has been working since 13 Nov 2017. However, I finally found
- that it depends on network and buffer configurations. If a receiving
- TCP packet is divided into smaller ones based on USB max packet size,
- this condition check works correctly. From Masayuki Ishikawa.
- * ARMv7-A:
- - ARMv7-A: Replicate the same fix was previously committed for the
- ARMv7-R. From Gregory Nutt.
- * ARMv7-R:
- - ARMv7-R: Fix error in cp15_flash_dcache. Change mcrne to mcr for
- unconditional dcache. From EunBong Song.
- * ARMv7-M:
- - ARMv7-M Interrupts: Correct all ARMv7-M architectures. Interrupts
- were not be disabled correctly on power up. Writing zero to the NVIC
- SET-ENABLE registers has no effect. In order to disable interrupts,
- it is necessary to write all ones to the NVIC CLEAR-ENABLE register.
- Noted by David Sidrane. From Gregory Nutt.
- * Broadcom BCM2708 Drivers:
- - BCM2708 Serial: Juha Niskanen's fix related to STM32
- CONFIG_SERIAL_OFLOWCONTROL also applies to cloned logic in BCM2708.
- From Gregory Nutt.
- * Intel x86:
- - Qemu i486: Correct .bss, IDLE stack, heap organization. From Gregory
- Nutt.
- * NXP/Freescale LPC43xx Drivers:
- - LPC43 Ethernet: Fix Ethernet TX_EN pin definitions. TX_EN on LPC43xx
- can be routed via P0.1 and PC.4 in both MII and RMII mode. Before,
- P0.1 was hard-coded for MII and PC.4 was hard-coded for RMII. Also,
- the definitions used inconsistent naming (TXEN vs. TX_EN). From Jakob
- Haufe.
- - LPC43 Serial: Fix copy-paste error: g_usart1port->g_uart1port. From
- Dave Marples.
- - LPC43 SDMMC: Fix the LPC43 family SDMMC card access: Clocks were
- wrongly configured, way too fast because there is no primary divider
- on LPC4330, the LPC43_SDMMC_DELAY register was not being set, the
- LPC43_SDMMC_BLKSIZ and LPC43_SDMMC_BYTECNT registers had the wrong
- values. From Dave Marples.
- - LPC43 SDMMC: Corrected a problem in lpc43_dmasendsetup(). There was
- no linked DMA descriptor code on the send side. The end result was
- stalls while sending multiple sectors. This commit adds that in and
- the send code is working much better. From Dave Marples.
- - LPC43 SDMMC: With these changes the SDMMC card for LPC43 is now
- working properly: Timing was dependent on CPU speed rather than
- absolute time, end of transfer handling was a bit mixed up. It is
- possible for data to still be in the FIFO (i.e. not have reached the
- card) when a next write is requested, so we need to wait for that to
- complete. Interrupt Status could be carried over from one transfer
- episode to the next, corrupting progress. Multi-descriptor DMA
- writing simply wasn't implemented. From Dave Marples.
- * NXP/Freescale LPC43xx Boards:
- - Bambino-200E: Correct calculation of SDMMC clock configuration. The
- LPC43 has no SDMMC source clock divider. Error noted by Dave
- Marples. From Gregory Nutt.
- * NXP/Freescale Kinetis:
- - Kinetis: Remove all attempts to reprioritize interrupts. From Gregory
- Nutt.
- * NXP/Freescale Kinetis Drivers:
- - Kinetis I2C: I2C On failed reset re-initialization I2C and clocking.
- If a reset fails, we still must reinitializes the I2C block so that
- subsequent transfers will not cause a hard-fault due to the clock
- being off. If that transfer fails it can try to reset again. From
- David Sidrane.
- - Kinetis Serial: Juha Niskanen's fix related to STM32
- CONFIG_SERIAL_OFLOWCONTROL also applies to cloned logic in Kinetis.
- From Gregory Nutt.
- * NXP i.MXRT Drivers:
- - i.MXRT Ethernet: The board would not come up if I ran Nuttx from cold.
- I dumped the PHY registers to see what the differences were and the
- PHY was coming up in NANDTree mode. This is a mode for testing
- connectivity between the PHY and the MAC. Switching this mode off in
- the PHY registers has fixed the problem. From Dave Marples.
- - i.MXRT Ethernet: Fix a race condition in setting up the Ethernet Tx
- transfer. From Dave Marples.
- - i.MXRT Ethernet: Corrections for the i.MXRT Ethernet: (1) Now the
- Ethernet is completely re-initialized when an error occurs by means of
- taking the interface down and back up but the PHY is _not_
- renegotiated for that case because that is very time consuming and an
- error in the Ethernet is no reflection on the state of the PHY
- anyway. (2) Explicitly sets the expected PHY address to zero (this
- could be moved into the config rather than searching for it which
- takes ages, and it's zero anyway for this board (that's the broadcast
- address, and anything that cannot respond on that has multiple PHYs,
- so that would be a new board). (3) Allows for the renegotiation of
- the PHY to be optional when a reset is needed. If a non-renegotiated
- reset doesn't result in good comms to the PHY then it'll automatically
- be escalated to a renegotiated one. (4) Only performs a reset for
- errors that need it (the CRITICAL_ERROR define). The list of errors
- that need reset are somewhat arbitrarily chosen based on my prejudices
- and might need to be revisited, but certainly the jabber errors don't
- need reset, the partial packet is thrown away by the layer above
- anyway. (5) Re-loads the multicast table on reset. (6) Adds a bit
- more logging into the imxrt Ethernet module. From Dave Marples.
- - i.MXRT LPI2C: Fixes 2 bugs in the for IMXRT1050: (1) I2C time out and
- did not send STOP condition when sending single byte, (2) I2C could
- not receive bytes after repeated start. From Ivan Ucherdzhiev.
- - i.MXRT LPSRTC: SVNC LPCR register bits 0 & 1 are NOT reserved and
- are, in fact, needed to enabled the SRTC. Now the SRTC is working.
- From Ivan Ucherdzhiev.
- - LPC54 SDMMC: Add support for and SDMMC errata. It appears that now I
- can read the SD card successfully, but I get CRC errors when writing
- to the card. From Gregory Nutt.
- - LPC54 SDMMC: Ported Dave Marples fixes LPC43 SDMMC to the LPC54.
- From Gregory Nutt.
- - i.MXRT WDOG: Typos in bit definitions, wdog registers are 16 bits,
- wdog update has to be within 255 clocks of unlock, define board
- clocking based on divisor and muxes. From David Sidrane.
- * NXP i.MXRT:
- - i.MXRT: clockconfig bug fix: Fixed logic that was not clearing bits
- as ~ was missing in &= mask operations. Use values from the board.h
- file so set the Mux that selects the clock sources. Use board
- defined PODF values to select clock. Only configure USDHC2 clocks
- when board defines clocks. From David Sidrane.
- * NXP i.MXRT Boards:
- - IMXRT1050-EVK: Previous committed implemented SPI-based MMC/SD card
- support conditioned on CONFIG_MMCSD. This interferes with the
- implementation of MMC/SD card support using the SDIO-based
- peripheral. This commit renames that atypical support to *mmcsd_spi*
- and conditions using the SPI-based support on CONFIG_MMCSD_SPI which
- will then not interfere with the MMC/SD support that can be
- conditioned on CONFIG_MMCSD_SDIO. From Gregory Nutt.
- * On Semi LC823450 Boards:
- - LC823450: Fix up_allocate_heap() in lc823450_allocateheap2.c. For
- lc823450, heap area in flat build mode must start just after
- _eronly. Because bss/data area is allocated in lower address than
- text area in SRAM. See ld.scripts for details. Also, this change
- removes unused up_allocateheap.c From Masayuki Ishikawa.
- * Silicon Labs EFM32 Drivers:
- - EFM32 Serial: Juha Niskanen's fix related to STM32
- CONFIG_SERIAL_OFLOWCONTROL also applies to cloned logic in EFM32.
- From Gregory Nutt.
- - EFM32 USB Device: The epin_configure() function used the same eptype
- as the TxFIFO number for all endpoints. This should probably be the
- physical EP number, not the EP type. Suggested by Key Two. From
- Gregory Nutt.
- * STMicro STM32 Drivers:
- - STM32* SPI: Don't rely on SPI_CR1_SPE to determine if peripheral has
- been initialized. This change is needed specifically for the case
- where a boot loader sets the SPE bit before starting NuttX. In that
- case, the test in the SPI driver is wrong. This change fixes that by
- assuring that NuttX has booted and initialized at least once (whether
- or not SPE is set) before the driver starts refusing to initialize.
- From Anthony Merlino.
- - STM32 F0, F7, H7, L4 Serial: Fix use of CONFIG_SERIAL_IFLOWCONTROL
- where CONFIG_SERIAL_OFLOWCONTROL was intended. From Juha Niskanen.
- - STM32 TIM: Don't use hard-coded UIF interrupt in some functions.
- From raiden00pl.
- - STM32 (FS/HS), STM32F7, and STM32L4 OTGFS/HS Device: The
- epin_configure() function used the same eptype as the TxFIFO number
- for all endpoints. This should probably be the physical EP number,
- not the EP type. Suggested by Key Two. From Gregory Nutt.
- - STM32 F2: Fixes Kconfig options to include all STM32F20XX processors,
- not just STM32F207. Also removes redundant STM32_STM32F429 depends
- from Kconfig. STM32F4XXX already does this. From Anthony Merlino.
- - STM32 F4 DAC: STM32F407VG has only one DAC. NDAC=2 causes
- compilation error when trying to use e.g. STM32_DAC1_CR macro. From
- Petteri Aimonen.
- - STM32 F7 Serial: Force invalidation of data cache after DMA re-enable
- when returning from low-power mode From Juha Niskanen.
- * STMicro STM32 Boards:
- - B-L475E-IOT01A: Correct timer source clock frequencies. From Freemans
- Goden.
- - Nucleo-L432KC: Fix SPI pin definitions in board.h. From Daniel P.
- Carvalho.
- * MIPS32:
- - CP0 Definitions: Fix some copy-paste errors that cause malformed
- comments and syntax errors when certain CP0 CONFIG1 bits are
- referenced. Note in Issue 123 by Anonymous. From Gregory Nutt.
- - microMIPS: Reported by Anonymous in Bitbucket Issue #129: When MIPS
- port is built for microMIPS and then loaded as an application, the
- __start entry point is entered in microMIPS mode, but the CPU core
- initialization code there misses to set the config3ISAOnExc bit to 1.
- Subsequently, exceptions are entered in MIPS32 mode, but the code base
- was built for microMIPS.
- * Microchip PIC32MZ:
- - PIC32MZ Startup: In pic32mz-head.S, initialize the global pointer in
- all shadow sets. From Ouss4.
- * Microchip PIC32MZ Drivers:
- - PIC32MZ Serial: Fix a typo in assignment of TTYS0 to UART6 From Ouss4.
- * Simulation:
- - SIM Network Driver: Fix error 'invalid operands to binary &' From
- Xiang Xiao.
- * C Library/Header Files:
- - Fix typographical error in endian.h and resource.h From anchao.
- - include/net/if.h: Adds extern "C" guard in include/net/if.h From
- Anthony Merlino.
- - include/netinet/in.h: Per OpenGroup.org, type of sin_port in struct
- sockaddr_in must be in_port_t vs uint16_t. NOTE: in_port_t is
- typdef'ed as uint16_t anyway. From Gregory Nutt.
- - include/nuttx: Fix definitions used to access OS functions within the
- libraries. In the FLAT build, we must always set the errno and/or
- create cancellation points because the same library functions are used
- within the OS as are used by applications. This could cause issues
- for the OS but corrects some problems at the user interface. Noted by
- Federico Braghiroli in Bitbucket issue 121. From Gregory Nutt.
- - include/nuttx/clock.h: Fix uptime wrong if DEBUG_FEATURES and
- SCHED_TICKLESS enabled. From Xiang Xiao.
- - include/nuttx/fs/fs.h: Fix some backward parameters in a new macro
- definition. From Gregory Nutt.
- - include/nuttx/fs/fs.h: Register_mtddriver should depend on CONFIG_MTD
- not CONFIG_MTD_PARTITION From Xiang Xiao.
- - include/sys/socket.h: Renumber the socket types. They must begin at
- 1, not zero. Socket type zero has a special meaning for some
- interfaces. For example, getaddrinfo() uses a socket type of zero to
- many any type of socket. The is no standard name for the
- any-type-socket, but macOS uses SOCK_UNSPEC. NuttX will do the same.
- Issue noted by Anthony Merlino. From Gregory Nutt.
- - libs/libc: Correct some errors in psignal() and stpncpy(). From
- Lokesh B V.
- - libs/libc/math: Add variable convergence in log() and logf() to avoid
- hangs caused by failure to converge for very specific input values.
- Also includes a small change to log() and logf() that improves
- accuracy and convergence time. From Rajan Gill.
- - libs/libc/stdio: Fix conversion for format specifiers in sscanf() that
- appear right after a floating point format specifier. When
- performing a floating point conversion the parsing code could consume
- more than required characters from the input buffer. This made
- impossible to convert input of form "1.1K" using format "%f%c". Fix
- the issue by advancing the input buffer with the actual characters
- converted as a float point number. From Mihai Serban.
- - libs/libc/stdio: Remove CONFIG_NOPRINTF_FIELDWIDTH. That option
- does, indeed, make the printf family of functions much smaller. But
- it also adds a lot of complexity and makes the functions
- non-standard. Removing this might break some of the tinier platforms
- but it is the best thing to do for long term maintenance for for
- OpenGroup.org compliance.
- - libs/libc/stdio: Update to vsprintf(). This resolves the integer
- field width problem if Issue 35 for the cases of integer, long and
- long long integer types. The output now matches the output form
- glibc. From Gregory Nutt.
- - libs/libc/string: Correct the return pointer value from stpncpy() for
- the case where the NUL terminator is transferred. From Gregory Nutt.
- - libs/libc/string: Fix strrchr() so that it considers null terminator
- as part of string. From Petteri Aimonen.
- - libs/libc/wqueue: Eliminate a race condition noted by Xiang Xiao.
- Use sigprocmask() so that we do not lose a signal. From Gregory Nutt.
- - libs/libnx/nxfonts: Fix kerning of 'I' in Sans17x22 font. From
- Petteri Aimonen.
- - libs/libnx/nxfonts: In nxfonts_getfont(), avoid unnecessary warnings
- for other whitespace chars also. From Petteri Aimonen.
- - libs/libnx/mxmu: NXMU now re-validates window pointer for mouse
- events. NXMU caches the previous window pointer so that further mouse
- events can be sent to the same window. However, if the window is
- destroyed while mouse button is held down, the pointer may become
- invalid and cause a crash. This patch revalidates the pointer before
- using it. From Petteri Aimonen.
- - libs/libnx/nxtk: nxtk_bitmapwindow: Fix warning message when bitmap is
- fully off-screen. From Petteri Aimonen.
- * Build System:
- - Fix issue with libcxx build. This was changed multiple times, but
- should be fixed now. From Anthony Merlino.
- - configs/Makefile and tools/Config.mk: Move single file copy to the
- new function COPYFILE. This fixes the Windows native build case when
- there is no cp or cp does not recognize Windows paths. From Anatol
- Ivanov.
- - tools/Config.mk and tools/Makefile.win: Force use 'cmd' for shell
- with windows native build From Anatol Ivanov.
- - tools/Directories.mk: Correct the path to the installed libcxx
- directory. From Gregory Nutt.
- - tools/Makefile.win/unix: Staging directory (and its libraries) should
- be removed on 'make clean' (issue noted by Dave Marples). From
- Gregory Nutt.
- - apps/Directory.mk: If the current directory contains a Kconfig file
- and MENUDESC is not defined, then Directory.mk must not trash the
- Kconfig in the current directory. From Gregory Nutt.
- - apps/Makefile: Fix Windows native build patch extension. From Anatol
- Ivanov.
- * Other Tools:
- - tools/Config.mk: Fix an error in RWILDCARD implementation From
- Anthony Merlino.
- - tools/configure.c: Add missing '\n' in printf statement
- - tools/configure.c: Add missed -g option to getopt() string. From
- Anatol Ivanov.
- - tools/configure.c and tools/configure.sh: Fix Windows native
- pre-build kconfig-conf incompatibility. From Anatol Ivanov.
- - tools/csvparser.h: Extend MAX_PARMSIZE to 256. Fixes this issue:
- 70: Parameter too long: ... From Xiang Xiao.
- - tools/link.bat: Fix .fakelink creation. From Anatol Ivanov.
- - tools/mkdeps.c: Fix '\0' missing with MinGW. From Anatol Ivanov.
- * NSH Library: apps/nshlib:
- - apps/nshlib: Correct maximum number of arguments that can be provided
- to the mksmartfs command. From Eunbong Song.
- - apps/nshlib: Add fflush to nsh_consolewrite(). This resolves this
- problem: 'cat /dev/ttyCP &' followed by 'echo ls >/dev/ttyCP'. In
- that case we can't get the 'ls' result immediately, because 'cat' cmd
- uses nsh_consolewrite() and that uses fwrite with no fflush. We can
- get the 'ls' result after type '\n', because nsh will fflush output
- when get '\n'. From ligd.
- - apps/nshlib: nsh_catfile() should not append '\n' if the last char in
- file is already '\n' From Xiang Xiao.
- - apps/nshlib: Fix warning g_oldpwd defined but not used
- [-Wunused-const-variable] in nsh_envcmds.c. From Xiang Xiao.
- * Examples/Tests: apps/examples:
- - apps/examples/adc/Kconfig: CONFIG_BOARDCTL_ADCTEST does not exist
- anymore and should removed as a dependency. From Eunbong Song.
- - apps/examples/webserver/Kconfig: The webserver "app" allows for DHCP
- client to be enabled. However, the Kconfig infrastructure does not
- contain EXAMPLES_WEBSERVER_DHCPC config. Based on patch from
- "Anonymous" attached to Bitbucket Issue #130. From Gregory Nutt.
- * System Utilities: apps/system:
- - apps/system/hexed: Fix memory leak From zhuyanlin.
- - apps/system/i2c: Fix i2c_msg freq initialization problem. Typo
- prevented I2C frequency initialization in a struct i2c_msg. From
- dongjiuzhu.
- - apps/system/system: Fix warning when passing argument 6 of
- 'task_spawn' from incompatible pointer type
- [-Wincompatible-pointer-types] From Xiang Xiao.
- * Network Utilities: apps/netutils:
- - Correct some network-related configuration variable names. All *_MTU
- defines were changes to *_PKTSIZE gut that was not reflected in
- apps/ From Gregory Nutt.
- - apps/netutils/netlib/netlib_parsehttpurl.c: Correct handling of long
- URLs as noted in Bitbucket issue #119 (in the nuttx/ repository, not
- the apps/ repository). From Gregory Nutt.
- - apps/netutils/codecs: "dst" overflow protection when base64 string
- ends with "=" From Aleksandr Vyhovanec.
- - apps/include/netutils/ipmsfilter.h: Eliminate error generated by bad
- pre-processor logic. From Gregory Nutt.
- * GPS Utilities: apps/graphics:
- - apps/graphics/NxWidgets: Fix garbage returned when
- CCycleButton::getValue() is called after removeAllOptions().
- CScrollingPanel should not draw outside the widget area. From
- Petteri Aimonen.
- NuttX-7.28 Release Notes
- ------------------------
- The 128th release of NuttX, Version 7.28, was made on January 19, 2019,
- and is available for download from the Bitbucket.org website. Note
- that release consists of two tarballs: nuttx-7.28.tar.gz and
- apps-7.28.tar.gz. These are available from:
- https://bitbucket.org/nuttx/nuttx/downloads
- https://bitbucket.org/nuttx/apps/downloads
- Both may be needed (see the top-level nuttx/README.txt file for build
- information).
- Additional new features and extended functionality:
- * Core OS:
- - Critical Section Monitor: Adds data collection logic in support of
- pre-task monitoring critical sections and pre-emption state. From Gregory
- Nutt
- - Critical Section Monitor: Add support for global pre-emption and
- global critical sections to monitor as suggested by Xiang Xaio. From
- Gregory Nutt
- - Interrupt Time: Measurement of interrupt handler duration used to
- be available only in Tickless mode since it used the high resolution
- Tickless timer to measure interrupt time. This change adds
- CONFIG_SCHED_IRQMONITOR_GETTIME which, if enabled, will force the
- interrupt duration calculation to use the same high-resolution,
- platform-specific timer as is used with the Critical Section Monitor.
- This leads to two improvements: (1) You can now measure interrupt
- duration in non-Tickless mode, and (2) in either mode, the interrupt
- duration and the critical section measures will use the same
- high-resolution timer and should, therefore, never be any discrepancy
- due to different clock sources. From Gregory Nutt
- - Context Switching Protection: Add debug assertions before each call
- to up_block_task() to assure that there is no attempt to block an
- IDLE task. From Dave Marples
- - init Task: Allow the init task priority to be configurable. From
- David Sidrane
- - pthreads: Implement pthread_key_delete(). This involves some minor
- changes to the group data structure. From Gregory Nutt
- * File Systems/Block and MTD Drivers
- - ProcFS: Extended the process ID ProcFS output to show per-thread
- maximum time for pre-emption disabled and maximum time within a
- critical section. From Gregory Nutt
- - NXFFS: Pass unrecognized IOCTL commands to the contained MTD
- driver. From Daniel P. Carvalho
- - LittleFS: Adds an initial port the ARM mbed littlefs to NuttX. This does
- not include FLASH formatting utilities. Depends on CONFIG_MTD_BYTE_WRITE.
- From lihaichen
- - AT25 MTD Driver: Added support for AT25DF081A serial flash chip.
- From Marc Rosen
- - MTD Configdata Device: Extends the MTD configdata device with the
- following features / additions:
- 1. Configurable option to use named config items instead of enumerated
- ID/Instance numbers.
- 2. Ability to iterate through the existing configdata items in the
- /dev/config device.
- 3. Ability to "unset" a configdata item.
- 4. Ability to perform "flash_eraseall" on the /dev/config device.
- From Ken Pettit
- * Networking/Network Drivers:
- - Telnet Driver: Add NAWS and poll interface to telnet for screen size
- negotiation used with termcurses. From Ken Pettit
- * Wireless/Wireless Drivers:
- - BLE HIC Core: Add second RX work function From Lwazi Dube
- - BLE IOCTL Commands: Add SIOCBTCONNECT and SIOCBTDISCONNECT ioctl
- commands From Lwazi Dube
- - CC2564: Add cc2564 HCI UART driver. From Lwazi Dube
- * Graphics/Display Drivers:
- - Sitronix ST7032i: Add support to Alphanumeric Sitronix ST7032i
- display From Alan Carvalho de Assis
- - NXP TDA19988: This commit brings in a complete, but untested,
- implementation of a driver for the TI TDA19988 HDMI Encoder. This encoder
- is used on the Beaglebone Black board. Since this driver is untested, it
- requires CONFIG_EXPERIMENTAL in the configuration. From Gregory Nutt
- * Crypto:
- - crypto/aes.c: This change provides an improved AES cipher API in
- addition to the existing routines. The reasons for this new API are:
- 1) better performance, giving the possibility to avoid re-setting-up
- the key for each AES block when the same key is used multiple times.
- This is important for the current single user of AES, which is
- related to storage and FTL. And 2) suitable for simultaneous use of
- multiple AES keys, which will be required by the upcoming crypto
- framework. It retains compatibility with the previous API, so there
- is no need to change anything else right now. From Sebastien Lorquet
- * Other Common Device Drivers:
- - MMCSD SDIO: The mmcsd_sdio driver makes calls for dcache
- invalidation through the chip specific architecture function
- SDIO_DMARECVSETUP(). I changed the arch/arm/stm32f7 chips to use
- arch_invalidate_dcache_by_addr() instead of arch_invalidate_dcache().
- This commit includes additional changes to mmcsd_sdio.c. I
- created SDIO_DMADELYDINVLDT() (DMA delayed invalidate) to
- invalidate store-into mode dcaches after the DMA transfer. I
- have been using SDIO_DMADELYDINVLDT() for several weeks now and
- it has fixed the problems that I previously reported regarding
- non-cache aligned buffer invalidation errors (for my store-through
- dcache). However, it does not permit use of unaligned DMA buffers
- for store-into mode dcaches.
- SDIO_DMADELYDINVLDT() is a NoOp unless the chip specific Kconfig
- file selects CONFIG_ARCH_HAVE_SDIO_DELAYED_INVLDT. I have modified
- all the stm32f7 chips to select it. From Bob Feretich
- - SPI Lower Half Interface: Extend the HW features supported by SPI.
- It now supports a deferred DMA trigger hardware configuration. From
- Dave Marples
- - DS28E17 1-Wire Driver: Optimize I2C write followed by read to same
- address. From Juha Niskanen
- - LMP92001: Add support for the TI LMP92001 Multi-channle DAC/ADC
- device. From Abdelatif Guettouche.
- - EEPROM Character Driver: Add support to Microchip AT24CM02 From
- Alan Carvalho de Assis
- - Microchip MCP73871: Add support to Microchip MPC73871 Battery Charger.
- From Alan Carvalho de Assis
- - MCP7941x: Add support for the Microchip MCP741x external RTC. From Ouss4
- - Sensirion SCD30: Driver for Sensirion SCD30 CO2 sensor. From Jussi
- Kivilinna
- - Sensirion SGP30: Driver for Sensirion SCD30 gas sensor. From Jussi
- Kivilinna
- - Sensirion SPS30: Driver for Sensirion SCD30 particulate matter sensor.
- From Jussi Kivilinna
- - USB CDC/ACM Device: When implemented usb cdc on nrf52840, I found
- some issues with cdc driver:
- 1. Lost data when receiving buffer is full;
- 2. Low-water mask implement issue;
- 3. Re-flush cdc buffer when enabling
- 4. Serial dma is conflict with cdc , modify the serial.h
- From Levin Li
- * MIPS32:
- - Configuration System: Allow Penguino for windows for the Windows
- Ubuntu platform as well.
- * Maxim Integrated MAX326xx
- - MAX32660: Support for the MAX32660 was added (along with partial
- support for other members of the MAX326xx family). The initial port
- includes Clock configuration, timer, GPIO pin configuration, ICC,
- and UART. Additional untested drivers are complete and ready for
- testing: DMA, GPIO interrupts, SPI0 Master, TC, WDT. The following
- drivers are not yet implemented: I2C and I2S.
- * Maxim Integrated MAX326xx boards
- - MAX32550-EVSYS: Basic support for the Maxim Integrated MAC3X660
- EVSYS is included. A basic NSH configuration is available and is
- fully functional. Includes unverified support for an SPI0-based
- SD card.
- * Microchip/Atmel SAMD21/L21 Drivers:
- - SAMD21/L21: Adds a complete ADC header file for SAMD21 and a partially
- complete ADC header file for the SAML21. From Alexander Vasiliev
- - SAMD21/L21: Export sam_i2c_master_initialize(int bus) to be used by
- board config. From Alan Carvalho de Assis
- * Microchip PIC32MZ Drivers:
- - PIC32MZ I2C: Add support for the I2C bus. From Ouss4
- * ARMv7-A
- - ARMv7-A MMU: Use TLBIMVA vs TLBIMVAAIS to invalidate the Cortex-A8
- cache. From Petro Karashchenko
- * ARMv7-M
- - Cortex-M7 Cache: This commit adds a new function
- arch_invalidate_dcache_by_addr(). It takes the same parameters as
- arch_invalidate_dcache(), but performs invalidation of only the lines
- in cache that need to be invalidated. This new function could be
- used as a a direct replacement for arch_invalidate_dcache(). From
- Bob Feretich
- - ARMv7-M: In the current implementation we only use very high
- priority interrupts (levels 0, 0x10 and 0x20 in CORTEX-M speak) but
- that means there are loads of lower priority ones that are
- effectively unused. I have *not* changed the semantics of these
- levels but have 'shifted' them to be based around the midpoint of the
- available interrupts (0x80) rather than at the top end....that allows
- for interrupts to be defined above (or, indeed, below) them as needed
- by the application. This should have no functional effect on
- existing code but adds in a clean capability to define higher
- priority interrupts. From Dave Marples
- * Broadcom BCM2708:
- - BCM2708: Remove all support for the BCM2708/2835. This was added
- only for support of the RaspberryPi Zero board which was previously
- removed. The support was minimal and unverified. The removed files
- can still be found in the Obsoleted directory. From Gregory Nutt
- * Broadcom BCM2708 Boards:
- - Raspberry Pi Zero: Remove the partial support for the Raspberry Pi
- Zero. This port was started with the best of intentions but was
- never completed. The board support can still be found in the
- Obsoleted repository. From Gregory Nutt
- * Nordic NRF52 Boards:
- - Improve LED handling #if~#endif in nrf52_autoleds.c and
- nrf52_userleds.c
- Add Adafruit Feather nRF52 board LED support
- Add Adafruit Feather nRF52 board
- Add nrf52-generic
- Replace 'pca10040' with 'generic'
- Copy from nrf52-pca10040 to nrf52-generic
- From Zou Hanya
- * NXP i.MX RT Drivers:
- - i.MXRT: Add PIT, GPT, and QIMER(TMR) header files From David Sidrane
- - i.MXRT: Add FLEXPWM. From David Sidrane
- - i.MXRT: Add ADC chip header From David Sidrane
- - i.MXRT Build: Include up_systemreset and up_stackcheck.c From David Sidrane
- - i.MXRT GPIO: Add GPIO Support Input daisy selection. From David Sidrane
- - i.MXRT Serial: Support independent input and output flow control. From
- David Sidrane
- - i.MXRT USB: Use single define for USB pin definitions. From David Sidrane
- - IMXRT106X: Add FLEXCAN3 to pinmux header file. From David Sidrane
- * NXP Freescale i.MX RT Boards:
- - IMXRT1050-EVK: GPIO device driver support added and tested by
- Pavlina Koleva and Ivan Ucherdzhiev. From Pavlina Koleva
- * On Semi LPC23450:
- - LPC23450: Add support for SPI flash boot. Also, remove unnecessary
- code for the SPI flash boot. From Masayuki Ishikawa
- * On Semi LPC23450 Boards:
- - LC823450-XGEVK: Add linker script for SPI flash boot. From
- Masayuki Ishikawa
- - LC823450-XGEVK: Enable NFS client for RNDIS configuration. Also, some
- stack size were adjusted to work with NFS From Masayuki Ishikawa
- * Simulation
- - Critical Section Monitor: Add low level timer support for simulation. From
- Gregory Nutt
- * STMicro STM32:
- - Configuration: Simplify ARM core selection logic From Mateusz Szafoni
- - Configuration: USB Host is an option. From David Sidrane
- - STM32 L0: Brings in initial support for the STM23 L0. From Mateusz
- Szafoni
- * STMicro STM32 Drivers:
- - STM32 ADC: Configurable ADC DMA mode (one shot mode, circular
- mode). From Mateusz Szafoni
- - STM32 ADC: Start conversion on startup is now possible if TIM
- triggering selected. This can be useful to start ADC TIM conversion
- for ADC IPv2 when opening ADC device.
- - STM32 DAC: Unified naming for DAC interfaces From Mateusz Szafoni
- - STM32 DMA: Add interfaces to interact with high priority DMA
- interrupts. From Mateusz Szafoni
- - STM32 DMA: Use STM32 DMA IP core version instead of chip family
- names. From Mateusz Szafoni
- - STM32 DMA: Add support for DMA v1 CSELR support. From Mateusz Szafoni
- - STM32 HRTIM: Do not enable timers on startup if option from Kconfig
- selected and add interface to enable/disable timers. From Mateusz
- Szafoni
- - STM32 PWM: Add timer enable/disable and frequency update to
- low-level ops. From Mateusz Szafoni
- - STM32 SPI: Implements the new deferred DMA trigger feature. From
- Dave Marples
- - STM32 F0 Build: Rename the stm32f0 directory to stm32f0l0 to make a
- space for STM32 L0. Rename files, functions and defines, removing
- the f0_ from the names in order to make them MCU agnostic. From
- Gregory Nutt
- - STM32 F0 GPIO: Add support for GPIO EXTI. From Mateusz Sfafoni
- - STM32 F2 FLASH: stm32_flash_writeprotect() supported the same for
- STM32F20XX as STM32F4XXX From Anthony Merlino
- - STM34 F7 DMA: stm32f7 enable separate DMA per SPI configuration
- From Daniel Agar
- - STM32 F7 QEncoder: Ported the QEncoder from F4 to F7. From Eduard
- Niesner
- - STM32 F7 SPI: Port Dave Marples STM32 deferred trigger enhancement
- to the STM32 F7 SPI drivers. From Gregory Nutt
- - STM32 H7 SPI: Port Dave Marples STM32 deferred trigger enhancement
- to the STM32 H7 SPI drivers. From Gregory Nutt
- - STM32 L4 SPI: Port Dave Marples STM32 deferred trigger enhancement
- to the STM32 L4 SPI drivers. From Gregory Nutt
- * STMicro STM32 Boards:
- - B-L072Z-LRWAN1: Add basic support for b-l072z-lrwan1. Nucleo boards
- use as default ST LINK MCO as clock input from MCU and for this
- HSEBYP must be enabled. From Mateusz Szafoni
- - Nucleo-F103RB: Add board support. From Mateusz Szafoni
- - Nucleo-F103RB: Add ADC and PWM examples. From Mateusz Szafoni
- - Nucleo-F207ZG: Add board support. From Mateusz Szafoni
- - Nucleo-F207ZG: Add ADC and PWM examples. From Mateusz Szafoni
- - Nucleo-F302R8: Add high priority ADC interrupts example to the
- 'highpri' configuration. From Mateusz Szafoni
- - Nucleo-F334R8: Add support for ADC injected sequence to the 'highpri'
- configuration, add triggering from TIM1. From Mateusz Szafoni
- - Nucleo-F334R8: Add example for the SPWM generation (custom STM32 PWM
- usage). From Mateusz Szafoni
- - Nucleo-F767ZI: Use on board USB UART as default console. Board is powered
- by USB which can be used as UART link for upload and console. Previously
- it was set to use Arduino shield which developer may not have. From Phil
- Coval
- - Nucleo-F767ZI: Add ethernet config based on nsh configuration plus
- stm32f769i-disco/nsh-ethernet. From Phil Coval
- - Nucleo-L073RZ: Add basic support for nucleo-l073rz. Nucleo boards
- use as default ST LINK MCO as clock input from MCU and for this
- HSEBYP must be enabled. From Mateusz Szafoni
- - Nucleo-L152RE: Add board support. From Mateusz Szafoni
- - STM32F4 Discovery: Add timing support for the critical section
- monitor using the DWT CYCNT register. From Gregory Nutt
- - STM32F4 Discovery: If the Critical Section Monitor, modify the
- ITM_LAR register to assure that the DWT cycle counter is enabled.
- Suggested by Dave Marples. From Gregory Nutt
- - STM32F4 Discovery: Add board support to display ST7032i From Alan
- Carvalho de Assis
- - STM32F4 Discovery: Add loadable application build support in
- Make.defs From Masayuki Ishikawa
- - STM32F4 Discovery: Update RNDIS configuration: (1) Add NFS and adjusted
- stack size for usermain and telnetd client. (2) Add support for loadable
- application and ping. From Masayuki Ishikawa
- - STM32F4 Discovery: Update nsh configuration: (1) Add
- CONFIG_BOARD_INITIALIZE=y, (2) Add CONFIG_EXAMPLES_HELLO=y. From Masayuki
- Ishikawa
- - STM32F429I-DISCO: Add high priority ADC interrupts example to the
- 'highpri' configuration. From Mateusz Szafoni
- - configs/nucleo-l073rz: Support for nrf24l01. From Mateusz Sfafoni
- * TI CCxx:
- - CC13x0 family and CC13x2/CC26x2: Basic, minimal support was added
- for these two chip families. This is a Work-In-Progress: There is
- just enough logic in place to support a simple NSH configuration.
- However, the port is still missing certain, necessary hooks into the
- TI ROM-based 'DriverLib'. As a result, the support is not fully code
- complete and is totally untested. Support for the CC26x2, which is
- nearly identical to the CC13x2 is fragmentary. Stay tuned.
- Hopefully full support will be available in NuttX 7.29.
- * TI CCxx Boards:
- - LAUNCHL-CC1312R1: Board support is available for the TI
- LAUNCHL-CC1312R1. That board support consists only of an unverified
- NSH configuration. The primary purpose of this port for the time
- being is simply support the core architecture bring-up.
- * TI AM335x:
- - AM335x: Adds initial support for the TI AM355x family.
- - AM335x: Add minimal wdog logic needed to disable the watchdog timer.
- Otherwise, the board is rebooted after certain time expires while NuttX is
- running. From Petro Karashchenko
- - AM335x: Switch to DMTimer2 for system tick generation. U-Boot does not
- enable DMTimer1ms clocks hence it is not possible to use it until
- implementation in am335x_clockconfig.c is ready. From Petro Karashchenko
- * TI AM335x Boards:
- - Beaglebone Black: Initial port for BeagleBone Black board support
- (TI AM335x family based on Cortex-A8). Includes a basic functional NSH
- configuration . From Petro Karashchenko
- * TI Tiva:
- - LM3S9B92: Add support for LM3S9B92. From Lwazi Dube
- * TI Tiva Drivers:
- - Tiva HCI UART: Port bluetooth HCI uart interface from stm32 to tiva
- From Lwazi Dube
- * TI Tiva Boards:
- - TM4C1294-Launchpad: Add IRQBUTTONS support to tm4c1294 launchpad.
- From Lwazi Dube
- * Tools:
- - tools/convert-comments.c: Add a tool to convert C++-style comments
- to C89 C-style comments. From Gregory Nutt
- - tools/detab.c: Add detab.c which will convert all tabs in a file to
- spaces. From Gregory Nutt
- - tools/lowhex.c: Add lowhex.c that will convert hexadecimal constants
- in a file to use lower case representation. From Gregory Nutt
- - tools/mkconfig.c: Add definitions to distinguish between tristate
- 'y' and 'm' options. From Gregory Nutt
- - tools/nxstyle.c: Add logic to detect long lines. From Gregory Nutt
- - tools/nxstyle.c: Add -h for help. From Gregory Nutt
- * Libraries/Header Files:
- - include/nuttx/lcd/edid.h: Add EDID definitions From Gregory Nutt
- - libs/libc/netdb: Make DNS retries configurable From Juha Niskanen
- - libs/libc/netdb: Harden query logic against DNS spoofing. This
- commit implements most of the RFC 5452 guidelines for making DNS more
- resilient. We now verify response matches against what was queried
- and use unpredictable query IDs. It is also checked that response
- come from correct DNS server. Also fixes a buffer overflow when
- querying hostnames longer than CONFIG_NETDB_DNSCLIENT_NAMESIZE. From
- Juha Niskanen
- - libs/libc/netdb: Support multiple IP addresses per hostname From
- Juha Niskanen
- * NSH: apps/nshlib:
- - apps/nshlib: Add support to use SLCD as NSH Console From Alan Carvalho de
- Assis
- - apps/nshlib: Add support for CROMFS start-up script. From David Sidrane
- - apps/nshlib: Add var expansion in NSH parse. From Daniel Agar
- - apps/nshlib: Display built-in apps using multi-column mode like the NSH
- commands. From Ken Pettit
- - apps/nshlib: In all multi-column help output, calculate an optimal column
- width rather than using a hard-coded width that may or may not be
- appropriate. Also make the number of rows presented dependent upon the
- maximum width of the widest column. From Gregory Nutt
- - apps/nshlib: Adds addroute command options for setting default gateway.
- Like 'addroute default <ipaddr> <interface>'. From Anthony Merlino
- * Examples/Tests: apps/examples:
- - apps/examples/battery: Add Battery Charger Monitor Example From Alan
- Carvalho de Assis
- * System Utilities: apps/system
- - apps/system/configdata: Adds an "cfgdata" command which allows
- manipulation of the /dev/config items via the command line. One such use
- for this utility would be to set a "macaddr" configdata item, etc. The
- utility is sort-of like a u-boot env variable edit function:
- For instance, to set a "macaddr" when the new CONFIG_MTD_CONFIG_NAMED
- option is selected, you would do:
- nsh> cfgdata set macaddr [0xfc 0x01 0x0b 0x45 0xa1 0x12]
- (The brackets denotes an array of bytes)
- nsh> cfgdata set hostname myboard
- or using the old ID,INSTANCE numeric method:
- nsh> cfgdata set 0,0 [0xfc 0x01 0x0b 0x45 0xa1 0x12]
- (The brackets denotes an array of bytes)
- nsh> cfgdata set 1,0 myboard
- You can also display all config items:
- nsh> cfgdata print all
- Name Len Data
- macaddr 6 0xFC 0x01 0x0B 0x45 0xA1 0x12
- hostname 8 myboard
- From Ken Pettit
- - apps/system/critmon: Add a daemon to monitor critical section usage. From
- Gregory Nutt
- - apps/system/nsh: Set NSH priority if the NSH task was scheduled at a
- different priority than the configured priority. From Gregory Nutt
- - apps/system/nxplayer: Introduce CONFIG_NXPLAYER_MAINTHREAD_STACKSIZE. From
- Masayuki Ishikawa
- - apps/system/termcurses: Addition of termcurses libraries in
- apps/system/termcurses From Ken Pettit
- - apps/system/vi: New feature additions
- 1. Vi startup feature to prepend the current working directory to the
- supplied filename if it does not start with '/' absolute path
- specifier. This allows editing files in the current directory
- without needing to fully qualify the filename.
- 2. Standard '~' empty screen line characters for proper identification
- of empty '\n' only lines at the end of the file.
- 3. Moving into insert or append mode now prints '--INSERT--' in the
- status line and clears it upon exit.
- 4. Integration with termcurses to detect special keystrokes and to
- handle terminal type differences. Haven't yet converted all vt100
- print codes to termcurses equivalents.
- 5. Support for up, down, left, right arrows, page-up, page-down keys in
- command mode.
- 6. Added 'b' command to move cursor 'b'ack to previous word. Honors the
- command repeat value for multiple word moves.
- 7. Added 'w' command to move cursor to next 'w'ord. Honors the command
- repeat value for multiple word moves.
- 8. Added 'f' and 't' commands to find characters on the current line.
- Honors the command repeat value.
- 9. Added the find 'n'ext command to repeat the previous find operation.
- 10. Added the 'H', 'M', and 'L' commands to move the cursor to top,
- middle and bottom of the display.
- 11. Extended yank/paste to manage a paste buffer with character mode in
- addition to line mode. Character mode allows cut / paste of
- individual characters or groups of characters vs. full lines.
- 12. Added support in the 'd'elete and 'y'ank commands for character mode
- deletions such as 'dw', 'dfa', '2yw', etc.
- 13. Added support in paste routine for multiple paste using command value
- argument.
- 14. Added support for the 'D' and 'C' delete and change to end of line
- commands.
- 15. Added support for 's'ubstitute key ('x' followed by insert mode).
- 16. Modified yank / paste allocation scheme to avoid repeated alloc and
- free of paste buffer. Uses a minimum allocation size scheme and only
- does free / realloc when paste does not fit. If the paste is smaller
- than the current allocation and the current allocation is larger than
- the threshold, then the buffer is freed and a smaller buffer
- allocated. Otherwise the existing buffer is used.
- 17. Support for 'P'aste before current cursor position.
- 18. Support for '?' reverse search mode.
- 19. Support for 'J'oin next line with current line command.
- 20. Printing of current row,col in status line of display.
- 21. Command repeat '.' support for commands that modifiy text.
- 22. Support in replace / insert mode for arrow keys, PGUP / PGDN, HOME,
- and END. Using these will cause the command repeat buffer to reset
- such that only the last text addition after a cursor movement is saved.
- 23. Added 'X' delete previous command.
- 24. Added "gg" go to top of document command sequence.
- 25. Added "ZZ" save and quit command (equivalent to :wq).
- 26. Implemented '^' goto first non-whitespace on current line, along with
- '+' and '-' goto first non-whitespace on next / previous line.
- 27. Added CR / LF goto first non-whitespace on next line in command
- mode. From Ken Pettit ?
- * Network Utilities: apps/netutils:
- - apps/netutils/webserver: The webserver/httpd app is was broken when script
- support was enabled (CONFIG_NETUTILS_HTTPD_SCRIPT_DISABLE). The root cause
- has been tracked down to the "Content-length" not being available ahead of
- time in this case (length of -1 passed to send_headers() ). On the other
- hand, the server closing the socket does not result in FIN being sent to
- the browser either (FIN not supported by NuttX yet).
- Simple solution: Add support for HTTP Chunked Encoding to webserver/httpd.
- The change is simple. It adds a configuration option to enable chunked
- encoding. When enabled, the implementation will auto-detect the cases where
- content length is not available ahead of time, and will automatically
- engage chunked encoding transfers.
- Without this patch, the browser/client hangs forever, as it is expecting
- more data. With this patch, the browser displays the content. From Vlado
- Vidovic
- * Wireless Utilities: apps/wireless:
- - apps/wireless/bluetooth/btsak: Add connect and disconnect commands to
- btsak. From Lwazi Dube
- * Graphic Utilities: apps/graphics:
- - apps/graphics/pdcurs34: Integration of termcurses into pdcurses, plus
- pdcurses updates for multi-thread support From Ken Pettit
- - apps/graphics/pdcurs34: Adds a configuration option to pdcurses to enable
- line-drawing character (ALTCHARSET) when using the short 16-bit chtype.
- This is done by limiting the characters to 7-bit ASCII values and using the
- 8-th bit as the A_ALTCHARSET bit. This allows a significant RAM savings 4K
- - 20K depending on terminal size) while still allowing the nicer
- line-graphic characters for border drawing. From Ken Pettit
- * Testing: apps/testing:
- - apps/testing/ostest: Add test for pthread-specific data. From Gregory
- Nutt
- Bugfixes. Only the most critical bugfixes are listed here (see the
- ChangeLog for the complete list of bugfixes and for additional, more
- detailed bugfix information):
- * Core OS:
- - Assertions: Identify the running task correctly when dumping task
- state information. It takes time to switch to the target task after
- g_readytorun has been modified. If panic/assert happen during this
- period, the dump will contain the incorrect and confusing information
- due to the difference between the real running task and the return
- value of this_task(). This change resolve this problem by adding
- g_running_task to track the real running task through the context
- switch. From Xiang Xiao
- - Assertions: Correct duplicated logic from commit
- dbf01d12b7321d1b48b68d3b69842a853b049376. Checking for PID == zero
- is not a valid way to test for the IDLE task in all configurations!
- This is only true in the single CPU configuration. In multiple CPU
- configurations, there will be a separate IDLE task for each CPU with
- a different PID and an alternative check must be used. NOTE: The
- logic fixed in some places still lacks sufficient intelligence in SMP
- mode to find the right stack for the CPU IDLE thread and could still
- show the wrong stack. From Gregory Nutt
- - Interrupt Prioritization: Remove all driver-specific logic that may
- set the interrupt priority to anything but the default. There is no
- good reason to change the interrupt priority unless you just want to
- debug a difficult problem. OR if you want to use high priority
- interrupts. In that case the specific interrupt priorities will need
- to be set by board-specific logic. From Gregory Nutt
- - Memory Management: Revert "This patch prevent heap corruption as in
- below case." This solution to the problem noted by EunBong Song
- results in major memory fragmentation and and out-of-memory
- conditions on the PX4 platform. On that platform the lower priority
- work queue is very low priority and essentially never runs when the
- system is busy. As a result, the systems gets slowly starved of
- memory until failures and bad behaviors begin to occur. From Gregory Nutt
- - Memory Management: This is a replacement for EunBong Song's reverted
- change. This change adds (1) logic in getpid() to return an error instead
- of the PID if the (apparent) currently executing task is not marked as
- RUNNING. Then (2) mm_trysemaphore() (the root implementation of both
- kmm_trysemaphore() and umm_trysemaphore()) will know that the (apparent)
- running task cannot be the holder of the semaphore. How could the
- non-running task be trying to get the MM semaphore? I think only in the
- exact scenario that Eunbong Song has described. So this new solution
- should provide the same protection as the original change but without the
- bad consequences to memory usage. From Gregory Nutt (with corrections
- from David Sidrane)
- - Memory Management: In implementation of calloc(), verify that the number of
- elements times the size of an element will not overflow type size_t. This
- is required by the SEI CERT C coding style and resolves anonymous Bitbucket
- Issue #139 From Gregory Nutt
- - sigtimedwait(): Remove unnecessary disable of pre-emption. From
- Gregory Nutt
- - _exit(): Update all architecture-specific _exit() implementations
- so that they correctly call the scheduler instrumentation layer for
- the new task that runs when the old one exits. This missing
- instrumentation was confusing the Critical Section Monitor logic with
- uses this instrumentation to track the state of critical sections.
- From Gregory Nutt
- - sched_foreach(): sched_foreach() should not have to hold the
- critical section over the entire traversal. It should be acceptable
- to simply only the critical section while one entry is being
- processed (the caller can always call sched_foreach within a critical
- section is greater stability is needed). From Gregory Nutt
- - task_spawn(): Correct description of input parameters to
- task_spawn_exec(). Noted by: JeongchanKim From Gregory Nutt
- * Crypto:
- - crtypo/: This change:
- Avoids the use of up_aesinitialize() entirely, which resolves
- dependency problems, because this function does not make sure that
- an actual hardware aes implementation was made available: each SoC
- is now responsible to ensure the AES hardware is initialized before
- first use. This applies to lpc43xx, stm32 and sam34.
- Remove definitions of the NEVER used aes_init and aes_update
- operations. The new AES API will be more suitable.
- From Sebastien Lorquet
- * File System/Block and MTD Drivers:
- - opendir(): Corrects a problem with opendir() noted by Petteri
- Aimonen in Bitbucket Issue 132: "opendir() fails for FAT filesystem
- with trailing slash in path". I see the following behaviour on NuttX
- 7.26, where I have SD card mounted on /flash and a directory called
- "frm" on it:
- opendir("/flash") returns (DIR *) 0x1000c580
- opendir("/flash/") returns (DIR *) 0x1000c5d0
- opendir("/flash/frm") returns (DIR *) 0x1000c620
- opendir("/flash/frm/") returns (DIR *) 0x0
- From POSIX specs for opendir(): "A pathname ... that ends with one or
- more trailing slashes shall be resolved as if a single dot character
- ( '.' ) were appended to the pathname." So for mount points,
- opendir() works correctly, but for FAT32 filesystem it fails to open
- directory if the path has a trailing slash...
- NOTE: You would not see this problem if you call opendir() indirectly
- in NSH (like 'ls -R /') because NSH contains logic to remove trailing
- '/' characters from paths. From Gregory Nutt
- - dup()/dup2(): dup() and dup2() were broken some time back.
- fs_dupfd() was return returning OK on success, not the file
- descriptor of the duplicated fd. From David Sidrane
- - ProcFS: Remove the unnecessary critical section From Xiang Xiao
- - CROMFS: Fix hardfault. From David Sidrane
- - SmartFS MTD Driver: Fix smart_write_alloc_sector sector size mapping.
- Was not correctly calculating the encoded sector size for small (256)
- byte or large (>= 4096 byte) sectors. Noted by Daniel P. Carvalho.
- Fix from Ken Pettit
- - AT25 MTD Driver: Fixed missing opening parenthesis. From Marc Rosen
- - MTD Configdata MTD Driver: Check return value mtdconfig_readbytes().
- From Jussi Kivilinna
- - S25FL1 MTD Driver: Minor change for the s25fl1 QSPI FLASH driver which
- fixes additional sectorshift vs. pageshift confusion. From Ken Pettit
- * Networking/Network Drivers:
- - All network drivers! Change pre-processor logic that selects the
- high priority work queue or gives preferential treatment to the high
- priority work. All network logic must run on the low priority work
- queue! Or suffer the consequences. From Gregory Nutt
- - Socket Clone/Dup: On a failure to start the TCP monitor, the cloned
- socket is closed but is not properly freed, leaving it attached to a
- TCP connection structure with the wrong reference count. From
- Gregory Nutt
- - ARP: Fix whitespace after ARPHRD_IEEE80211 in ARP header file. From
- Daniel Agar
- - 6LoWPAN: Fixes decompression of ipaddr from MAC address. The logic
- used to populate the IP from the radio address should match
- sixlowpan_ipfromsaddr/sixlowpan_ipfromeaddr From Anthony Merlino
- - 6LoWPAN: Fixes logic surrounding the Universal/Local bit. This bit
- represents whether the IID is locally/globally administered. The U/L
- bit is bit 1 of the MSB of the EUI-64. It should only be inverted in
- cases where there is a full EUI-64. In cases where the IID is derived
- from say, a short address, this bit should be forced to 0, indicating
- that it is locally administered. See:
- https://tools.ietf.org/html/rfc4291#section-2.5.1
- https://tools.ietf.org/html/rfc4944#section-6
- https://tools.ietf.org/html/rfc2464#section-4
- From Anthony Merlino
- - 6LoWPAN: IEEE802.15.4 stores and uses addresses in little endian
- order. From Anthony Merlino
- - 6LoWPAN: Address comment regarding avoiding double lookup of address
- context. From Anthony Merlino
- - 6LoWPAN: Record and restore d_buf on entry/exit of sixlowpan_input.
- This avoids an issue where d_buf gets set to NULL by 6LoWPAN, and
- then is used by forwarding logic from another network interface
- before getting set back to the drivers internal buffer. From Anthony
- Merlino
- - 6LoWPAN: sixlowpan_input should always return 0 if the incoming frame was
- consumed. From Anthony Merlino
- - TUN Driver: Fixes a problem reported by Masayuki Ishikwawa: Recently I
- noticed that ARP response packet is corrupted when I tried to run
- bluekitchen with the latest tun.c in TAP mode. If I revert commit
- 8193c28e9126c9cb89042e80d6ebab7485a831e4, then it works again. From Xiang
- Xiao
- - Telnet Driver: Add missing logic to set read event flags in poll()
- method. From Ken Pettit
- * Wireless/Wireless Drivers:
- - BLE: Fix uninitialized variables. From Lwazi Dube
- - BLE GATT header file: Fix struct name. From Lwazi Dube
- - BLE GATT: Remove unnecessary GATT ioctls From Lwazi Dube
- * Graphics/Display Drivers:
- - ST7032: Fix seek method. Was not taking into account the offset for the
- SEEK_END case. Did not account for negative offsets. On errors, it was
- clobbering the filep->f_pos setting. From Gregory Nutt
- - PCF8574 Backpack: Fix seek method. Had the same problems as noted for
- ST7032 driver. From Gregory Nutt
- * Common Drivers:
- - Button Upper Half: Fix two bad NULL checks From Juha Niskanen
- - PWM Interface: Remove dependency on CONFIG_PWM for the upper-half
- PWM header. This allows compilation for the lower-level PWM drivers
- even if the upper-half PWM logic is not used. From Mateusz Szafoni
- - Various I2C Drivers: In most I2C drivers, correct upper index value
- in I2C trace dump. Eliminates the extra NONE event from the trace
- dump output. From Ouss4
- - Battery Gauge: Add missing initialization of semaphore. From Alan
- Carvalho de Assis
- - Batter Charger: Add missing initialization of semaphore. From Alan
- Carvalho de Assis
- - MCP73871: Fix Microchip MCP73871 Battery Charger driver to register
- correctly as a battery charger. The first element of a 'struct
- battery_charger_dev_s' should be a pointer to operations structure. From
- Alan Carvalho de Assis
- - MCP794xx: Fix MCP794xx driver to wait for OSCRUN and fix tm_year. From
- Abdelatif Guettouche
- - Numerous files: Fixes usage of CONFIG_BIG_ENDIAN; should be
- CONFIG_ENDIAN_BIG From Anthony Merlino
- * ARMv7-A:
- - ARMv7-A MMU: Fix end address calculation for mmu_invalidate_region() API
- From Petro Karashchenko
- * ARMv7-M:
- - ITM: Fix missing space causing macro issues From Alan Carvalho de
- Assis
- - Common Exception Handlers: This commit changes the lazy and non-lazy
- exception handler to remove a couple of cpsid instructions from them
- on ARMv7-m. If my understanding is correct then these interrupt
- manipulations aren't doing anything anyway because prioritization
- stops secondary interrupts arriving and, even if they did work, they
- would have introduced race conditions for the period of time between
- the interrupt arriving and further interrupts being disabled. From
- Dave Marples
- - MPU/Protected Mode Build: Revert "arch/arm/armv7-m: MPU:
- mpu_log2regionceil needs take into account the offset too". Masayuki
- Ishikawa reports that this commit breaks ALL PROTECTED mode builds. It
- violates the basic requirements of the use of the MPU in protected mode.
- Those basic requirements are:
- 1. The MPU region must be aligned to the base address of the memory
- region being mapped (it may NEVER extend before the memory region).
- That is, the following MUST always be zero: (base & ((1 << l2size) - 1))
- 2. The MPU region must never extend beyond the end of the memory region.
- That is, the following must be true: size >= (1 << l2size)
- From Gregory Nutt
- * Microchip PIC32MX Drivers:
- - PIC32MX Ethernet: Fix a comparison in a debug assertion. Should be
- <= vs <. Noted by Anonymous in Bitbucket Issue 134. From Gregory Nutt
- * Microchip PIC32MZ:
- - PIC32MZ chip.h Header: Add a missing " in an error message. From Ouss4
- * Microchip PIC32MZ Drivers:
- - PIC32MZ Ethernet: Fix a comparison in a debug assertion. Should be
- <= vs <. Noted by Anonymous in Bitbucket Issue 134. From Gregory Nutt
- * Microchip/Atmel SAMD21/L21
- - SAMD21/L21: Corrects behavior of the I2C_M_NOSTART flag. Also adds
- a release a bus on RXNACK and corrects typo priv->flags to msg->flags
- as priv->flags is never set. From Alexander Vasiliev
- - SAMD21/L21: Fix SAMD2L2 arch to use calibrated oscillator value. Now
- SAMD20 and SAMD21 should work fine without external crystal. Note that
- SAML21 Xplained board has an external crystal and doesn't need this change,
- unless you don't want to use the crystal. From Alexander Vasiliev
- - SAMD21/L21 I2C Master: Adds calculation of a timeout and disables
- interrupts in case of error. From Alexander Vasiliev
- * Microchip/Atmel SAMD21/L21 Boards
- - SAML21-Xplained: Fix removed MAXCOARSESTEP from saml21-xplained board.
- From Alan Carvalho de Assis
- * Microchip/Atmel SAMD51/Ex
- - SAMD51/Ex: Alexander Vasiliev's fix to the SAMD21 I2C Master (commit
- b1110ba91c549572e94c24ebed202643233deee3) should probably also be
- applied to the SAMD51 I2C Master which is identical. From Gregory Nutt
- * Microchip/Atmel SAMV7
- - SAMV7 Serial: Fix case where TTYS0 is not defined. From Ken Pettit
- * Maxim Integrated MAX326xx
- - MAX326xx: WFI instruction in IDLE loop seems to interfere with
- stability. Commented out for now. Needs to be investigated further.
- From Gregory Nutt
- * NXP i.MXRT Drivers:
- - i.MXRT FLEXPWM: Correct duplicated definitions From David Sidrane
- - i.MXRT SERIAL: Fix TTYS0 defined definitions of higher numbered ports
- From David Sidrane
- - i.MXRT LPSPI: Removed unused clock, that borked the build. From David
- Sidrane
- - i.MXRT LPI2C: I2C Reset rework From David Sidrane
- * On Semi LC823450:
- - LC823450: Fix up_allocate_heap() in lc823450_allocateheap2.c. This
- change fixes heap size and also implements up_addregion(). From
- Masayuki Ishikawa
- - LC823450: Fix go_os_start() in lc823450_start.c. I found a bug in
- go_os_start() that it returns immediately because it does not compare
- r1 to zero. This commit fixes this bug. Also, this commit fixes its
- description. From Masayuki Ishikawa
- - Other Architectures: Masayuki Ishikawa's change to go_os_start() was
- also to all MCU-specific start-up functions that support
- go_os_start(). From Gregory Nutt
- * On Semi LC823450 Boards:
- - LC823450-XEVK: Fix IOB params in rndis/defconfig. These parameters
- work for HTTP audio streaming. From Masayuki Ishikawa
- - LC823450-XGEVK: Change RNDIS MAC address assignment in rndis
- configuration. In previous implementation, mac[0] was assigned to
- 0xaa for RNDIS host to avoid MAC address conflicts with RNDIS
- device.. However, I noticed that this assignment causes a random MAC
- address generation on ubuntu16.04 or later which is inconvenient to
- set up network interface. This new assignment scheme fixes this
- issue. From Masayuki Ishikawa
- - LC823450-XGEVK: Fix overlapped memory settings in memory.ld. From
- Masayuki Ishikawa
- * STMicro STM32 Drivers:
- - STM32: Remove redundant STM32 family definitions from chip.h header
- file. It is already done in arch/arm/src/stm32/Kconfig From Mateusz
- Szafoni
- - STM32 ADC: There is no DMA CFG bit for the basic IPv1 ADC. From
- Mateusz Szafoni
- - STM32 ADC: Refactor adc_reset. It should be easier to maintain this
- code if it's divided into smaller functions From Mateusz Szafoni
- - STM32 F0 Clocking: Fixes the problem in GPIO port clocks. Only port
- A clock was enabled although the comment states otherwise. From Juha
- Paalijärvi
- - STM32 F7 I2C: I2C out of bounds access on priv->msgv. Error in if
- statement. It was checking for msgc > 0. If message count is 1, only
- index 0 is valid on priv->msgv. Therefore random values in memory
- were used to set next_norestart. From David Sidrane
- - STM32 H7 I2C: Applied David Sidrane's I2C fix to the identical logic
- for STM32 H7. From Gregory Nutt
- - STM32 L4 I2C: Applied David Sidrane's I2C fix to the identical logic
- for STM32 L4. From Gregory Nutt
- * STMicro STM32 Drivers:
- - STM32 ADC: Fix RCC reset logic. From Mateusz Szafoni
- - STM32 ADC: Fix compilation errors for chips with one ADV TIM. From
- Mateusz Szafoni
- - STM32 DMA: Add missing DMA channel configuration.
- - STM32 PWM: STM32 MOE is not being appropriately handled for PWM for
- advanced timers. It is only ever reset and so no PWM train is
- generated. This change addresses this. Noted by Dave Marples. From
- Mateusz Szafoni
- - STM32 PWM: Fix compilation errors if the upper-half PWM logic is not
- enabled. From Mateusz Szafoni
- - STM32 SPI: STM32F446 & STM32F469 correct PC1 SPI assignments From
- David Sidrane
- - STM32 TIM: Fix compilation error if there is no TIM8. From Mateusz
- Szafoni
- - STM32 F0: Fix GPIO EXTI lines assignment for STM32 M0. From Mateuz Szafoni
- - STM32 F3 I2C: Remove the extra NONE event from the trace dump
- output. From Ouss4
- - STM32 F4 I2C: Remove the extra NONE event from the trace dump
- output. From Ouss4
- - STM32 F7 I2C: Use clock_t for ticks instead of uint32_t to hold system
- time. From Jussi Kivilinna
- - STM32 L4 I2C: Use clock_t for ticks instead of uint32_t to hold system
- time. From Jussi Kivilinna
- * STMicro STM32 Boards:
- - STM32F429I-DISCO: Fix lvgl demo removing STM32_FB_CMAP. From Alan
- Carvalho de Assis
- - STM32VL Discovery: Fix SRAM and FLASH size in the linker script.
- There is STM32F100RB with 8KB RAM and 128KB FLASH on the STM32VL
- Discovery kit. Invalid memory size could cause a hard fault. From
- Matous Pokorny
- - STM32VL Discovery: Fix memory size configuration and documentation.
- There is STM32F100RB instead of STM32F100RC on the STM32 VL Discovery
- kit. From Matous Pokorny
- - Viewtool-STM32F107: Change RNDIS MAC address assignment in rndis
- configuration. In previous implementation, mac[0] was assigned to
- 0xaa for RNDIS host to avoid MAC address conflicts with RNDIS
- device.. However, I noticed that this assignment causes a random MAC
- address generation on ubuntu16.04 or later which is inconvenient to
- set up network interface. This new assignment scheme fixes this
- issue. From Masayuki Ishikawa
- * TI Tiva:
- - Tiva LM/TM4C Start-Up: Remove option CONFIG_TIVA_BOARD_CLOCKCONFIG. It is
- not used and unnecessary. Fix some naming. up_clockconfig() is
- inappropriate. Change tiva_clockconfig() to tiva_clock_reconfigure()
- then we can change up_clockconfig() to tive_clock_configure(). From
- Gregory Nutt
- - Tiva LM/TM4C GPIO Interrupts: Fix tiva gpio interrupts From Lwazi Dube
- - Tiva LM/TM4C: Improve GPIO interrupt support by removing unnecessary,
- hard-coded per-MCU defines and using the existing Kconfig configuration
- options instead. From Lwazi Dube
- * TI Tiva Drivers:
- - Tiva TM4C Serial: After commit
- 51b78034ac8d1fdf598107bf4093f0beccd5b80b, my tiva console does not
- work - enter key produces garbage characters. This commit fixes the
- problem for me. From Lwazi Dube
- * C Library/Header Files:
- - include/dsp.h: Fix missing semicolon error in dsp.h From MYAPICI
- - include/nuttx/compiler.h: Correct support of C-version-specific features.
- Cannot depend on GCC version because -std=c89 may be used on comomand
- line. Need instead to use __STDC_VERSION__ to determine if a feature is
- supported. Also add conditional support inline, depending on C99. From
- Gregory Nutt
- - libs/libc/stdio: fread() should always set EOF if fewer than the
- requested number of bytes was not read. Per Anthony Merlino. From
- Gregory Nutt
- * Build System:
- - sched/irq/Make.defs: Fix warning about irq_csection.o appearing
- multiple times in the same rule. From Gregory Nutt
- * Tools:
- - tools/gencromfs.c: "gencromfs.c:1171:3: warning: ignoring return
- value of 'asprintf'", declared with attribute warn_unused_result
- [-Wunused-result]. From David Sidrane
- - tools/gencromfs.c: Fix build on macOS. From David Sidrane
- * NSH Library: apps/nshlib:
- - apps/nshlib: Fixes an error in the NSH parser. There was a bug when
- executing an nsh shell script which contains a redirection. When the
- command in the script is executed, it sets the vtbl->np.np_redirect flag
- (as it should), but then doesn't restore it, leaving it set at the end of
- the script execution. Then the vtbl->np.np_redirect flag is set when the
- 'sh' command completes, causing a restore from un-initialized variables,
- thus leading to a crash. See the code snippet below for an example test
- case.
- Test case:
- NuttShell (NSH)
- nsh> mkrd -s 1024 40
- nsh> mkfatfs /dev/ram0
- nsh> mount -t vfat /dev/ram0 /tmp
- nsh> echo "echo 1 > /dev/null" > /tmp/test.sh
- nsh> cat /tmp/test.sh
- echo 1 > /dev/null
- nsh> sh /tmp/test.sh
- ...
- The nsh prompt doesn't get printed. You can type a couple of commands,
- but then the system will crash because of bad pointers. From Ken Pettit
- - apps/nshlib: Fix buffer overrun when redirected to a file. SAVE_SIZE
- must be the same as sizeof(struct serialsave_s). From Masayuki Ishikawa
- * System Utilities: apps/system:
- - system/system.c: Fixes build error; There is no result variable, use
- errcode instead. From Anthony Merlino
- - apps/system/vi: Bug fixes:
- 1. Deletion of last line in file using 'dd' caused infinite loop
- searching for 'nextline'. Fixed.
- 2. Insertion of line above 1st line using 'O' caused line to be
- inserted on 2nd line. Fixed.
- 3. Paste buffer from 'dd' was being free'd after the 'p'aste operation,
- preventing multiple paste opportunity. Fixed.
- 4. The cursor was not being bound to the line end and was allowed to
- 'hover' over the '\n' EOL character. This caused wierd (relative to
- standard vi) insertion locations and cursor movement with 'a'ppend
- and 'i'nsert. Fixed.
- 5. The 'vi_shrinkpos' position didn't take the end of file pointer into
- account when calculating 'curpos', 'prevpos' variables causing
- wierdness when deleting things near the end of the file. Fixed.
- 6. The 'yy'ank command was improperly deleting the text from the
- document instead of simply yanking to the paste buffer. Fixed.
- 7. The 'dd'elete line funciton was not copying the deleted line to the
- paste buffer as part of the delete operation. Fixed.
- 8. The bottom line of the screen was sometimes being used for document
- text and other times for command / find entry. Fixed by reserving
- the bottom the bottom line for status / command only.
- 9. When scrolling up / down through a file, the cursor position was not
- preserved and moved further and further to the left column based on
- the line lengths of the lines visited. Fixed.
- 10. The display was being COMPLETELY redrawn with each keystroke,
- causing the responsiveness to be unbearable. Fixed. Added logic to
- dynamicall indicated which portions of the screen need to be updated
- (full display, current line to end of screen, current line only,
- none).
- 11. The individual display line updates were being performed a character
- at a time by calling the vi_putch() function, causing slow
- performance, especially in telnet or USBCDC sessions where there is
- a lot of overhead per packet. Fixed by calling vi_write() instead
- with a block of characters with breaks as needed for TAB exansion.
- 12. The forward delete 'x' operation allowed deletion through '\n'
- characters causing lines to be joined. This is different from
- standard vi where 'x' at the end of a line performs a delete
- backward operation. Fixed.
- 13. When in 'ex' or find sub-modes (':' or '/' bottom line modes),
- hitting backspace with empty text did not return the operation to
- command mode like it does in standard vi. Fixed.
- 14. Performing a 'find' opertation would only search from the current
- cursor position to the end of the file and did not wrap like in
- standard vi. Fixed.
- 15. Loading a file that was larger than the initial text allocation
- would force a call to 'vi_extendtext', marking the file as modified
- when in fact it hadn't even been loaded yet. Fixed.
- 16. Combined vi_insert_mode and vi_replace_mode into a single function
- to save code space since they are nearly identical routines.
- 17. In command mode, backspace was deleting characters which is
- different from standard vi. Backspace in command mode normally
- simply moves the cursor left / to the previous line. Fixed.
- 18. Added code to handle boundry conditions when the file is new and
- commands are applied to an empty file.
- 19. Fixed vi_shrinktext so it doesn't allocate a zero-length buffer when
- the last character in the file is deleted.
- 20. The 'x' command was not copying to the paste buffer. Fixed.
- 21. Fixed parsecolon routine to properly deal with ":wq" command sequence.
- From Ken Pettit
- * Wireless Utilities: apps/wireless:
- - apps/wireless/bluetooth/btsak: 'bt bnep0 info' outputs a reversed addr. It
- should print BDAddr: aa:bb:cc:dd:ee:ff instead of BDAddr:
- ff:ee:dd:cc:bb:aa. From Lwazi
- - apps/wireless/bluetooth/btsak: Fix some errors in btsak. From Lwazi Dube
- - apps/wireless/bluetooth/btsak/btsak_main.c: Fix address parsing. From
- Lwazi Dube
- - apps/wireless/bluetooth/btsak: Remove unnecessary gatt get commands. From
- Lwazi Dube
- - apps/wireless/bluetooth/btsak/btsak_scan.c: Fix reversed address. From
- Lwazi Dube
- - apps/wireless/ieee802154/i8sak: Fixes issues related to re-running
- daemon. Releases lock when releasing daemon. Re-sets daemon_shutdown so
- that a subsequent daemon launch does not immediately return. From Anthony
- Merlino
- NuttX-7.29 Release Notes
- ------------------------
- The 129th release of NuttX, Version 7.29, was made on March 25, 2019,
- and is available for download from the Bitbucket.org website. Note
- that release consists of two tarballs: nuttx-7.29.tar.gz and
- apps-7.29.tar.gz. These are available from:
- https://bitbucket.org/nuttx/nuttx/downloads
- https://bitbucket.org/nuttx/apps/downloads
- Both may be needed (see the top-level nuttx/README.txt file for build
- information).
- Additional new features and extended functionality:
- * Core OS:
- - Configuration: CONFIG_NFILE_DESCRIPTORS=0 can no longer be used to
- disable the file system. NuttX with no file system does not make
- sense and is no longer supported. From Gregory Nutt.
- - Rename most internal OS functions from sched_* to nxsched_* to
- indicate that they are NuttX internal functions (some renaming is
- still needed). From Gregory Nutt.
- - Rename all internal OS functions from task_* to nxtask_* to indicate
- that they are NuttX internal functions. From Gregory Nutt.
- - Rename sched_process_timer to nxsched_process_timer. Rename
- sched_timer_expiration to nxsched_timer_expiration. Rename
- sched_alarm_expiration to nxsched_alarm_expiration. Those are the
- appropriate names for an internal sched/ function (still many named
- incorrectly). From Gregory Nutt.
- - Standardize naming: Rename os_start() to nx_start(), rename os_smp*
- to nx_smp*, rename os_bringup to nx_bringup, rename all internal
- static functions to begin with nx_ vs os_. From Gregory Nutt.
- - Initialization: Remove the option CONFIG_BOARD_INITTHREAD. Now, if
- CONFIG_BOARD_INITIALIZE is selected, then the board_initialize()
- logic will ALWAYS run on an internal kernel thread. This will
- prevent the problems people have had doing inappropriate
- board_initialization on the IDLE thread. From Gregory Nutt.
- - Initialization: Add support for CONFIG_BOARD_EARLY_INITIALIZE. If
- this option is selected then nx_start() will call a board-provided
- function board_early_initialize() immediately after calling
- up_initialize(). Rename board_initialize() to
- board_late_initialize(). From Gregory Nutt.
- - Signal Delivery: Add a flag to the TCB to indicate that we are in a
- signal handler. Use this flag to assure that a there is never
- attempts to nest signal handling operations on a thread. This was
- guaranteed before but when locking of pre-emption during signal
- delivering was eliminated in a previous commit, there was a remote
- possibility of an attempt to do nested signal handling. This flag
- assures that there is only one signal handled at a time. From
- Gregory Nutt.
- - Signal Handler Security: The architecture-specific signal handler
- return register state is saved and available on the user stack.
- This commit reorders some logic so that certain, critical registers
- are preserved in the TCB. This eliminates most malicious exploits
- which more the return address, for example, but does not make the
- logic 100% secure. From Gregory Nutt.
- - Timer Interrupt Procssing: Add a configurable call out to a
- user-provided function, 'timer hook', on each timer interrupt. From
- Gregory Nutt.
- - PM Activity: Add pm_staycount() API for get stay numbers. This
- function is currently not used and a waste of FLASH space. From ligd.
- - Pthreads: Add support for pthread_mutex_timedlock From Leif Jakob.
- - Pthread Spinlocks: Add a very preliminary implementation of the new
- POSIX pthread_spinlock_* interfaces. From Gregory Nutt.
- - Critical Section Monitor: Remove SCHED_IRQMONITOR_GETTIME to
- simplify the clock source selection: (1) Use up_critmon_gettime if
- SCHED_IRQMONITOR, (2) Call clock_systimespec if SCHED_TICKLESS, (3)
- Don't collect timing info for all other cases. From Xiang Xiao.
- - Work Queue Notification: Notifier can now work with either lpwork
- or hpwork. From Xiang Xiao.
- - Protected Build: Add add a new field (us_heapend) to struct
- userspace_s that labels the end of the heap. From Xiang Xiao.
- * Binary Loader/Kernal Modules/Shared Libraries
- - Shared Libraries: Implement dlerror() using strerror(). From Xiang
- Xiao.
- - Shared Libraries: Add LD_LIBRARY_PATH environment variable
- support. From anchao.
- - ELF Loaders: Optimize elf load speed: (1) Don't zero out memory,
- (2) Reduce the initial buffer size to 32 bytes. From Xiang Xiao.
- - ARM ELF Relocation: Add support for the R_ARM_THM_JUMP11 relocation
- type. This relocation type may be generated when LTO optimization
- is enabled. From anchao.
- - ELF Modules: Add relocation buffer table to reduce filesystem
- access. From anchao.
- - ELF Modules: Add symbol buffer table to reduce filesystem access.
- From anchao.
- * File Systems/Block and MTD Drivers
- - Filesystem Mount: Move the union inode_ops_u i_mtd field into the
- mount section of inode_ops_u and remove the guard to simplify fs
- which support both block and mtd. From Xiang Xiao.
- - ROMFS: Add support to mount a ROMFS volume using an MTD driver
- interface using the standard mount() operation. From Xiang Xiao.
- - LittleFS: VFS wrapper improvement: (1) Support block device
- interface, (2) support ioctl, stat and sync file operation, (3)
- support forceformat and autoformat option, (4) update file->f_pos
- and dir->fd_position, (5) remove the internal struct from dir, and
- (6) remove mtd byte read/write requirement. From Xiang Xiao.
- - UnionFS: Support mount of UnionFS from the NSH command line. From
- Xiang Xiao.
- * Networking/Network Drivers:
- - UsrSock: Add mutual exclusion so that only user can perform a
- socket request From zhangyuan7.
- - UDP: Initialize callback address structure to avoid random values
- in padding. From anchao.
- * Wireless/Wireless Drivers:
- - SX127x: Initial support for SX127x LoRA radio From Mateusz Szafoni.
- * Graphics/Display Drivers:
- - Graphics: Fix a naming collision: Ye olde nx_start that started
- the NX graphics is now nxmu_start(). nxmu_start() is now
- prototyped in nxmu.h (instead of nx.h). From Gregory Nutt.
- - NX Server Startup: Extend nxmu_start() so that receives a display
- number as an argument. This makes it possible to have multiple
- instances of the NX server running on boards that support multiple
- displays. Also includes updates to boardctl() to accept display
- number paramters. From Gregory Nutt.
- - Graphics: nx_openwindow() and nxtk_openwindow() now accept an
- additional 'flag' parameter. This argument is current used only to
- select a RAM backed, per-window framebuffer. From Gregory Nutt.
- - Per-Window Framebuffers: Windows may now be optionally created
- with a RAM frambuffer backing up the window content. Rending into
- the window will result in rending into the backup framebuffer, then
- updating the physical display from the framebuffer. The advantage
- of this option is that the application that manages window will no
- longer receive redraw() callbacks. Those calls normally occur when
- a window "above" moves exposing a portion of the window below. If
- this option is selected, then the system will redraw the exposed
- portion of the window from the backup framebuffer without
- intervention of the window applications. This greatly reduces the
- complexity of the application and performance of the window at the
- expense of increased memory usage. Redraw requests in other cases
- are also suppressed: Changes to window position, size, etc. As a
- consequence, some manual updates will be required when certain
- events occurr (like removing a toolbar from a window). NOTE: A
- significant amount of RAM, usually external SDRAM, may be required
- to use per-window framebuffers.
- * Other Common Device Drivers:
- - Driver Notifications: Support signal notification through
- SIGEV_THREAD in all drivers that provide signal notifications:
- RTC, Joysticsks, buttons, Zero-Crossing, wireless, FT80x, Timer,
- PHY. From Xiang Xiao.
- - Watchdog Driver: Support auto-monitor service From Gregory Nutt.
- - Timer and Alarm Drivers: Implement up_critmon_gettime and
- up_critmon_convert and remove the critical section from
- current_usec to infinite recursion. From Xiang Xiao.
- - RTC Driver: Protect the RTC state with a semaphore. From Xiang
- Xiao.
- - Serial Upper Half: Call pm_activity() when characters are received
- on a console device. From Gregory Nutt.
- - MPU60x0: Initial support for TDK InvenSense MPU6000 and MPU6050
- 6-axis gyroscope and accelerometers. This commit supports SPI
- media only. From Bill Gatliff.
- - EEPROM Driver: Add configurable SPI eeprom frequency. From
- Valmantas Paliksa.
- - GPIO Driver: Support reading and writing gpio pins using cat and
- echo. From Valmantas Paliksa.
- - MCP2515: Add MCP2515 clock input config to KConfig. From
- Valmantas Paliksa.
- - MAX7456: Support for the Maxim MAX7456 on-screen-display chip.
- From Bill Gatliff.
- * Common Board Logic:
- - boardctl(): up_testset() can now be accessed by applications via
- the boardctl() interface rather than attempting to call it
- directly. pthread Spinlocks are not available unless the
- architecture supports the up_testset() operation. From Gregory
- Nutt.
- - boardctl(): Add support for BOARDIOC_NXTERM which can be used to
- create an NxTerm terminal. From Gregory Nutt.
- - boardctl(): Add boardctl() commands to replace direct calls to
- nxterm_redraw() and nxterm_kbdin(). From Gregory Nutt.
- * Microchip PIC32MZ Drivers:
- - PIC32MZ Timers: Add support for the PIC32MZ timers (driver,
- lowerhalf, freerun and oneshot) From Abdelatif Guettouche.
- * Common ARM Options:
- - arch/arm: Move FPU options to a common place and unify the usage
- by removing ARCH_CORTEXRxF. From Xiang Xiao.
- - arch/: Unify the cache interface for all architectures that
- support a data cache. From Xiang Xiao.
- - ARMv7-M/A/R: Add a architecture-specific new barriers.h header
- file that provides the memory barrier definitions that were
- previously in the (now unified) cache.h header files. From Gregory
- Nutt.
- * ARMv7-A
- - ARMv7-A: Support thumb mode and fix interworking issue. From
- zhangyuan7.
- - ARMv7-A: Add weak attribute to arm_data_initialize so platform
- could provide the new implementation as needed. From zhangyuan7.
- - ARMv7-A: Add SCR bit definitions. From Xiang Xiao.
- - ARMv7-A: Add mmu_l1_map_regions() to remove the code duplication.
- From Xiang Xiao.
- - ARMv7-A: Add the initial cortex-a7 architecture support From
- zhangyuan7.
- * ARMv7-M
- - ARMv7-M: stackcheck allow faulting stack calculation to make it to
- the up_assert reg dump From David Sidrane.
- * Microchip/Atmel SAMD21/L21 Drivers:
- - SAMD2/L2: Add RS485 support to SAMD2L2 serial. From Alan Carvalho
- de Assis.
- * Misoc:
- - Minerva: Add support for the Minerva architecture. From Ramtin
- Amin.
- * Misoc Boards:
- - misoc: Add support for an NSH configuration using the Verilator
- board. From Ramtin Amin.
- * Nordic NRF52:
- - NRF52: 1. Added 52840 family support 2. Use common IRQ and memory
- layout header file for 52832 & 52840. From Levin Li.
- * Nordic NRF52 Drivers:
- - NRF52 RNG: 1. added RNG device driver 2. added errdata to correct
- temp which will be used by RNG module 3. use general task_trigger /
- event_clear inline api for all driver. From Levin Li.
- * NXP i.MX RT Drivers:
- - i.MXRT XBAR: Add XBAR Support. From David Sidrane.
- - i.MXRT USB: Add USB analog header file. From David Sidrane.
- - i.MXRT OCOTP: Added OCOTP Support. From David Sidrane.
- - i.MXRT LCD: Adds framebuffer support for the i.MXRT 1050.
- Includes DCD initialization for SDRAM to provide space for the
- framebufer. External code I used/ported is from NXP and is BSD
- 3-clause license. From Johannes.
- * NXP i.MX RT Boards:
- - IMXRT1050-EVK: Adds framebuffer support for the i.MXRT 1050.
- From Johannes.
- * NXP LPC17xx
- - LPC17xx: Add a configuration option to skip over the framebuffer
- when adding DRAM to the heap. From Gregory Nutt.
- * NXP LPC17xx Boards
- - Open1788: Add a configuration to test NxTerms in the PROTECTED
- mode. From Gregory Nutt.
- - Open1788: Re-arrange PROTECTED mode link map to make more space
- for large kernels with debug enabled. From Gregory Nutt.
- - Open1788: Add a configuration for testing per-window frame buffers
- using apps/examples/pwfb. From Gregory Nutt.
- * NXP LPC54xx Boards
- - LPCXpresso-LPC54628/pwfb: Add per-window framebuffer configuration
- using apps/examples/pwfb. From Gregory Nutt.
- - LPCXpresso-LPC54628: Add a configuration for addition per-window
- framebuffer using apps/examples/pwlines. From Gregory Nutt.
- * STMicro STM32 Drivers:
- - STM32F0/L0 SPI: Add SPI support for F0. From Mateusz Szafoni.
- - STM32 ADC, PWM and TIM: (1) configure injected channels external
- trigger when ADC enabled, (2) update injected conversion queue of
- context after configuration, (3) support for offset configuration,
- and (6) support for advanced timers channel 5 and 6. From Mateusz
- Szafoni.
- - STM32 DFU Mode: Add logic to reboot the STM32 in DFU mode.
- Current implementation only works for STM32F2 and F4. From Bill
- Gatliff.
- - STM32F7 LSE: Add configuration of LSE oscillator drive capability
- From Jussi Kivilinna.
- - STM32F7 I2C: Fix another memory access issue on a bus error. From
- David Sidrane.
- - STM32F7 TIM: Add OUTTOGGLE mode for STM32f7 timer From Valmantas
- Paliksa.
- - STM32F7 Timer Lower Half: Add timer lowerhalf driver for stm32f7.
- From Valmantas Paliksa.
- - STM32F7 ITM: Add ITM syslog support. From Valmantas Paliksa.
- - STM32F7 CAN: Add CAN driver with support for three bxCAN
- interfaces. From Valmantas Paliksa.
- - STM32F7 QSPI: Add stm32f7 Quad SPI support. From Valmantas Paliksa.
- - STM32L4 LSE: Ports Jussi Kivilinna's recent STM32F7 LSE change to
- STM32L4. From Juha Niskanen (Haltian).
- - STM32H7 I2C: Apply David Sidrane's fix for the STM32F7 to the
- STM32H7. From Gregory Nutt.
- - STM32H7 DMA: Rename DMA1/2 irq names to match those from other
- STM32. Add auxiliary definitions. Add DMAMAP definitions for
- MDMA, DMA1, DMA2 and BDMA. Add some address blocks. Change RCC
- definitions to match other STM32 ports. Enable clock for MDMA and
- BDMA. Rename DMA channel definitions. Separated files for MDMA,
- DMA, BDMA and DMAMUX. Add missing definitions for MDMA, BDMA and
- DMAMUX. SPI DMA mode. Add base addresses for D1, D2 and D3
- domain; use 2 bytes to specify memory region. Add D1 domain core
- prescaler configuration. From Mateusz Szafoni.
- - STM32H7 OTG: Initial OTG support for STM32H7 and some minor
- improvements. Add support for HSI48 clock. From Mateusz Szafoni.
- - STM32H7 Build: Initial support for protected build mode. From
- Mateusz Szafoni.
- - STM32L4 I2C: Apply David Sidrane's fix for the STM32F7 to the
- STM32L4. From Gregory Nutt.
- * STMicro STM32 Boards:
- - B-L072Z-LRWAN1: Add SX127x configuration. From Mateusz Szafoni.
- - Nucleo-F091RC: Add support for SX127x radio. From Mateusz Szafoni.
- - Nucleo-F091RC: Add SX127x configuration. From Mateusz Szafoni.
- - Nucleo-F207ZG: Add support for USB and initialize CDCACM if
- configured. From Mateusz Szafoni.
- - STM32F429I-DISCO: Add an apps/examples/examples/nxhello
- configuration. From Gregory Nutt.
- - Nucleo-F446RE: Add support for the Nucleo F446RE. From Sebastien
- Lorquet.
- - B-L072Z-LRWAN1: Use HSI as default clock source. From Mateusz
- Szafoni.
- - Nucleo-L073RZ: Add SX127x configuration. From Mateusz Szafoni.
- - Nucleo-L073RZ: Port button logic from nucleo-f072 which appears to
- be the same. From Gregory Nutt.
- - Nucleo-L432KC: Add support for I2C driver initialization. From
- Nikolay Semenov.
- - Nucleo-H743ZI: Add support for USB and initialize CDCACM if
- configured. From Mateusz Szafoni.
- - OmnibusF4: Initial support for the OmnibusF4 family of flight
- management units. "OmnibusF4" is not a product name per se, but
- rather a design spec that many product vendors adhere to. The spec
- defines the major components, and how those components are wired
- into the microcontroller. Airbot is one such vendor, and they
- publish a schematic here: http://bit.ly/obf4pro. Other software
- that supports the OmnibusF4 family include Betaflight, iNAV, and
- many others. PX4 recently added support as well, using their own,
- non-upstreamed, bespoke port of NuttX. No code from those resources
- is included in this port. From Bill Gatliff.
- - OmnibusF4: Add MAX7546 support. From Bill Gatliff.
- * TI CCxx:
- - CC1312R1: Code complete and builds successfully. Stalled on
- further radio development. I planned to integrate the IEEE 802.15.4
- radio interface, but the Cortex-M0 interface is not available with
- an open license.
- * TI CCxx Boards:
- - LaunchXL-CC1312R1: Add support for on-board LEDs and buttons. The
- LauchXL-CC1312R1 NSH Configuration is now fully functional. From
- Gregory Nutt.
- - LaunchXL-CC1310: Clone LED and button support from the
- LaunchXL-CC1312R1. The number of LEDs and buttons as well as DIO
- usage is identical (Still not functional). From Gregory Nutt.
- * Tools:
- - tools/rmcr.c: Add a tool to remove carriage returns and dangline
- whitespace at the end of lines. From Gregory Nutt.
- - tools/nxstyle.c: Can now detect if the C comment closing is not on
- a separate line. From Gregory Nutt.
- - tools/nxstyle.c: Make sure that all files begin with a comment on
- line 1 (which should be the file header). From Gregory Nutt.
- - tools/nxstyle.c: Add check for multiple definitions of local
- variables on a line. From Gregory Nutt.
- - tools/nxstyle.c: Beef up logic that detects multiple variable
- definitions per line. From Gregory Nutt.
- - tools/nxstyle.c: Add capability to detect CamelCase identifiers.
- From Gregory Nutt.
- - tools/nxstyle.c: Add logic to detect a blank line following a left
- brace or a blank line preceding a right brace. From Gregory Nutt.
- - tools/nxstyle.c: Don't complain about certain lowercase characters
- in otherwise uppercase pre-processor identifers: IPv6, IPv4,
- ICMPv6, IGMPv2, p as a decimal point, d signifying a divisor. It
- was a bad idea to let the door open a crack for there. While they
- improve readability, the inconsistently also causes other
- problems. From Gregory Nutt.
- * Build System:
- - Makefiles: Modify tools/Makefiles to add a "Do not Edit" warning
- on defconfig files From Alan Carvalho de Assis.
- * Libraries/Header Files:
- - lib_vsprintf() (Nano): Add newlib-nano lib_vsfprintf has been
- added and is now the default support for the printf family. This
- fprintf code was originally adapted from AVR libc and provides
- improved floating point output support, including 'g' mode and
- making 'f' mode include digits past the decimal by default. The
- newlib version can be found here:
- https://salsa.debian.org/electronics-team/toolchains/newlib-nano.
- That project is GPL overall, but the newlib-nano printf portions
- are BSD licensed as described in the COPYING.NEWLIB file. From
- Keith Packard.
- - lib_vsprintf() (Nano): Added support for long lont types. From
- Johannes.
- - lib_vsprintf() (Nano): Added hh type modifier (without extending
- the flag variable). From Johannes.
- - lib_vsprintf() (Nano): Adds configurable support for numbered
- arguments. From Johannes.
- - lib_vsprintf() (Nano): Cleaned naming and allow for leading zeros
- in argument number (which doesn't make sense but should be). From Johannes.
- - lib_vsprintf() (Legacy): Add support for %g format which, for
- these purpose, is equivalent to %f except that trailing zeroes are
- suppressed. From Gregory Nutt.
- - vscanf(): Moved vscanf logic to lib_sscanf.c Switched to stream
- interface (tricky, because the old implementation used massive read
- ahead, which isn't suitable for streams, chars already read are
- gone). Added hh, h, and ll modifiers. From Johannes.
- - scanf() and fscanf(): Added scanf and fscanf based on enhanced
- vscanf(). From Johannes.
- - uname(): Add build date and time to uname output (like Linux).
- From Gregory Nutt.
- - strsep(): Add strsep BSD/Linux function. From Xiang Xiao.
- - netdb: Hostname support no longer depends on CONFIG_NET since the
- host name is also useful in the non-network environment.
- CONFIG_NET_HOSTNAME changed to CONFIG_LIB_HOSTNAME. From Xiang Xiao.
- - netdb: Support the nameserver change notification then we can pass
- DNS info from server to client in usrsock case. From Xiang Xiao.
- - include/fixedmath.h: Add macros for conversion between types
- b16_t and type double From Gregory Nutt.
- - include/limits.h: Define NL_ARGMAX (as well as some of the other
- 'invariant values' per
- http://pubs.opengroup.org/onlinepubs/7908799/xsh/limits.h.html).
- From Johannes.
- - linclude/limits.h: Add 'range 9 999999' to CONFIG_LIBC_NL_ARGMAX
- to Kconfig. Per OpenGroup.org, the minimum value for NL_ARGMAX is
- 9. From Gregory Nutt.
- - include/nuttx/lcd/edid.h: Add extended EDID block IDs From
- Gregory Nutt.
- * apps/ General:
- - apps/: Follow up the kernel signal-related change in various files
- under examples/ and graphics/. From Xiang Xiao.
- - apps/: Update for corrected name of standard header file. Should
- be dlfcn.h, not dllfcn.h. From Gregory Nutt.
- - apps/: The file system can no longer be disabled. Remove all
- conditional logic based on CONFIG_NFILE_DESCRIPTORS==0 From
- Gregory Nutt.
- - apps/: Remove/replace all conditional logic based on
- CONFIG_NSOCKET_DESCRIPTORS == 0. That value is always greater than
- zero now. In places just replace with #ifdef CONFIG_NET. From
- Gregory Nutt.
- - apps/: Some updates due to NuttX renaming:
- CONFIG_BOARD_INITIALIZE is now CONFIG_BOARD_LATE_INITIALIZE;
- board_initialize() is now board_late_initialize(). From Gregory
- Nutt.
- - apps/: Graphics interfaces nx_openwindow() and nxtk_openwindow()
- now accept an additional 'flag' parameter. From Gregory Nutt.
- * NSH: apps/nshlib:
- - apps/nshlib/nsh_netinit.c: Update for changes to signal
- notification structures. From Gregory Nutt.
- * Examples/Tests: apps/examples:
- - apps/examples/ini_dumper: New example program. ini_dumper is
- example program that dumps content of ini file in pretty ascii table.
- It is using inih ini library in fsutils/inih. From Michal Lyszczek.
- - apps/examples/modbusmaster: Add Simple Modbus master example.
- This example only supports Read/Write HoldingRegisters, but it is
- easy to extend it to support Read/Write Input/Coils/etc.
- Originally creatd by Vytautas in 2016 and updated with minor fixes
- for this commit. From Alan Carvalho de Assis.
- - apps/examples/pwfb: Added a test/example at apps/examples/pwfb
- that was used for initial testing of the per-window framebuffer
- feature. From Gregory Nutt.
- - apps/examples/pwlines: Added another a test/example at
- apps/examples/pwlines that was used for further testing of the
- per-window framebuffer feature. From Gregory Nutt.
- - apps/examples/sx127x: Add sx127x demo From Mateusz Szafoni.
- * File System Utilities: apps/system
- - apps/fsutils/inih: New package. inih (INI Not Invented Here) is a
- simple .INI file parser written in C.
- https://github.com/benhoyt/inih. From Michal Lyszczek.
- * Network Utilities: apps/netutils:
- - apps/netutils/codecs/: Remove the big Base64 stack array. From
- Xiang Xiao.
- - apps/netutils/codecs/: Add base64_[de|en]code_length() API From
- ligd.
- * System Utilities: apps/system
- - apps/system/cfgdata: Make builtin task stack size and priority
- configurable. Set default to 2048 (from 1024) per recommendation
- of Ken Pettit. From Gregory Nutt.
- - apps/system/embedlog: Update to version 0.4.0. From Michal Lyszczek.
- - apps/system/nxplayer and nxrecorder: Change 'int prio' to
- 'unsigned int prio'. Required by changes to MQ function
- prototypes. From Michal Lyszczek.
- - apps/system/psmq: New package. psmq is publish subscribe message
- queue. It's a set of programs and libraries to implement
- publish/subscribe way of inter-process communication on top of
- POSIX message queue. From Michal Lyszczek.
- - apps/system/zmodem: Switch to the raw mode before transfer and
- restore to the original setting after finishing the transfer. From
- Xiang Xiao.
- * Testing: apps/testing:
- - apps/testing/: Move all file system tests from examples/ to
- testing/ (cxxtest, fstest, nxffs, smart, smart_test, smp). From
- Gregory Nutt.
- - apps/testing/cxxtest: Add a README file. From Gregory Nutt.
- - apps/testing/ostest: Add test of pthread_mutex_timedlock() From
- Gregory Nutt.
- - apps/testing/ostest: Fix several errors in the setvbuf() test.
- From Gregory Nutt.
- - apps/testing/scanftest: Port of Greg King's scanf test
- (https://github.com/cc65). From Johannes.
- * Tools: apps/tools:
- - apps/tools/check-hash.sh: Add a tool check hash on downloaded
- packages. From Michal Lyszczek.
- Bugfixes. Only the most critical bugfixes are listed here (see the
- ChangeLog for the complete list of bugfixes and for additional, more
- detailed bugfix information):
- * Core OS:
- - Signals: Restructure nxsig_deliver() so that the signal handler is
- not called with the pre-emption disabled (or, at least no with
- pre-emption disabled by nxsig_deliver() itself). From Gregory Nutt.
- - Critical Section Monitor: Move up_critmon_* to arch.h avoid the
- duplicated declaration. From Xiang Xiao.
- - Assertions: Architecture-specific assertion logic should dump CPU0
- IDLE stack only when PID equals 0. IDLE threads of other CPUs do
- not need this special check. From Xiang Xiao.
- - Message Queues: Change 'int prio' to 'unsigned int prio'.
- According to open group specification, priority field in mq_*
- functions should have unsigned type:
- http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/mqueue.h.html.
- From Michal Lyszczek.
- - Timer Expiration: Fix macro SEC2TICK() 32-bits overflow by using
- uint64_t in calculation. From ligd.
- - Kernel Memory Manager: In mm/kmm_heap/kmm_kernel.c, remove unused,
- duplicated kmm_heapmember(). From Xiang Xiao.
- - User Memory Manager: Ensure all user allocation try sbrk before
- fail From Xiang Xiao.
- - waitid(): Could exit without leaving critical section on some
- error conditions. From Gregory Nutt.
- - IOBs: iob_allocwait() should decrease semcount manually. From
- Xiang Xiao.
- - IOBs: iob_copyin() should wait for each buffer and adjust the
- return value of iob_copyin_internal return to simplify the code
- From Xiang Xiao.
- - IOB Notifier: Don't check iob_navail in iob_notifier_setup to
- avoid a potential race condition. From Xiang Xiao.
- - IOB Debug Dump: Format the whole line before log to avoid the
- multiple timestamp prefix in each line. From Xiang Xiao.
- - SHM: Convert bytes to pages by MM_NPAGES instead of MM_PGALIGNUP
- From Xiang Xiao.
- - SHM: shmget() should hould call shm_extend() to allocate the
- physical memory. From Xiang Xiao.
- - Page Allocator: mm/pgalloc: shouldn't just allocate one page
- always. From Xiang Xiao.
- - Granule Allocator: Fix the wrong data in g_1bit_info and make the
- internal function static. From Xiang Xiao.
- - srbk(): Fix a backward conditional test. Should call
- mm_initialize() when brkaddr equal zero From Xiang Xiao.
- - sbrk(): Pass ARCH_HEAP_VEND as maxbreak argument From Xiang Xiao.
- - ELF Headers: Move elf related arch function to include/nuttx/elf.h
- because the implementation is located in libs/libc/machine and in
- order to avoid the conflict with the 3rd party libraries and clean
- up the file inclusion: (1) Remove redundant elf32.h, (2) Remove
- nuttx/binfmt/elf.h in libs/libc/machine, (2) Remove
- nuttx/binfmt/elf.h in modlib, and (4) Rmove nuttx/module.h in
- modlib. From Xiang Xiao.
- - ELF Executables: If there is an address environment
- (CONFIG_ARCH_ADDRENV), binfmt/elf doesn't need to free ctor/dtor
- alloc since freeing the address environment releases the heap
- automatically. From Xiang Xiao.
- - ELF Configuration: Correct libcxx exception handling by
- introducing the generic config(CXX_EXCEPTION and CXX_LIBSUPCXX)
- From Xiang Xiao.
- - ELF Loaders: Call umm_initialize as soon as possible otherwise
- elf_loadctors/elf_loaddtors may fail to allocate memory. From
- Xiang Xiao.
- * Crypto:
- - Crypto AES: After NuttX 7.28 crypto/aes.c would no longer
- compile. From Gregory Nutt.
- * File System/Block and MTD Drivers:
- - open(): Fix not returning failure for block_proxy() call. From
- David Sidrane.
- - AIO: aio_cancel() needs to signal caller after success. Also fix
- minor issue in the error handler. From Xiang Xiao.
- - HostFS: Remove the unnecessary use of host_stat() in
- hostfs_bind() From ligd.
- - LittleFS: Fix a minor issue found in code review: (1) Replace
- printf to finfo/fwarn/ferr, (2) Replace malloc/free to
- kmm_malloc/kmm_free, (3) define LFS_NAME_MAX to NAME_MAX, (4) Check
- the big endian using CONFIG_ENDIAN_BIG. From Xiang Xiao.
- - LittleFS: VFS Lookahead should use bit unit not byte unit. From
- Xiang Xiao.
- - NxFLAT: Correct a double free debug assertion. This occurs when
- groups are enabled: (1) once via binfmt_exit and unload_module,
- and (2) once via sched_releasetcb(). this was corrected by adding
- logic to free/unload the memory once and nullify the pointer so
- that cannot be freed a second time. This commit resolves Bitbucket
- issue #145. From Valmantas Palikša.
- - NxFLAT: File descriptor leaks when nxflat loading fails. From
- Valmantas Palikša.
- - ProcFS: Fix typo in procfs uptime logic. From Sebastien Lorquet.
- * Networking/Network Drivers:
- - Network Configuration: The setup seems to support a network
- without sockets (CONFIG_NSOCKET_DESCRIPTORS == 0). That is not the
- case; if the network is enabled, sockets must be provided. From
- Gregory Nutt.
- - Networking: The value ERROR should never be returned from internal
- OS functions. That is reserved for returning values to appliations
- with the errno value set. Within the OS, errors are returned with
- a negated errno value ALWAYS. From Gregory Nutt.
- - Networking: The struct in_addr doesn't have the member sin_addr.
- The function lib_lo_ipv6match() is for IPv6. Correct the function
- it calls from lib_lo_ipv4matchto() to lib_lo_ipv6match(). Also add
- CONFIG_NET_IPv6 for configuration. From Kejun ZHOU.
- - TCP (buffered) send: Fix assertion crash when window size is
- zero. From Gregory Nutt.
- - ICMP/ICMPv6: Bind icmp callback from device to connection.
- Resolves the issue that bind() could not be called before send()
- From anchao.
- - TUN/TAP Driver: Re-order all TUN/TAP driver state data. Not only
- was was with wasting memory due to alignement requirements, it was
- also causing network packet buffers to be improperly aligned
- causing problems because the network requires 16-bit packet buffer
- alignment for uint16_t accesses. This alignment problem was
- discovered by Alan Carvalho de Assis. From Gregory Nutt.
- - TUN/TAP Driver: Packet buffer size should include the configured
- GUARD_SIZE. And, given how the buffers are allocated, the
- allocation size must be an even number of 16-bit values to preserve
- alignment. From Gregory Nutt.
- - Local Sockets: In local_connect(), initialize lc_result before
- giving lc_waitsem From zhangyuan7.
- - Local Sockets: Fixed deadlock issue by replacing nxsem_wait() with
- net_lockedwait() so that we do not wait with the network locked.
- From zhangyuan7.
- * Graphics/Display Drivers:
- - NX Graphics: Remove naming associated with the now non-existent
- NXFE graphics layer: Rename nxfe_reportposition to
- nxmu_reportposition. Rename nxfe_redrawreq to nxmu_redrawreq.
- Rename nxfe.h to nxmu.h. Rename nxfe_state_s to nxmu_state_s.
- Rename nxfe_conn_s to nxmu_conn_s. From Gregory Nutt.
- - NxTERM: Remove the nxterm_unregister interface. The correct way
- to unregister a device is to unlink it. From Gregory Nutt.
- - NxTerm: Needs to clear display initially. Otherwise, garbage from
- previous display may still be present from preceding NxWM window.
- From Gregory Nutt.
- - Font Cache: Fix a memory leak in the font cache. With a busy
- NxTerm display, this could drain off all the memory pretty quickly!
- From Gregory Nutt.
- - Graphics: Nothing under graphics/ should set the errno. From
- Gregory Nutt.
- - Graphics: Fix a coordinate system error in nx_filltrapezoid().
- When no clipping rectangle is falls, it falls back to use the
- entire window as for the clip. However, that window must then then
- be in window relative coordinates, not in absoute device
- coordinates. From Gregory Nutt.
- * Common Board Logic:
- - boardctl(): Fix compiling error when set
- CONFIG_BOARDCTL_IOCTL/CONFIG_BOARDCTL_UNIQUEID. From Kevin Liu.
- * Common Drivers:
- - INA3221: Fix errors in INA3221 register field addresses and
- bitfield values. Signed value was losing its signed-ness due to
- use of unsigned type for register. From Ken Pettit.
- - Serial Upper Half: Initialize OPOST and ONLCR in uart_register.
- From Xiang Xiao.
- - Serial Upper Half: Don't reset the circular buffer on close since
- DMA may still be transferring data in the background if the user
- closes the handle too quickly and the handle is opened with
- O_NONBLOCK. From Xiang Xiao.
- - 16550 UART: Fix error: 'g_uart0port' undeclared. From Xiang Xiao.
- - 16550 UART: Fix typo for UART1 flow field initialization From
- Gregory Nutt.
- - CDC/ACM HCD: Fixes to the IOCTL method in recovery of UART pointer
- and in names of Termios-related field. From xhbm.
- - USB Device: Fix type for USBDEV_TRACE_INITIALIDSET in Kconfig.
- From Mateusz Szafoni.
- - TCA64xx: Fix some errors in the TCA64XX driver. From Bruno
- Schwander.
- - SYSLOG RAMLog: Fix error: Conflicting types for 'ramlog_addchar'
- From Xiang Xiao.
- - NRF24L01: Fix uninitialized irq_work which was causing a
- hard_fault on interrupt handler whenever something was sent from
- nrf24l01_term From Petri Ahonen.
- - MCP2515: Use kmm_zalloc to allocate device state structure. Fix
- some compiler errors. From Valmantas Paliksa.
- * Architecture Common:
- - arch/ Common: Remove architecture-specific watchdog.h and
- arm-elf.h because they are empty. The arm-elf header file was
- never used; the empty watchdog.h header file was used in only one
- place. From Xiang Xiao.
- - arch/ Common: Move up_pminitialize() after timer_initialize()
- From ligd.
- - arch/ Common: Align semi-hosting call style with other syscalls in
- architecture-specific syscall.h. From Xiang Xiao.
- - arch/ Common: Every file that uses serial IOCTLs (TIOC*) must
- explicity include nuttx/fs/ioctl.h. This was included previously
- via sneak path in the now deleted arch/serial.h. From Gregory Nutt.
- - arch/ Interfaces: Rename sched_process_cpuload to
- nxsched_process_cpuload. All internal sched_ functions should be
- prefixed with nx. From Valmantas Paliksa.
- * ARMv7-A:
- - ARMv7-A MMU: Updating the cp15_wrttb and cp15_wrdacr functions to
- use inline assembly in the correct way. The incorrect method was
- generating errors as ARMv7-a expects the MCR/MRC instructions to
- provide registers as an argument(MRC p15, 0, <Rt>, c2, c0, 0) and
- the code was providing a constant value(and hence the build
- error). From Bilal Wasim.
- - ARMv7-A: Remove inclusion pg_macros.h for armv7-a since this
- header file does not exist. From zhangyuan7.
- - ARMv7-A: Guard some assembly files if configuration not selected.
- From zhangyuan7.
- - ARMv7-A GIC: Fix assemble error when including gic.h From Xiang
- Xiao.
- - ARMv7-A GIC: Don't use GIC_ICDDCR_ENABLEGRP1 for GIC NONSECURE
- since this bit doesn't exist in this mode. From liuzhuang.
- * ARMv7-R:
- - ARMv7-R Syscall: In arch/arm/include/syscall.h, add missing
- inclusion of arch/armv7-r/syscall.h for Cortex-R. From Xiang Xiao.
- * ARMv7-M:
- - ARMv7-M Initialization: As noted by Roland Takacs in Bitbucket
- issue 141, there is a compilation error for STM32 if CONFIG_NET and
- CONFIG_NETDEV_LATEINIT are selected. That was due in part to the
- commit which extended up_netinitialize() with a
- !defined(CONFIG_NETDEV_LATEINIT) guard but did not add the guard to
- concrete implementations. I say "in part" because I don't think
- that the original intent of commit 19e16cb was to enable an
- alternative initialization of MCU internal Ethernet support but
- rather to enable support of external Ethernet devices that may have
- dependencies on, for example, SPI. However, this is still a proper
- fix to avoid the compilation error that can occur with this
- combination of configuration options. From Gregory Nutt.
- - ARMv7-M Configuration: ARCH_HIPRI_INTERRUPT shouldn't select
- ARMV7M_USEBASEPRI. First because that is a violation of the
- layered nature of the Kconfig architecture, but also because then
- Kconfig will generate errors when high priority interrupts are used
- with other architectures. From Xiang Xiao.
- - ARMv7-M Vector Table: Make the default NVIC_VECTAB_TBLOFF_MASK
- safer. The base address of the new vector table must be aligned to
- the size of the vector table extended to the next larger power of
- 2. From Xiang Xiao.
- - ARMv7-M RAM Vectors: Correct bad NVIC_VECTAB_TBLOFF_MASK
- definitions in previous commit. Were missing bits in the mask.
- Raised DEBUGASSERT in armv7-m/up_ramvec_initialize.c line: 144.
- From Mateusz Szafoni.
- * Expressif ESP32 Drivers:
- - ESP32 Timer ISR: Fix backward comparison. From Gregory Nutt.
- - ESP32 Serial: Fix some backward arguments. Correct 2-stop bit
- setting. From Gregory Nutt.
- * Microchip/Atmel SAMD2x/L2x Drivers:
- - SAMD2/L2 Serial: SAMD2/L2 serial driver. It needs
- sam_usart_enable(). to work From Alan Carvalho de Assis.
- * Microchip/Atmel SAMD3/4 Drivers:
- - SAM3/4 Ethernet: Port Anthony Merlino's SAMv7 fix to similar
- Ethernet driver for the SAM3/4. From Gregory Nutt.
- * Microchip/Atmel SAMV7 Drivers:
- - SAMv7 SPI: Fix DMA Tx/Rx timeout issue. From Kevin Liu.
- - SAMv7 QSPI: Compile error when set CONFIG_SAMV7_QSPI_DLYBCT.
- From Kevin Liu.
- - SAMv7 Ethernet: The logic for determining the number of queues for
- SAMV71 must be extended. All SAMv7 parts increase the number of
- queues from 3 to 6 at revision B, not just the SAMV71. From
- Gregory Nutt.
- - SAMv7 Ethernet: Fixes rxdesc index logic to handle Buffer Not
- Available (BNA) condition. If a SOF is found, but no EOF, don't
- move past the frame. Instead, keep the index at the SOF buffer
- until the rest of the data is written. This fixes a receiver
- lockup condition where the peripheral and this driver get out of
- sync with there head pointers. In this case the driver has moved
- past buffers it owns, without clearing ownership, which results in
- the peripheral and driver in a deadlock with each other. From
- Anthony Merlino.
- * Microchip/Atmel SAMA5Dx Drivers:
- - SAMA5Dx Ethernet: Port Anthony Merlino's SAMv7 fix to similar
- Ethernet driver for the SAMA5Dx. From Gregory Nutt.
- * Microchip/Atmel SAMA5Dx Board:
- - SAMA5D2-XULT: Move console from FLEXCOM4 to UART1. FLEXCOM4 does
- not work for the Arduino serial. UART1 is used with the VCOM
- provided by the EDBG. From Gregory Nutt.
- * NXP i.MXRT:
- - i.MXRT Clock Configuration: If SDRAM is actived it was only
- running at 40MHz. This was becaus imxrt_clockconfig.c changed the
- SEMC clock divider after the DCD was configured. This commit
- corrects that. From Johannes.
- * NXP i.MXRT Drivers:
- - i.MXRT GPT: Correct register offsets. From David Sidrane.
- - i.MXRT TMR: Fix addressing and restructure using common offset.
- From David Sidrane.
- - i.MXRT ADC: Error in offset. From David Sidrane.
- * NXP/Freescacle Kinetis Boards:
- - Teensy-3.x: Fix a mismatch in types in defconfig. From Gregory
- Nutt.
- * NXP LPC17xx:
- - LPC176x Clock Configuration: The code preserves undocumented
- reserved bits only if board does not set them to keep previous
- behavior for boards where developers (hopefully) know what values
- should be set into these bits. From Pavel Pisa.
- - LPC17xx Clock Configuration: The enable of EMC clocks has to be
- preserved when already enabled by loader. EMC and related pins
- configuration has to be skipped if the system is run from SDRAM. A
- region of SDRAM which is used by system must not be used for heap.
- From Pavel Pisa.
- * NXP LPC17xx Drivers:
- - LPC17xx CAN: The name can_txready clashes with Nuttx CAN core
- global function. LPC178x has only single LPC17_SYSCON_PCLKSEL with
- only single divisor. From Pavel Pisa.
- * NXP LPC17xx Boards:
- - Open1788: Add missing MPU configuration option. From Gregory Nutt.
- * On Semi LC823450 Boards:
- - LC823450-XGEVK: Remove -nostdinc to avoid build error From
- Masayuki Ishikawa.
- * STMicro STM32:
- - STM32: Don't try including stm32_gpio.h from within chip/*.h
- header files. Not only is bad style for a layered inclusion
- system, but it doesn't always work. From Gregory Nutt.
- * STMicro STM32 Drivers:
- - STM32 PWM: Fix polarity and IDLE state configuration From Mateusz
- Szafoni.
- - STM32 ADC, PWM and TIM: (1) missing T1TRGO2 for JEXTSEL, (2) fix
- sample time configuration for channels. The array index for
- channels was missing, (3) fix TRGO/TRGO2 configuration, and (6)
- support for advanced timers channel 5 and 6. From Mateusz Szafoni.
- - STM32 Heap: Change 'if CONFIG_STM32_HAVE_CCM' to 'ifdef
- CONFIG_STM32_HAVE_CCM' to avoid a warning when
- CONFIG_STM32_HAVE_CCM is not defined. From Gregory Nutt.
- - STM32 Oneshot Timer: Fix an error introduced be a previous timer
- commit. From Maximilian Kriegleder
- - STM32 Tickless Mode and Free-Running Timer: Apply Max's
- stm32_oneshot.c fix to the tickless implementation and to the
- freerunning time. From Mateusz Szafoni.
- - STM32 PWM: Set CCPxP and CCPxNP bits if polarity is negative.
- Missing commas in initializers could break compilation in certain
- configurations. From Mateusz Szafoni.
- - STM32F7 Interrupts: Add the missing macro STM32_IRQ_NIRQS used by
- arch/arm/src/stm32f7/stm32_irq.c. From Kejun ZHOU.
- - STM32H7 DMA: Fix AHB1 base adresses memory map. From Mateusz
- Szafoni.
- - STM32H7 SysTick: H7 appears to ignore the SysTick CLKSOURCE bit
- and use the CPU clock in all cases. From Mateusz Szafoni.
- * STMicro STM32 Boards:
- - B-L072Z-LRWAN1: Fix typo in SPI1 pin definitions. From Mateusz
- Szafoni.
- - STM32F429I-DISCO: Handle multiple calls to the LCD
- up_fbinitialize() function. From Gregory Nutt.
- - STM32F769I-DISCO: Florian R. Hölzlwimmer reports that
- stm32_appinitialize.c often has missing OK and NULL definitions.
- This should be fixed by including sys/types.h where they are
- defined. From GregoryN.
- - STM32F769I-DISCO: Remove CONFIG_STM32F7_QUADSPI=y from the
- configuration. This was apparently set before the implementation
- was added. Now that the implementation was added, the configuration
- will not build because it requires that QSPI GPIO pin definitions
- be provided in the board.h header file. From Gregory Nutt.
- * TI AM335x Drivers:
- - AM335x Serial: Eliminate an error 'TIOCSBRK undeclared. From
- Gregory Nutt.
- * C Library/Header Files:
- - strto*: In alll strto* function family, did't consume single '-'
- or '+', allow sign in strotul(l)). From Johannes.
- - getopt(): Add logic to reinitialize the stale context for the
- FLAT/PROTECTED builds. In these builds getopt() global variables
- may be shared by many tasks. If any task exits the getopt() loop
- before all command line arguments have been parsed, then getopt()
- global variables will be left in a bad state. The next time
- getopt() is called, this logic should detect the bad state and
- force the state of getopt() to be re-initialized so that it can be
- reused. This logic is not full proof (it would fail, for example,
- if you tried to parse the same command line twice) but should catch
- the typical misuse cases. From Xiang Xiao.
- - sscanf(): Initialized the lastc pointer to avoid the checks for
- NULL. Removed a bug in the floating point parsing which allowed
- several signs after each other. From Johannes.
- - lib_vsprintf() (Legacy): No precision specifier resulted in
- precision 0 but should be precision 6. From Johannes.
- - lib_vsprintf() (Legacy): Correct justification for alternate forms
- of %p and %P From ligd.
- - lib_vsprintf() (Nano): Add long long support.
- CONFIG_LIBC_LONG_LONG needs at least CONFIG_NANO_PRINTLEVEL 2.
- Code size for compile without CONFIG_LIBC_LONG_LONG shouldn't be
- affected. From Johannes.
- - lib_vsprintf() (Nano): Remove CONFIG_LIBC_PRINT_MINIMAL. The
- output in that configuration is unsatisfactory and inappropriate
- for use with NuttX. For example, the output from many NSH commands
- become corrupted and useless. Doesn't belong in this context.
- From Gregory Nutt.
- - libs/libc/symtab: Remove unused symtab_findorderedbyvalue(). From
- Xiang Xiao.
- - libs/libc/machine/arm: Fix the minor issue in libc arm machine
- folder; MOVW/MOVT should use zero(not sign) extension. From Xiang
- Xiao.
- - libs/libc/libc.csv: Should be locale.h not local.h. From Joao
- Matos.
- - libs/libc/libc.csv: Needed logic for correct compilation if not
- using CONFIG_LIBC_WCHAR. From Joao Matos.
- - libxx: Always include libxx_cxa_guard.cxx in the build for for
- uclibcxx. From zhangyuan7.
- - include/stdbool.h: Define bool only when __cplusplus isn't
- defined. From Xiang Xiao.
- - include/nuttx/list.h: Added a Linux-compatible list
- implementation. From zhuyanlin.
- - include/nuttx/irq.h: Fix enter_critical_section/spin_lock_irqsave
- macro typo error and remove the duplicated inclusion of
- arch/irq.h. From Xiang Xiao.
- - include/dlfcn.h: Correct naming of standard header file. Should
- be dlfcn.h, not dllfcn.h. From Gregory Nutt.
- - include/nuttx/nx/nxmu.h: This header file could be lethal; it
- declared an #error if CONFIG_DISABLE_MQUEUE=y. From Gregory Nutt.
- - include/nuttx/compiler.h: Important fix for C++ users.
- compiler.h was using the value of __STDC_VERSION__ to determine if
- inline functions are supported or not. If not then the keyword
- inline was defined out. Good for C but bad for C++ because C++
- does not define __STDC_VERSION__ at all. C++ applications may
- draw in compiler.h indirectly via other head files and this can
- result in C++ compiler problems since 'inline' is defined out.
- This fix is to ignore the (undefined) __STDC_VERSION__ if
- __cplusplus is defined. From Gregory Nutt.
- - include/nuttx/elf.h: Adds missing extern "C" __cplusplus guard.
- From Anthony Merlino.
- - include/poll.h: Remove un-named union from 'struct pollfd'. It
- is not required by OpenGroup.org and violates the NuttX C coding
- standard because it is not C89 compatible. From Gregory Nutt.
- - libs/libc/Makefile, libs/libnx/Makefile, and mm/Makefile: Remove
- obj-path MKDEPS option since make dependency target (MT) is not
- supported by some toolchains. From anchao.
- - include/nuttx/compiler.h: Assume inline support if
- __STDC_VERSION__ not defined. From Xiang Xiao.
- * Tools:
- - tools/convert-comments.c: Fix an error in handling of a blank C++
- comment before a comment block. From Gregory Nutt.
- - tools/lowhex.c: Fix an initialization problem that was causing
- some odd behavior at the beginning of lines. From Gregory Nutt.
- - tools/nxstyle.c: Fix logic that detects if an operator is
- correctly delimited with spaces. sched/: Various changes because
- sched/ C files were used as Guinea Pigs to test nstyle.c. From
- Gregory Nutt.
- - tools/nxstyle.c: Was confusing hex constants with strings staring
- with 'x'. Added logic to complain about hex constants containing
- upper case characters. From Gregory Nutt.
- - tools/nxstyle.c: Fix logic error that prevent detecion of '/' and
- '/=' as operators. net/: Minor updates resulting from testing
- tools/nxstyle. From Gregory Nutt.
- * NSH Library: apps/nshlib:
- - NSH Console: Fix copy paste errors. Some Kconfig configuration
- names needed CONFIG_ prefix. From David Sidrane.
- - nshlib/nsh_timcmds.c: Uninitialized struct tm caused 'date -s' to
- fail. From Valmantas Palikša.
- * Examples: apps/examples:
- - apps/examples/nxterm: Replace direct calls to nxtk_register()
- with legal, indirect calls via boardctrl(BOARDIOC_NXTERM).
- Replace calls to (deleted) nxterm_unregister(). The correct way
- to delete a driver is by unlink'ing it. From Gregory Nutt.
- - apps/examples/nxterm: Most configuration options were not
- available in the Kconfig file. From Gregory Nutt.
- - apps/examples/nxterm: Replace illegal direct calls to
- nxterm_redraw() and nxterm_kbdin() with new boardctl() calls.
- From Gregory Nutt.
- - apps/examples/nxterm: NxWM passed the size of the NxTK sub-window
- but nxterm example passed the size of the complete NxTK window.
- They must be made consistent. From Gregory Nutt.
- * Graphics Utilities: apps/graphics:
- - apps/graphics/NxWidgets/nxwm: Correct an error in the type of the
- return value in CCalibration. From Gregory Nutt.
- - apps/graphics/NxWidgets/nxwm: Replace direct calls to
- nxtk_register() with legal, indirect calls via
- boardctrl(BOARDIOC_NXTERM). Replace calls to (deleted)
- nxterm_unregister(). The correct way to delete a driver is by
- unlink'ing it. From Gregory Nutt.
- - apps/graphics/NxWidgets: Replace illegal direct calls to
- nxterm_redraw() and nxterm_kbdin() with new boardctl() calls.
- From Gregory Nutt.
- * Modbus: apps/modbus:
- - apps/modbus/Kconfig: Fix modbus master Kconfig. Modbus Master
- ASCII compiles correctly. From Alan Carvalho de Assis.
- * Network Utilities: apps/netutils:
- - apps/netutils/dhcpc/dhcpc.c: Fix an error for DHCP REQUEST
- receiving a NAK.In DHCP Request operation, no need to update
- ciaddr to the client address and keep it as 0. From Kevin Liu.
- * System Utilities: apps/system:
- - apps/system/vi/vi.c: Fix an infinite loop bug that can show up in
- some cases (plus a couple of other items). From Ken Pettit.
- - apps/system/vi: Condition KEY_CMDMODE_REPEAT with
- CONFIG_SYSTEM_VI_INCLUDE_COMMAND_REPEAT to avoid build error when
- option is not selected. From Anthony Merlino.
- - apps/system/nxplayer/nxplayer.c: Fix build error when only enable
- CONFIG_AUDIO_EXCLUDE_VOLUME is enabled. From ZhongAn.
- - apps/system/system/system.c: Correct a path name. From anchao.
- - apps/system/taskset: Fix command arguments are not passed. From
- Masayuki Ishikawa.
- * Testing: apps/testing:
- - apps/testing/ostest/timedmutex.c: pthread_mutex_timedlock()
- returns EDTIMEDOUT on a timedout, not EAGAIN. From Gregory Nutt.
- * Tools: apps/tools:
- - apps/tools/mksymtab.sh: 'export LC_ALL=C' to get the traditional
- sort order From anchao.
- NuttX-7.30 Release Notes
- ------------------------
- The 130th release of NuttX, Version 7.30, was made on May 19, 2019,
- and is available for download from the Bitbucket.org website. Note
- that release consists of two tarballs: nuttx-7.30.tar.gz and
- apps-7.30.tar.gz. These are available from:
- https://bitbucket.org/nuttx/nuttx/downloads
- https://bitbucket.org/nuttx/apps/downloads
- Both may be needed (see the top-level nuttx/README.txt file for build
- information).
- Additional new features and extended functionality:
- * Core OS:
- - pthreads: Added non-standard pthread_get_stackaddr_np() and
- pthread_get_stacksize_np(). From Joao Matos.
- - boardctl(): Add a command to start the VNC server. From Gregory
- Nutt.
- - Signals: Remove references to CONFIG_DISABLE_SIGNALS in many
- files. Signals can no longer be disabled. From Gregory Nutt.
- * Wireless/Wireless Drivers:
- - NRF24L01: Add support for "multicast" TX mode - no waiting for ACK
- (needs to be enabled with fcntl SETTXPAYLOADNOACK) From Leif Jakob.
- * Graphics/Display Drivers:
- - NX Graphics: Add new server->client callback to notify the window
- client of server events. Remove the old 'blocked' callback and just
- make it one case of an 'event' callback. From Gregory Nutt.
- - NX Graphics: Implement new interfaces nx_synch() and nxtk_synch().
- This are used to synchronize the NX server with the window client.
- Currently most of the logic is equivalent to nx_block() and
- nxtk_block(), but with slightly different semantics. They are
- separate now because they are likely to diverge in the future.
- From Gregory Nutt.
- - NX Graphics: Add support for modal windows. From Gregory Nutt.
- - NX Graphics: Implement a software cursor. The cursor behaves
- like a "sprite", always at the top of the display with a
- transparent background. Includes new NX interfaces to show/hide
- the cursor, set the cursor image, and to move the cursor position.
- From Gregory Nutt.
- - NX Graphics: Added support for hiding windows. This features is
- needed by Twm4Nx: When a window is iconified, the icon should
- appear on the background and the window should disappear (i.e., be
- hidden). The windows needs to remain healthy and to be updated in
- all ways, but it cannot affect the display content. Conversely,
- when the icon is clicked, the icon needs to be hidden on the
- background and the window needs to be restored in its current
- state (which may be different than the state of the window at the
- time it was iconified. From Gregory Nutt.
- - NX Graphics: Windows can now be created in the hidden state.
- This can be used to clean up initial window presentation which may
- involve several steps. This makes those steps all invisible until
- nx[tk]_setvisibility() is called to make the windows visible.
- From Gregory Nutt.
- - NX Graphics: Add new NX interfaces to query if a window is hidden
- or not. From Gregory Nutt.
- - NxTerm IOCTLs: Replace specific interfaces between boardctl and
- nxterm with a generalized IOCTL interface. From Gregory Nutt.
- - NxTerm: Add a new IOCTL that can be used to inform NxTerm that
- the size of a window has changed. From Gregory Nutt.
- * Other Common Device Drivers:
- - CAN Upper Half: Support multiple readers of the same port From
- Valmantas Paliksa.
- - MAX7456: Adds a read-only (for now) /dev/osd0/CM interface for
- obtaining the chip's onboard NVM character map data. Use seek()
- to position the cursor over a desired subset of bytes, or request
- a large read to obtain the entire EEPROM memory contents. Values
- are returned in binary form. Use hexdump, etc. to format them for
- viewing. From Bill Gatliff.
- - Serial Upper Half: The upper half serial driver configuration
- CONFIG_SERIAL_DMA used to enable DMA on both RX and TX streams.
- This was replaced with CONFIG_SERIAL_RXDMA and CONFIG_SERIAKL_TXDMA
- which will permit supporting DMA on only one or both streams.
- From Gregory Nutt.
- - FUSB303: Add FUSB303 driver From Juha Niskanen.
- * Microchip PIC32MZ Drivers:
- - PIC32MZ GPIO: Adds support for edge detect mode. Slew Rate was
- also added for completeness. From Abdelatif Guettouche.
- * Microchip/Atmel SAMv7 Boards
- - SAME70-xplained: Add a configuration for test Twm4Nx using VNC.
- From Gregory Nutt.
- * Microchip LPCxx Drivers:
- - LPC17xx Ethernet: Added support for KSZ8081RNA PHY to LPC17xx
- Ethernet driver. From jjlange.
- - LPC17xx Ethernet: Added support for Ethernet PHY ioctl() on
- LPC17xx. From jjlange.
- * NXP i.MX RT:
- - .i.MXRT1020: Gets imx1020 family support started. It is pretty
- similar, but subtly different, to 1050/60 (less PLLs, less GPIO
- banks, differently numbered ports etc. etc.).
- Moved each of the imxrt family-specific files into its own
- subdirectory to tidy things up a bit, and remove the vast majority
- of ifdefs from the mainline code.
- From Dave Marples.
- * NXP LPC54xx Drivers
- - LPC54xx USB FS Host: Bring in the USB FS OHCI driver from LPC17.
- This is a quick'n'dirty port from LPC17 that I hope finish
- sometime later. Currently, it is missing hardware clocking setup
- and is not even hooked into the build system yet. From Gregory
- Nutt.
- * NXP LPC54xx Boards
- - LPCXpresso-LPC54628: Add a Twm4Nx configuration. From Gregory Nutt.
- * Sony CXD56xx
- - CXD56xx: Add initial CXD56xx chip driver sources. From Nobuto
- Kobayashi.
- * Sony CXD56xx Spresense Board
- - Spresense: Add Spresense board support. This is not the full
- Spresense BSP from Sony, only the barebones logic to present an
- NSH console. From Nobuto Kobayashi.
- * STMicro STM32:
- - STM32F7 Clocking: Add support for using the HSE in bypass mode,
- configured by board.h From Anthony Merlino.
- - STM32F7 Clocking: Added support for TICKLESS mode. From Valmantas
- Paliksa.
- - STM32H7 Backup Domain: Add backup domain control registers. From
- Jukka Laitinen.
- - STM32H7 Clocking: Set the STM32H7 default HSI pre-divider to 4.
- The I2C driver currently assumes HSI clock to be 16MHz. From Jukka
- Laitinen.
- - STM32H7 Memorymap.: Add the STM32H7 SYSTEM_UID and DEBUGMCU_BASE
- register definitions. From Jukka Laitinen.
- - STM32L071x: Add support for STM32L071x. From Mateusz Szafoni.
- * STMicro STM32 Drivers:
- - STM32 OTGHS Host: Allow VBUS monitoring for the OTG_HS host
- driver. From Jason Harris.
- - STM32F0/L0 ADC: Initial ADC support for the STM32 M0 From Mateusz
- Szafoni.
- - STM32F0/LO I2C: Port STM32F7 I2C to STM32F0/L0, From Mateusz Szafoni.
- - STM32F1 FLASH: As noted by Matias N, the FLASH base address used
- was incorrect. It was using the address of the FLASH data, not
- the address of the FLASH registers. From Gregory Nutt.
- - STM32F3 I2C: Port STM32F7 I2C to STM32F3. From Mateusz Szafoni.
- - STM32F7 Ethernet.c: Auto-generate Ethernet MAC address from
- device unique ID. From Valmantas Paliksa.
- - STM32F7 FLASH: Add flash block mapping support for progmem. From
- Valmantas Paliksa.
- - STM32F7 FMC: Updated stm32_fmc.h with more FMC definitions. From
- Joao Matos.
- - STM32F7 GPIO: Adds additional pin alternate function for SPI2.
- From Anthony Merlino.
- - STM32F7 PWM: Ported the PWM from F4 to F7. From Eduard Niesner.
- - STM32F7 SDMMC: Support bypassing the input clock divider on the
- SDMMC interface. This enables using the full clock speed provided
- to the SDMMC interface with no dividing. From Anthony Merlino.
- - STM32F7 SPI: Add SPI DMA threshold configuration. From Valmantas
- Paliksa.
- - STM32F7 UID: Add UID access. From Valmantas Paliksa.
- - STM32F7 USB: USB High speed for STM32F7 series From Ramtin Amin.
- - STM32H7 Ethernet: Add stm32h7 Ethernet driver. This is the
- initial push for the Ethernet driver. The driver has been tested
- to be working on a nucleo board. This is still WIP, it doesn't
- for example do MAC filtering on HW level, but just receives all
- Ethernet packets. From Jukka Laitinen.
- - STM32H7 GPIO: Add the GPIO_ETH_RMII_RXD1 pinmap definition for
- STM32H7. From Jukka Laitinen.
- - STM32H7 SDMMC: Add STM32H7 SDMMC driver. It is mostly copied
- from STM32F7, with modified register addresses and bits, and IDMA
- dded. This is still WIP; it only works with IDMA. From Jukka
- Laitinen.
- - STM32H7 Timers: Add timer devices driver for STM32H7. This i
- mostly a forklift from stm32f7 with some h7 specific
- modifications. From Jukka Laitinen.
- - STM32L0 AES: Add support for AES for L0. From Mateusz Szafoni.
- - STM32L0 RND: Add support for RND. From Mateusz Szafoni.
- - STM32L0 HSI48: Add support for HS148 for L0. Move HSI48 enable
- from stm32_usbdev.c to stm32xx_rcc.c From Mateusz Szafoni.
- - STM32L4 USB FS Device: Add USB FS device support. From Juha
- Niskanen.
- - STM32L4 HSI48: Port HSI48 from STM32F0/L0 From Juha Niskanen.
- - STM32L4 CRS: Port CRS from STM32F0/L0 From Juha Niskanen.
- * STMicro STM32 Boards:
- - B-L072Z-LRWAN1: Add ADC example. From Mateusz Szafoni.
- - B-L072Z-LRWAN1: Add nxlines_oled example (ssd1306). Add support
- for the I2C tool From Mateusz Szafoni.
- - Nucleo-144: Added STM32_RCC_DCKCFGR2_DSISRC definition to board.h.
- From Joao Matos.
- - Nucleo-144: Mount sysfs for ifconfig for f767-netnsh/defconfig.
- Even if ifconfig is working to set IP, it will not work to display
- NICs (without args) From Phil Coval.
- - Nucleo-144: Add basic PWM support to nucleo-144 board. More PWMs
- and multi channels support may be investigated and added later.
- Tested on Nucleo-F767ZI. From Phil Coval.
- - Nucleo-F303ZE: Add nxlines_oled example (ssd1306) From Mateusz
- Szafoni.
- - Nucleo-H743ZI: Enable the FPU. From Jason Harris.
- - Nucleo-H743ZI: Add support for I2C devices: ssd1306, pca9635,
- i2ctools From Mateusz Szafoni.
- - Nucleo-H743ZI: Add default clock configuration for SDMMC for
- Nucleo-H743ZI's board.h. From Jukka Laitinen.
- - Nucleo-H743ZI: Add the input clock frequency definitions in
- board.h for all the drivers. Assumes internal clock source for
- all the timers. From Jukka Laitinen.
- - STM32F4 Discovery: Keep c++ global constructor symbols From
- Masayuki Ishikawa.
- - Nucleo-L073RZ: Add MFRC522 support From Mateusz Szafoni.
- - OmnibusF4: Add boardctl() reset logic. From Bill Gatliff.
- - OmnibusF4: Add board_ioctl() which is needed only if
- CONFIG_BOARDCTL_IOCTL=y is selected; Update NSH configuration
- to enable board IOCTLs and DFU mode reset. From Bill Gatliff.
- - STM32L Discovery: Add support for board_late_initialize(), Move
- common initialization logic out of board_app_initialize() into new
- file stm32_bringup.c From Gregory Nutt.
- - STM32F103-Minimum: Add PROCFS automount support From Alan
- Carvalho de Assis.
- * Libraries/Header Files:
- - include/alloca.h: Add alloca.h. Included limited implementation
- of alloc() that is only available for GCC versions 3 and above.
- From Joao Matos.
- - include/cxx/cstdlib: Add std::random() From Gregory Nutt.
- * apps/ General:
- - Many locations: Remove references to CONFIG_DISABLE_SIGNALS.
- Signals can no longer be disabled. From Gregory Nutt.
- * Examples/Tests: apps/examples:
- - apps/examples/fb: Add some awareness of overlays to
- apps/examples/fb From Matthew Koch.
- - apps/examples/lvgldemo. Update to Littlevgl 5.3. From Matthew
- Koch.
- - apps/examples/pwfb: Extend example to verify software cursors.
- From Gregory Nutt.
- - apps/examples/pwfb: Add options to reduce the number of windows.
- This is helpful during debug to reduce the complexity. From
- Gregory Nutt.
- * Network Utilities: apps/netutils:
- - apps/netutils/cjson: Support for the current version of cJSON.
- From Mateusz Szafoni.
- - apps/netutils/libcurl4nx: This is an initial commit libcurl4nx.
- It is not complete yet, but I still wish to commit the unfinished
- bits to describe the roadmap, and because it is already usable. It
- will be updated and fixed in the future weeks and months, certainly
- including POST support and later, SSL. From Sebastien Lorquet.
- - apps/netutils/netinit. This commit removes the private network
- initialization logic from NSH and puts in a common location at
- apps/netutils/netinit. Now that netork initialization logic can be
- used by applications that do not include NSH. From Gregory Nutt.
- - apps/netutils/netlib: Add a more flexible version of
- netlib_parsehttpurl(). This one can parse any URL, and is
- extensible so future improvements keep the same API. From Sebastien
- Lorquet.
- * System Utilities: apps/system
- - apps/system/spi: I needed a small test tool for spi in the style of
- the I2C tool, but I didn't see one so I've hacked one out of the I2C
- tool source. From Dave Marples.
- * Graphics: apps/graphics:
- - apps/graphics/twm4nx. This release introduces Twm4Nx. Twm4Nx is a
- "port" of TWM, Tab Window Manager (or Tom's Window Manager) version
- 1.0.10 to NuttX NX windows server. No, a port is not the right
- word. It is are-design of TWM from the inside out to work with the
- NuttX NX server and NXWidgets. The name Twm4Nx reflects this
- legacy. But Twm4Nx is more a homage to TWM than a port of TWM.
- The original TWM was based on X11 which provides a rich set of
- features. TWM provided titlebars, shaped windows, several forms of
- icon management, user-defined macro functions, click-to-type and
- pointer-driven keyboard focus, graphic contexts, and user-specified
- key and pointer button bindings, etc.
- Twm4Nx, on the other hand is based on the NuttX NX server which
- provides comparatively minimal support. Additional drawing support
- comes from the NuttX NxWidgets library (which necessitated a
- conversion to C++).
- Twm4Nx is greatly stripped down and targeted on small embedded systems
- with minimal resources. For example, no assumption is made about the
- availability of a file system; no .twmrc file is used.
- The state of the "port" is available in
- apps/graphics/twm4mx/README.txt. To summarize: The port is fully
- functional but probably only at an alpha release level. The only
- missing critical feature is built-in touchscreen calibration.
- - apps/graphics/littlevgl. Update to Littlevgl 5.3. From Matthew
- Koch.
- - apps/graphics/nxglyphs: Put all NxWidgets and NxWM glyphs into a
- common directory where they can eventually be shared. Decouple
- from nxwidgets and nxwm so that they can be used elsewhere.
- Creates include/graphics/nxglyphs.h From Gregory Nutt.
- - apps/graphics/nxglyphs: Add some new cursor bitmap images. From
- Gregory Nutt.
- - apps/graphics/nxglyphs: Add mkcursor.c. Will auto-generate
- cursor image header file from Gimp C output. From Gregory Nutt.
- - apps/graphics/nxglyphs: Add 16x16 cursor images. 30x30 are kind
- of large on small displays. From Gregory Nutt.
- - apps/graphics/nxglyphs: Add a new resize cursor image. From
- Gregory Nutt.
- - apps/graphics/nxwm: Separate NxWidgets and NxWM into separate
- directories. Remove old, common NxWidgets directory. From
- Gregory Nutt.
- - apps/graphics/nxwm: Move the NxWM unit test main() to apps/nxwm.
- It is no longer a unit test, but the main startup entry point for
- NxWM. From Gregory Nutt.
- - apps/graphics/nxwidgets: Update NX window clients so that they
- use the new 'event' callback (vs. the obsoleted 'blocked' callback).
- From Gregory Nutt.
- - apps/graphics/nxwidgets: Add a synchronize method to every window.
- This is a wrapper arounc nx[tk]_sync and permits C++ applications
- to synchronize with the NX server. From Gregory Nutt.
- - apps/graphics/nxwidgets: Add support for modal windows. From
- Gregory Nutt.
- - apps/graphics/nxwidgets: Add cursor control methods to the
- CNxServer class. From Gregory Nutt.
- - apps/graphics/nxwidgets: Add a method to CButtonArray that will
- allow us to dynamically resize the array (at the cost of losing all
- button labels). From Gregory Nutt.
- - apps/graphics/nxwidgets: Fix a possible deadlock condition when
- waiting for window geometry data that will never come. Fixed by
- re-requesting geometry data if we don't already have it. From
- Gregory Nutt.
- - apps/graphics/nxwidgets: Add handshake to
- CWidgetControl::getWindowHandle() to avoid returning a NULL
- handle. From Gregory Nutt.
- - apps/graphics/nxwidgets: CNxTkWindow, CNxWindow, CNxServer: Add
- support to create RAM backed windows. From Gregory Nutt.
- - apps/graphics/nxwidgets: Add methods to all windows to query if a
- window is visible or hidden. From Gregory Nutt.
- Bugfixes. Only the most critical bugfixes are listed here (see the
- ChangeLog for the complete list of bugfixes and for additional, more
- detailed bugfix information):
- * Core OS:
- - Clock Initialization: A recent change broke Tickless mode for all
- architectures. The original change was intended to handle the
- case where up_timer_gettime may not start from zero case. The
- side effect is that this changed to order of initialization of
- clocking, breaking Tickless mode:: After this change the tickless
- timer structures are used before they are initialized in
- clock_inittime(). The commit has been reverted.
- - pthread Stack Attribute: Fixed pthread_attr_get/setstacksize
- param type to size_t. From Joao Matos.
- - Signals: The abnormal termination signal handler was just calling
- exit() conditionally when, for example, Ctrl-C is sent to a task.
- The abnormal termination handler must obey the rules of cancellation
- points: If cancelation is disabled, then the abnormal termination
- logic must wait for cancelation to be re-enabled; If cancellation
- is deferred then the abnormal termination logic may have to wait
- for the victim task to enter or exit a cancellation point. From
- Gregory Nutt.
- - Syscall: Added support for munmap() syscall. From Joao Matos.
- - Syscall: Fix a warning due to inconsistencies in return type in
- syscall.csv. From Gregory Nutt.
- - Syscall: Correct an error syscall.csv. Error occurred when
- creating the munmap() proxy if CONFIG_FS_RAMMAP is not defined.
- From Gregory Nutt.
- * File System/Block and MTD Drivers:
- - fs/littlefs/lfs.c: Fix lfs_format bug. In superblock disk root-
- block assignment, the second must be root[1]. From YanLin Zhu.
- * Networking/Network Drivers:
- - getsockname(): Fix addrlen check in socket debug features.
- Getsockname() checked erroneously a pointer agains 0, where the
- intention was to dereference the pointer and to check the length.
- This causes also a compilation failure if the code is compiled
- with CONFIG_DEBUG_FEATURES and with -Werror flag set. From Jukka
- Laitinen.
- - Network Locking: net_lock() and net_restorelock() now return a
- value. That values is the standard zero on success; negated errn
- value on failure. This return value is only needed for
- -ECANCELED. That cancellation indication needs to ripple all the
- way back to the highest levels where the cancellation can be acted
- on. This commit only adds the return value; it does not add
- checking for the return values of net_lock() and net_restorelock()
- at higher levels. That is required too. From Gregory Nutt.
- - PHY Notification Driver: Change sprintf to strncpy in phy_notify.
- On some platforms, the sprintf doesn't accept a const char* as a
- format argument. From Jukka Laitinen.
- - 6LoWPAN HC06: Correct an endian-ness problem in HC06 decompression.
- From Ivan Ucherdzhiev.
- * Wireless/Wireless Drivers:
- - NRF24L01: Don't block in read if file descriptor is O_NONBLOCK.
- From Leif Jakob.
- * Graphics/Display Drivers:
- - NX Graphics: Fix an error in coordinate system usage. Expected
- rectangle in device coordinate frame, but was passing the
- rectangle in window-relative coordinate frame. From Gregory Nutt.
- - NX Graphics: Fix an oversight in the implementation of per-window
- framebuffers. It is true that redraw callbacks can be suppressed
- for all cases ... EXCEPT ONE: When the window is resized to a
- larger size, then the newly exposed territory must be drawn for
- the first time. From Gregory Nutt.
- - NxTK: Fix an error in handling mouse events for framed windows.
- When drawing, NX may report mouse positions outside of the Window.
- The is only for NX windows, but the outside-the-side positions were
- being discarded by nxtk_events(). From Gregory Nutt.
- - NxTK: Refuse to open a toolbar of height zero or less. From
- Gregory Nutt.
- - Nxglib: Correct bogus logic in nxgl_interesting(). From Gregory
- Nutt.
- - VNC Server: Fix an error in color conversion. From Gregory Nutt.
- * Common Drivers:
- - APDS9960: Initial state of allocated structure was not being set.
- Noted by Leif Jacob. From Gregory Nutt.
- - MFRC522: In mfrc522_read uid.sak must be different from 0x04 not
- as before from 0x00. SAK == 0x00 is a valid PICC type. Add
- interface to read MIFARE Ultralight data From Mateusz Szafoni.
- - Power: Fix build for battery gauge From Tom Kopriva.
- - Syslog: In syslog buffered mode, avoid IOB alloc lock-up with
- heavy network activity. This change alters the buffered syslog
- logic to use 'iob_tryalloc' instead of blocking 'iob_alloc' to
- avoid syslog printing from getting stuck when all IOBs are
- depleted by network activity. An issue was seen when large
- incoming TCP transfer uses free IOB buffers and processing
- threads try to use syslog which then block at iob_alloc. From
- Jussi Kivilinna.
- - USB CDC/ACM Device: This fixes a problem where the host sent a
- "get descriptor" message of type "standard" with a recipient of
- type "interface". Since the composite driver would only pass
- messages to the child interfaces when a message was not
- "standard", this message was not handled. I changed the condition
- so that the composite driver checks not only if this is a
- "standard" message but if it is also directed to the device.
- Otherwise, the handling is delegated to the children of the
- composite device. From Matias N.
- - USB HID: The usbhid_descriptor_s struct defined in hid.h included
- some optional fields that should not be hard-defined as part of
- that structure. An arbitrary number of optional entries could be
- included in the descriptor, but that is not properly represented.
- No code on NuttX currently depends on the structure definition
- with an optional descriptor so it is safe to remove. From Matias N.
- - USB MSC Device: Correct typo "const const" to "const".
- arch/arm/src/stm32/stm32_i2s.c: In debug assertions, it on a
- sample rate of 0, but based on other code comments this value
- implies disabling the i2s master clock. From Jason Harris.
- - Zerocross Driver: Fix some errors when debug assertions are
- enabled. From Matous Pokorny.
- - User Leds: Fix ledset validity check in ULEDIOC_SETALL ioctl.
- From Jussi Kivilinna.
- * Architecture Common:
- - All board interfaces (those starting with board_) must be defined
- in board-specific logic. Otherwise, they cannot be customized for
- specialized usage by different boards. The board_reset()
- interface was defined in architecture-specific logic that only
- called up_systemreset(). That is useless! This change removes
- the board_reset() implementation from the architecture-specific
- code and re-implements it in the src/ directory of each board that
- has CONFIG_BOARDCTL_RESET enabled. That is the correct functional
- partitioning. From Gregory Nutt.
- - Start-up: Remove dependency on CONFIG_ARCH_FPU for inclusion of
- nvic.h in all other *_start.c files. From Gregory Nutt.
- - Architecture initialization: up_initialize() needs to know about
- ramlog_consoleinit() From Jason Harris.
- * Microchip PIC32MZ Drivers:
- - PIC32MZ GPIO: Corrects the gpioirq when mismatch mode is
- selected. From Abdelatif Guettouche.
- * ARMv7-A:
- - ARMv7-A Build: Fix 'cc1: warning: switch -mcpu=cortex-a7 conflicts
- with -march=armv7-a switch' From Xiang Xiao.
- * Nordic NRFxx
- - NRF52: Fix compiler error in nrf52832_errdata.c when following
- C89. From Erik Englund.
- * STMicro STM32:
- - STM32 Configuration: It seems one option in the timer configuration
- was lost at some point. From Matias N.
- - STM32 start-up: Inclusion of nvic.h should not be conditioned on
- CONFIG_ARCH_FPU. From Mateusz Szafoni.
- - STM32H7 Clocking: Fixes for STM32H7 RCC definitions. From Jukka
- Laitinen.
- * STMicro STM32 Drivers:
- - STM32F0/L USART: A few fixes for USART. From Mateusz Szafoni.
- - STM32F1/F30 FLASH: RCC register access should not be offset by
- FLASH register base. From Matias N.
- - STM32F7 CAN: CAN fixes. From Valmantas Paliksa.
- - STM32F7 I2C: I2C Interrupt storm fix. I2C track bad state. Now
- we track bad state and so the SW reset only when it occurs. From
- David Sidrane.
- - STM32F7 OTG: Fixes some macros related to OTGFS/OTGHS preventing
- OTGHS from working. From Anthony Merlino.
- - STM32F7 OTG Device: Correct hard-coded FIFO size that is wrong
- for OTG FS. From Ramtin Amin.
- - STM32F7 QSPI: Fix QuadSPI interrupts. This commit essentially
- replaces wrongly named configuration variable STM32F7_QSPI_INTERRUPTS
- into CONFIG_STM32F7_QSPI_INTERRUPTS. Also fixes some getreg/
- putreg where register addresses were used instead of register
- offsets From Pierre-Olivier Vauboin.
- - STM32H7 I2C: Fix I2C4 compilation for STM32H7. From Jukka
- Laitinen.
- - STM32H7 UART: Fix compilation for UART7, UART8 and I2C4s. From
- Jukka Laitinen.
- - STM32L4 USB Device: Add missing PWR USBV enable, correct two USB
- register bits From Juha Niskanen.
- * STMicro STM32 Boards:
- - STM32F103-Minimum: USB reset was not working appropriately since
- the pin connected to D+ was incorrectly defined and the pullup/down
- logic was reversed. From Matias N.
- - Nucleo-l476RG: Fix some errors in GPIO logic when debug assertions
- are enabled. From Matous Pokorny.
- - Nucleo-L476RG: Add missing files of BMP180 example for Nucleo-L476RG.
- From Fabian Justi.
- - STM32F103-Minimum GPIO: Fix some errors when debug assertions are
- enabled. From Matous Pokorny.
- - STM32L4 PWM: Fix register addr, en_bit and resetbit for pwm timers.
- From Fabian Justi.
- - STM32F746G-DISCO: I2C1 config on stm32f746g-disco. Typo in
- stm32f7/stm32_i2c.c From Matthew Koch.
- * C Library/Header Files:
- - include/limits.h: Remove the duplicate TMP_MAX definitions. The
- standard requires that TMP_MAX defines be in stdio.h. From
- Xiang Xiao.
- - include/sys/select.h: Fix compiler error when
- CONFIG_NSOCKET_DESCRIPTORS is undefined. From Xiang Xiao.
- - include/signal.h: Add commented out definition of the si_addr
- field. From Joao Matos.
- - include/unistd.h: Fixed R_OK/X_OK definitions to match POSIX.
- From Joao Matos.
- - libs/libc/locale: Improved error handling in setlocale(). From Joao
- Matos.
- - libs/libc: Fixed return code in uname(). From Joao Matos.
- - libs/libc/stdio: Restore support for printing NULL string as
- "(null)". Legacy printf supported printing "(null)" in place for
- NULL string: printf("null: %s\n", NULL); => null: (null). This
- commit restores this functionality for new printf library. From
- Jussi Kivilinna.
- * Examples: apps/examples:
- - apps/examples/pca9635/pca9635_main.c: fix compilation error. From
- Mateusz Szafoni.
- * Graphics Utilities: apps/graphics:
- - Various graphics apps (and apps/examples): If CONFIG_VNCSERVER=y,
- don't call vnc_default_fbinitialize() directly. That is a violation
- of the portable POSIX interface. Instead, call
- boardctl(BOARDIOC_VNC_START);. From Gregory Nutt.
- - apps/graphics/nxwidgets: CWidgetControl::handleLeftClick now
- returns a value to indicate if the click was actually processed or
- not. CWidgetControl::pollMouseEvents: Correct return value. From
- Gregory Nutt.
- - apps/graphics/nxwidgets/: NXWidgets::CNxWidgets: Fix some issues
- with returned values. On setting the widget size or position, it was
- returning false if there was no change in size or position. Many
- places in the code were treating the false return value as an error.
- From Gregory Nutt.
- * System Utilities: apps/system:
- - apps/system/nxplayer: Fix some logical errors from recent commits.
- They broke the build of the nxplayer as a library vs. a task.
- NuttX-7.31 Release Notes
- ------------------------
- The 131st release of NuttX, Version 7.31, was made on July 21, 2019,
- and is available for download from the Bitbucket.org website. Note
- that release consists of two tarballs: nuttx-7.31.tar.gz and
- apps-7.31.tar.gz. These are available from:
- https://bitbucket.org/nuttx/nuttx/downloads
- https://bitbucket.org/nuttx/apps/downloads
- Both may be needed (see the top-level nuttx/README.txt file for build
- information).
- Additional new features and extended functionality:
- * Core OS:
- - poll(): Removed all references to CONFIG_DISABLE_POLL. The
- standard POSIX poll() can no longer be disabled. From Gregory Nutt.
- - LWL console: Add support for OpenOCD 'Lightweight Link' protocol
- between a target and debugger for use when you need a console but
- the target doesn't have a spare serial port or other available
- resource. From Dave Marples.
- * Network/Network Drivers:
- - Socket Options: Previous change removed some incorrect SO_LINGER
- socket option functionality. SO_LINGER was always enabled if
- CONFIG_NET_SOLINGER was selected. This change implements a proper
- version of SO_LINGER. It is based on new logic to drain the
- buffered TX data, integrated with network event notification system.
- Supports notification when UDP or TCP write buffer becomes empty.
- From Gregory Nutt.
- - Telnet Driver: Handle ctrl events (SIGINT, SIGSTP). From
- Valmantas Paliksa.
- - Telnet Driver: I/O thread now offloads reading from socket
- from client thread to the I/O thread. From Valmantas Palikša.
- * Wireless/Wireless Drivers:
- - GS2200M: Add support for Telit GS2200M Wi-Fi module From Masayuki
- Ishikawa.
- - GS2200M: Introduce CONFIG_WL_GS2200M_SPI_FREQUENCY. Also, changed
- usleep(100) to up_udelay(100) to avoid invalid response. From
- Masayuki Ishikawa.
- - GS2200M: Add channel parameter for AP mode in gs2200m.c From
- Masayuki Ishikawa.
- * Graphics/Video/Display Drivers:
- - Video Streaming: Add basic Video Stream and Capture implementation
- based on the SPresence SDK code release From Alin Jerpelea.
- - video/: Create video/ directory to hold non-driver video-related
- logic. From Gregory Nutt.
- - EDID: Add some initial EDID logic ported from FreeBSD. From
- Gregory Nutt.
- - EDID: Add logic to sort video modes by how close they are to the
- preferred mode. This is part of the logic to pick the best possible
- video mode. From Gregory Nutt.
- - EDID/Video Modes: Separate EDID and from videomode management.
- They really are separate things. From Gregory Nutt.
- - EDID/Video Modes: Add debug functions to dump the EDID and
- videomode content. From Gregory Nutt.
- - VESA GTF: Bring VESA Generalized Timing Formula (GTF) from FreeBSD.
- From Gregory Nutt.
- - Video Modes: At some additional lookups from FreeBSD. Not
- currently used in NuttX so ifdef'ed out for now. From Gregory Nutt.
- - tda19988: Now uses the new common videomode structure of
- include/nuttx/video/videomode.h as do other video components. From
- Gregory Nutt.
- - ILI9340: Add ILI9340 LCD Single Chip Driver. Required LCD driver
- settings: LCD_MAXCONTRAST should be 255, but any value >0 and <=255
- will be accepted. LCD_MAXPOWER should be 1: 0=off, 1=on. From
- Alin Jerpelea.
- - LPM013M091A: Add JDI LPM013M091A LCD Driver. From Alin Jerpelea.
- - ISX012: Add support for ISX012 Image sensor. From Alin Jerpelea.
- * Other Common Device Drivers:
- - SPI Interface: Added standard definitions for ADC SPI device ID.
- From Daniel P. Carvalho.
- - AK09911/AK09912: Add Asahi AK09911/AK09912 compass sensor over I2C
- bus From Alin Jerpelea.
- - AS726X: Add support for AS726X spectral sensor From Fabian Justi.
- - BMI160: Add driver support for the Bosch BMI160 Inertial Measurement
- sensor. This driver can be used with the BMI160 sensor connected
- over SPI or I2C bus. From Alin Jerpelea.
- - BMP280: Add Bosch BMP280 Barometic pressure sensor connected over
- I2C bus. From Alin Jerpelea.
- - INA3221: Adds INA3221_I2C_ADDRx macro helpers. From Anthony
- Merlino.
- - VL53L1x: Added support for VL53L1x TOF sensor. From Juan Flores.
- * Microchip PIC32MZ Drivers:
- - PIC32MZ DMA: Add DMA support. From Abdelatif Guettouche.
- * NXP i.MXRT Drivers:
- - i.MXRT EHCI: Add i.MXRT EHCI driver. From Dave Marples.
- - i.MXRT USDHC: Implements SDIO and Multi-card support for i.MXRT.
- From Dave Marples.
- - i.MXRT USDHC: Implements USDHC1 & 2 selection on the imxrt. If
- only one port is active (either 1 or 2) it will always be numbered
- as 0, if both are active then USDHC1 will be number 0, USDHC2 will
- be 1. From Dave Marples.
- - i.MXRT Serial: Add TIOCSINVERT ioctls. From Beat Küng.
- - i.MXRT Serial: Implemented RS485 RX/TX switching and RTS/CTS flow
- control for the IMXRT family. It has been tested on 1020 but I
- don't see any reason for issues on any other family member. From
- Dave Marples.
- * NXP/Freescale Kinetis Drivers:
- - Kinetis Serial: Add UART signal inversion support From Beat Küng.
- * NXP LPC11xx:
- - LPC11xx: Support for the LPCXpresso-LPC1115 and for the LPC1115
- architecture in general was removed after NuttX-7.30. The LPC11
- port was never really used (to my knowledge) and was no longer
- supported. A snapshot of the port is still available in the
- Obsoleted repository. It can be brought back into the main
- repository at any time if anyone is willing to provide support
- for the architecture. From Gregory Nutt.
- * NXP LPC17xx Boards:
- - PNEV5180B: Add support for NXP Semiconductors' PN5180 NFC Frontend
- Development Kit. This board is based on the NXP LPC1769 MCU. At
- the moment there is just support for a minimal nsh configuration via
- UART0. From Michael Jung.
- - PNEV5180B: Add usbnsh configuration. This is basically the same as
- the 'nsh' defconfig, but uses CDC/ACM as the NuttShell console
- device. From Michael Jung.
- - PNEV5180B: Adds NSH configuration with UART0 and eth0 via CDC/ECM
- on USB device. From Michael Jung.
- - PNEV5180B: Add new configuration includes a USB Composite Device
- with both CDC/ACM and CDC/ECM. NuttShell provides a terminal via
- CDC/ACM. A network interface (eth0) is provided via CDC/ECM. From
- Michael Jung.
- - PNEV5180B ROMFS: Auto-mount baked-in ROMFS image. Includes support
- for linking a binary ROMFS image into the nuttx executable and for
- mounting it during board bring-up. From Michael Jung.
- - PNEV5180B PROTECTED: Add PROTECTED mode configuration with
- NuttShell. From Michael Jung.
- * NXP LPC40xx:
- - LPC40xx: Add support for LPC40xx family chips. Renamed LPC17XX to
- LPC17XX_40XX in directory, configuration, file names, etc., as
- appropriate. Corrected a few peripheral definitions and pin
- functions for the LPC17xx family. Added configuration options, chip
- definitions, and additional pin functions for the LPC40xx family.
- From jjlange.
- * NXP LPC40xx Boards:
- - LPC4088-Devkit: Added board configuration for Embedded Artists
- LPC4088 Developer's kit. From jjlange.
- - LPC4088-Quickstart: Added board configurations for Embedded Artists
- LPC4088 Quickstart board. From jjlange.
- * NXP LPC54xx Boards
- - LPCXpresso-LPC54628: Enable DATE command in twm4nx1 and twm4nx2
- configurations. From Gregory Nutt.
- * Sony CXD56xx
- - CXD56xx: Adds (1) the HW pin configuration, (2) GPIO support for
- CXD56xx, (3) GPIO interrupts, (4) clock support, (5) PMIC (Power
- management integrated circuit) support (6) add a simple FIFO
- scheduler that minimizes overhead, (6) Inter Core Communication.
- From Alin Jerpelea.
- - CXD56xx: Add Package Configuration. The CXD56xx can come in FCBGA
- 185 pin or WLCSP 100 pin package. For each package we have to pick
- the right pin setup. The default configuration is set to FCBGA 185
- pin package From Alin Jerpelea.
- - CXD56xx: Add Power Management support From Alin Jerpelea.
- - CXD56xx: (1) Add syscontrol, (2) Add the function to change the
- clock speed, (3) Add pinctrl and clock ctrl functionality. From
- Alin Jerpelea.
- * Sony CXD56xx Drivers:
- - CXD56xx USB: Add basic support for USB connectivity. From Alin
- Jerpelea.
- - CXD56xx SDHC: Add SDHCI driver for the CXD56xx. From Alin
- Jerpelea.
- - CXD56xx SPI: Add SPI support. From Alin Jerpelea.
- - CXD56xx DMA: Add DMA support. From Alin Jerpelea.
- - CXD56xx RTC: Add RTC support. From Alin Jerpelea.
- - CXD56xx PWM: Add support for PWM. From Alin Jerpelea.
- - CXD56xx Power Management: Add Power Management PROCFS support. From
- Alin Jerpelea.
- - CXD56xx Timer: Add Timer driver. From Alin Jerpelea.
- - CXD56xx Watchdog Timer: Add watchdog timer support. From Alin
- Jerpelea.
- - CXD56xx UID: Add support to be able to read the HW UID. From Alin
- Jerpelea.
- - CXD56xx I2C: Add I2C support. From Alin Jerpelea.
- - CXD56xx I2C: Add I2C character driver support. For testing
- purposes, we use the CXD56_I2C_DRIVER to register the /dev/i2c[]
- character devices. Add battery gauge and battery charger drivers.
- Add SPI-based SP card support. From Alin Jerpelea.
- - CXD56xx SCU: Add Sensor Control Unit (SCU); Use DMAC for reading
- sensing data from SCU on CXD56xx chip. From Alin Jerpelea.
- - CXD56xx ADC: Add ADC interface support. From Alin Jerpelea.
- - CXD56xx eMMC: Add eMMC support for CXD56xx chip From Alin Jerpelea.
- - CXD56xx Camera: Add driver for hardware image processor device to
- enable the hardware image processor set CXD56_GE2D=true. From Alin
- Jerpelea.
- - CXD56xx CISIF: Add CISIF support to be able to use cameras. From
- Alin Jerpelea.
- - CXD56xx GNSS: Add GNSS device, add Geofence Support, add UART0
- interface. UART0 is an interface with hardware flow control in the
- application subsystem. From Alin Jerpelea.
- * Sony CXD56xx Spresense Board:
- - Default Configurations: (1) We are using the framework to
- initialize the CPU, (2) Enable PowerManager on SPresence board, (3)
- Initialize the UART interfaces, (4) Enable clock management using
- the CXD56 framework, (5) Use timerisr on the SPresence board, (6)
- Enable USBDEV on Spresense board, (7) Enable SD Card support on
- SPresence board, (8) Enable Mass Storage on Spresense board From
- Alin Jerpelea.
- - Default Configurations: Add support for RNDIS configuration. From
- Masayuki Ishikawa.
- - RTC: Enable RTC functionality on SPresence board From Alin
- Jerpelea.
- - SPI FLASH: Enable SPI Flash arch/arm/src/cdx56xx: (1) Group all
- CXD56xx Options in one menu, (2) Add Storage Options menu and
- Peripheral Support comment, (3) Add SPI Flash support From Alin
- Jerpelea.
- - Add SPI configuration for SPresence board. Enable PWM support on
- SPresence board; The powermanager procfs is disabled by default and
- need to be enabled by the CONFIG_CXD56_PM_PROCFS option. Timers can
- be used on the SPresence board. Watchdog timer support also added.
- From Alin Jerpelea.
- - Add USERLED for SPresence board. From Alin Jerpelea.
- - Enable I2CDEV for SPresence board. Add useful diagnostic LEDs on
- the SPresence board. From Alin Jerpelea.
- - Add support for Tilt GS2200M Wi-Fi module. From Masayuki Ishikawa.
- - Remove SPI MMC/SD support and enable ADC support for SPresence
- board. From Alin Jerpelea.
- - Enable BMI160_I2C sensor over I2C on SPresence board. From Alin
- Jerpelea.
- - Add I2CTOOL support and extend GPIO for future use. Add delay
- support for CXD56xx chip. For development is useful to register
- I2C busses when the I2CTOOL is built. Enable GPIO interface on
- the Spresense board. From Alin Jerpelea.
- - Add use o the CXD56_I2C_DRIVER to register the /dev/i2c character
- devices. Enable battery gauge and battery charger support. From
- Alin Jerpelea.
- - Enable UID functionality. To enable the UID functionality for
- SPresence board set BOARDCTL_UNIQUEID in menuconfig. From Alin
- Jerpelea.
- - Add USBDEV_SETNOTIFYSIG signal ID. Set signal ID for notify USB
- device connection status and supply current value. From Alin
- Jerpelea.
- - Register the procfs in the NSH configuration. This is a
- configuration change in sync with the other ones. Enable
- READLINE_CMD_HISTORY, enable by default SPI 4 and 5, and enable
- SPI to keep all configurations in sync. From Alin Jerpelea.
- - Add support for MSC and USB Composite device. Adds usbmsc
- configuration. Spresense board does not have buttons and but a
- template for gpio buttons that can be connected on the external
- header From Alin Jerpelea.
- - LCD: Add support for LPM013M091A LCD, add support for ILI9340
- LCD, add a new configuration to support an LCD. From Alin
- Jerpelea.
- - WiFi: Improve performance for webserver: (1) Enable SPI DMA for
- both TX and RX, (2) Increase SPI clock speed from 4MHz to 10MHz,
- (3) Increase buffer size for sendfile() from 512B to 1KBm abd (4)
- Enable sendfile() for webserver. From Masayuki Ishikawa.
- - MPY: Add MPY defconfig. From Alin Jerpelea.
- - Update defconfigs rndis and wifi: Enable RTC and webserver with
- directory listing support. Also, changed start year/month/day for
- NuttX 2019. From Masayuki Ishikawa.
- - Build nuttx.spk images. Enable nuttx.spk binary image that can be
- flashed on SPresence board. From Alin Jerpelea.
- - configs/SPresence: Add entry point for MPY. The entry point is
- needed for the downstream projects based on SPresence. From Alin
- Jerpelea.
- - Enable internal flash storage for SPresence boards. The SmartFS
- flash is mounted under /mnt/spif folder. From Alin Jerpelea.
- - For compatibility with SDK we need to change the USER_ENTRYPOINT
- in all configurations to spresense_main(). From Alin Jerpelea.
- * STMicro STM32:
- - STM32 Kconfig: Add MEDIUM_DENSITY selection. From Dave Marples.
- - STM32 Kconfig: Add the missing STM32 LCD Clock Source Selections.
- From Alan Carvalho de Assis.
- - STM32G0: Initial support for STM32G0 family. From Mateusz Szafoni.
- - STM32F0L0G0: Renamed directories STM32F0L0 to STM32F0L0G0 since
- they now also supports the STM32G0 thanks to Mateusz Szafoni's
- contribution From Gregory Nutt.
- - STM32H7x3: Added ADC pins to pin map. From David Sidrane.
- * STMicro STM32 Drivers:
- - STM32 PWM: Add support for all PWM modes. Add an interface to
- change PWM mode. Refactor pwm_mode_configure(). STM32_PWM_CHANx
- corresponds to the timer channel and STM32_PWM_OUTx corresponds to
- the timer channel output. Add CHAN5 and CHAN6 to
- PWM_TIMx_NCHANNELS. Calculate thePWM_TIMx_NCHANNELS if
- CONFIG_STM32_PWM_MULTICHAN is selected. From Mateusz Szafoni.
- - STM32 FSM/FSCM: Split the STM32 FMC/FSMC functionality. Makes FMC
- it's own thing rather than piggy backing on the FSMC code. The
- peripherals have a few utility functions and this commits lets you
- have a common architectural functions rather than having duplicate
- functions in each board implementation. From Jason Harris.
- - STM32F7 DTCM: Add procfs register From Daniel Agar.
- - STM32F7 GPIO: Add GPIO driver. Code is inspired from STM32F3-
- Discovery and Nucleo-L476RG platforms. Tested on Nucleo-F767ZI.
- From Phil Coval.
- - STM32F7 Serial: This adds the ability to invert and swap RX/TX on
- STM32F7 UARTs. I added the TIOCGINVERT as well to reserve the IOCTL
- number, but did not implement it. This is the same as for
- TIOCGSINGLEWIRE. From Beat Küng.
- - STM32L4 CRS: Make STM32L4 CRS synchronization source board
- configurable. From Juha Niskanen.
- - STM32L4 HSI48: Enable CRS_CR_CEN with CRS_CR_AUTOTRIMEN. From
- Jussi Kivilinna.
- - STM32L4 I2C: Add support for 16 and 120 MHz timings. Board can use
- HSI16 clock for I2C From Juha Niskanen.
- - STM32L4 PWR: Enable PWR peripheral for setting USV. From Jussi
- Kivilinna.
- - STM32L4 RCC: Use Range 1 Boost mode if SYSCLK is higher than 80
- MHz. From Juha Niskanen.
- - STM32L4 Serial: Add TIOCSINVERT and TIOCSSWAP ioctls. From Beat
- Küng.
- - STM32H7 ADC: Added ADC Driver, ADC clocking. From David Sidrane.
- - STM32H7 Ethernet: Fix typo in define. From Pierre-Olivier Vauboin.
- - STM32H7 PWM: Port PWM from STM32 From Mateusz Szafoni.
- - STM32H7 QEncoder: Ported the QEncoder from F7 to H7. From Eduard
- Niesner.
- - STM32H7 Serial: Add TIOCSINVERT and TIOCSSWAP ioctls. Ensure
- TIOCSSINGLEWIRE is atomic and UE disabled. From Beat Küng.
- * STMicro STM32 Boards:
- - Olimex-STM32-E407: Added BMP180 initialization and a configuration
- to test the BMP180. From Juan Flores.
- - Olimex-STM32-E407: Add DAC support, add IN219 support, add timer
- driver support. From Juan Flores.
- - Olimex-STM32-E407: Add support for MRF24J40 radio. From Gregory
- Nutt.
- - Axoloti: Adds initial support for the Axoloti sound/music
- synthesizer board. Board is based on STM32F427 SoC. See
- http://www.axoloti.com/. From Jason Harris.
- - Nucleo-G071RB: Initial support for nucleo-g071rb. From Mateusz
- Szafoni.
- - Nucleo-L432KC: Add new configuration settings for CRS
- synchronization to board.h. From Juha Niskanen.
- - Nucleo-L432KC: Add support for testing the ina219 current sensor.
- From Sebastien Lorquet.
- - Nucleo-L452RE: Add new configuration settings for CRS
- synchronization to board.h. From Juha Niskanen.
- - Nucleo-144: Add ROMFS support. Image was generated using genromfs
- tool. Tested on Nucleo-F767ZI. From Phil Coval.
- - Nucleo-144: Add reset feature. Code is derives from STM32F4-
- Discovery. It can be enabled using CONFIG_BOARDCTL_RESET From Phil
- Coval.
- - Nucleo-L476RG: (1) Add I2C tool to board init, (2) Add support for
- AS726X spectral sensor From Fabian Justi.
- - Nucleo-L496ZG: Add new configuration settings for CRS
- synchronization to board.h. From Juha Niskanen.
- - STM32L476VG-Disco: Add new configuration settings for CRS
- synchronization to board.h. From Juha Niskanen.
- - STM32L4R9AI-Disco: Add ksh config, some updates for I2C, SPI and
- DFSDM support. From Juha Niskanen.
- - Nucleo-H743ZI: Add ADC support. From David Sidrane.
- - STM32F769I-Disco PWM: Enable PWM support for stm32f769i-disco
- board.
- - STM32L-Discovery: Add button support for stm32Ldiscovery. Add
- chronometer board config. From Alan Carvalho de Assis.
- * TI AM335x:
- - AM335x Clock Module: Add clock module registers definition. Switch
- to DMTIMER1 for systick. From Petro Karashchenko.
- * TI AM335x Drivers:
- - AM335x CAN, LCD: Add register description files for DCAN and LCD.
- From Petro Karashchenko.
- - AM355x I2C: Add register description files for I2C (plus various
- improvements to the WDOG register definitions) From Petro Karashchenko.
- - AM355x MCSPI: Add register description files for MCSPI. From Petro
- Karashchenko.
- - AM355x LCDC: This change brings in an initial LCD driver into the
- AM335x architecture. Ported from FreeBSD. From Gregory Nutt.
- - AM335x Framebuffers: Add logic to map the framebuffer to a non-cached,
- non-buffered memory region. From Gregory Nutt.
- - AM335x LCDC: Add logic to get/set the module reference clock. From
- Gregory Nutt.
- * TI AM335x Boards:
- - Beaglebone-Black LCD: Add a configuration for bringing up the LCDC
- driver. From Gregory Nutt.
- - Beaglebone-Black LCD: Framework (only) for TDA19988 and LCD support
- for Beaglebone Black. Can't use TDA19988 yet because there is no I2C
- driver. In the mean time, support LCD initialization using a fixed,
- configurable video mode. From Gregory Nutt.
- * ZiLOG z16f ZNeo:
- - z16f ZNeo: Add support for the latest 5.2.1 version of the ZDS-II
- toolchain. From Gregory Nutt.
- * ZiLOG eZ80Acclaim!:
- - Integrate support for the newest eZ80 ZDSII 5.3.0 toolchain. From
- Gregory Nutt.
- * ZiLOG eZ80Acclaim! Drivers:
- - eZ80 RTC: Integrate and verify the RTC driver From Gregory Nutt.
- - eZ80 RTC: Add an RTC lower half driver. From Gregory Nutt.
- * ZiLOG eZ80Acclaim! Boards:
- - MakerLisp: Add initial support for the MakerLisp eZ80 board. Ref:
- https://makerlisp.com/ From Gregory Nutt.
- - MakerLisp: Add hooks needed by SPI driver. Move SPI MMC/SD chip
- selected configuration from ez80_lowinit.c to here as is done in
- other NuttX architectures. This enables support for multiple
- devices on the SPI bus. From Gregory Nutt.
- - MakerLisp: Add Smart Flash Programmer project. From Gregory Nutt.
- - MakerLisp: Enable Procfs, RTC, SPI-based SD support, task name, NSH
- data command in NSH configuration.. From Gregory Nutt.
- - MakerLisp: Use .ztgt files from MakerLisp SDK. From Gregory Nutt.
- - MakerLisp: Add a tiny FLASH-resident loader that will load and
- start applications in Intel HEX format from an SD card. From
- Gregory Nutt.
- - MakerLisp: Bring in a new configuration to support execution
- entirely out of external SRAM. From Gregory Nutt.
- - MakerLisp: Add an sdboot configuration that will load .hex files
- from the SD card. From Gregory Nutt.
- - MakerLisp: Add a linker script to support copying the NuttX image
- from FLASH into external SRAM. From Gregory Nutt.
- - MakerLisp: The VGA display controller and keyboard controller come
- up by default emulating a terminal with 'newline mode' on. That is
- newlines expance to carriage-return, newline. This change turns that
- mode off. From Gregory Nutt.
- * Libraries/Header Files:
- - include/cxx/cstddef: Add C11++ std::nullptr_t From junmin-kim.
- - libc netdb: Implemented the netdb functions getnameinfo(),
- getservbyport(), and getservbyport_r(). From Michael Jung.
- * Documentation
- - Applied a style sheet to static HTML files. Put the TOC of each
- document to the side, where it made sense (in some documents the
- TOC was actually inside a section so it wasn't possible). In some
- cases the TOC is built with a table, in others with a <ul> element,
- so I had to accommodate for this. I also didn't go into collapsing,
- although this could really help for some long TOCs. From Matias N.
- - Coding Standard: Add a brief section summarizing the major
- differences between the NuttX C and C++ coding standards. This is a
- stop-gap measure in lieu of having a real C++ coding standard. From
- Gregory Nutt.
- - Coding Standard: Update requirements for indenting C pre-processor
- statements. From Gregory Nutt.
- - Coding Standard: Small change discouraging the practice of
- enclosing the value argument of 'return' statements in parentheses.
- From Gregory Nutt.
- - COPYING. Tools in the tools/ directory are not intended for binary
- redistribution and may not all conform to BSD licensing. From
- Gregory Nutt.
- * Tools:
- - tools/ocdconsole.py: OCD TCL interface changed after version 0.10
- of OpenOCD. This change allows the script to work with both the
- older and newer TCL interface. From Dave Marples.
- - tools/nxstyle.c: Tool depends on the file under test containing
- "Private Functions" or "Public Functions" block comments. Emit an
- error if neither are present in a C source. From Gregory Nutt.
- - tools/nxstyle.c: Bandaid-up logic that detects left brackets on the
- same line in global structure/enumeration types and initializers.
- From Gregory Nutt.
- - tools/nxstyle.c: No warning for declarations that begin in column 1
- within 'extern "C"'. This is because the 'extern "C"' is conditioned
- on __cplusplus so the declarations are not normally indented. From
- Gregory Nutt.
- - tools/: Add spk binary format. The .spk binary format is used on
- SPresence and other boards based on the CXD56 arch. To enable this
- binary format set in your config CONFIG_CXD56_BINARY=y. From Alin
- Jerpelea.
- - tools/: Add flash_writer for CXD56 boards. This flash writter is
- using the xmodem for firmware transfer for flashing please use:
- 'tools/flash_writer.py -s -c /dev/ttyUSB0 -d -b 115200 -n nuttx.spk'.
- From Alin Jerpelea.
- * apps/ General:
- - Removed all references to CONFIG_DISABLE_POLL. The standard POSIX
- poll() can no longer be disabled. From Gregory Nutt.
- * Examples/Tests: apps/examples:
- - apps/examples/abntcodi: Adds test/demo program for ABNT CODI
- library. From Alan Carvalho de Assis.
- - apps/examples/webserver: Update to compile with
- CONFIG_NETUTILS_HTTPD_SENDFILE=y. Also some configs such as
- CONFIG_NETUTILS_HTTPDFILESTATS can be selected by menuconfig.
- From Masayuki Ishikawa.
- - apps/examples/chrono: Add chronometer apps example. From Alan
- Carvalho de Assis.
- * Network Utilities: apps/netutils:
- - apps/netutils/webserver: Add mp3 mime type to httpd.c. From
- Masayuki Ishikawa.
- - apps/netutils/webserver: Add directory listing to httpd. From
- Masayuki Ishikawa.
- - apps/netutils/webserver: Add web server info based on uname().
- From Masayuki Ishikawa.
- * Network Utilities: apps/wireless
- - apps/wireless/gs2200m: Add usrsock daemon for Tilt GS2200M Wi-Fi
- module. From Masayuki Ishikawa.
- - apps/wireless/gs2200m: Add channel parameter for AP mode. From
- Masayuki Ishikawa.
- * Graphics: apps/graphics:
- - apps/graphics/nxglyphs: Add more modern looking button images for
- the Twm4Nx CONTEMPORARY theme. From Gregory Nutt.
- - apps/graphics/slcd: Adds a CSLcd class that will generate graphic
- simulated segments of an SLCD display. From Gregory Nutt.
- - apps/graphics/twm4nx: This change adds a calibration screen to
- Twm4Nx. In addition to the Calibration screen port from NxWM, this
- required extensions to the event handling logic to support (1)
- receiving raw, uncalibrated touchscreen inputs, (2) shutting down
- of externally controlled windows. From Gregory Nutt.
- - apps/graphics/twm4nx: Move application-related files into different
- directories to separate them from the core Twm4Nx files. From
- Gregory Nutt.
- - apps/graphics/twm4ndx: Compile out cursor support if we are using a
- mouse. From Gregory Nutt.
- - apps/graphics/twm4nx: Add an alternative COMPONTEMPORARY theme.
- Still has some artifacts on the display. From Gregory Nutt.
- - apps/graphics/twm4nx: Use custom CWidgetStyle to force Icon
- background to match selected desktop background. From Gregory Nutt.
- - apps/graphics/twm4nx: Add some definitions to support Themes.
- Background image is now optional. From Gregory Nutt.
- - apps/graphics/twm4nx: Add a configuration option to control the
- number of buttons in one column of the Icon Manager. The Icon
- anager no longer relies the default window width; now it
- determines a preferred window width based primarily on the font
- size. From Gregory Nutt.
- - apps/graphics/tmw4nx: Add a CClock class that implements the
- Twm4Nx digital clock based on the CSLcd simulated SLCD segements.
- From Gregory Nutt.
- - apps/graphics/twm4nx/README.txt: Add an overview of how to create
- Twm4Nx applications. From Gregory Nutt.
- * Industry: apps/industry:
- - apps/industry/abnt_codi: Adds support for ABNT CODI library. This
- is an energy meter protocol used in Brazil. From Alan Carvalho de
- Assis.
- Bugfixes. Only the most critical bugfixes are listed here (see the
- ChangeLog for the complete list of bugfixes and for additional, more
- detailed bugfix information):
- * Core OS:
- - Semaphores: Fix a bad assertion in priority inheritance logic.
- The comments state correctly that we cannot make any assumptions
- about the number of holders of the semaphore, yet the code
- asserts if there are any holders. This makes the code behave
- closer to what the comments say. From Gregory Nutt.
- - Memory Manager: Fix error that occurs when CONFIG_CPP_HAVE_VARARGS
- is not defined. In that case, the arguments to the debug macro will
- all be evaluated even though they are not used any variables that
- are references must at least be defined. From Gregory Nutt.
- - System Calls: Adapt the conditional compile logic on when to
- include the vfork() syscall proxy and stub to the logic used for
- vfork() itself. From Michael Jung.
- - System Calls: Fixed SYS_mount syscall define when CONFIG_FS_READABLE
- is undefined. From Joao Matos.
- - waitpid(): In waitpid, remember to grab the exited child ptr. After
- being unblocked in waitpid, the child pointer might be NULL. Modify
- to use group_exitchild to get the pointer of recent exited child.
- From Yang ChungFan.
- * File System/Block and MTD Drivers:
- - MMC/SD: Fixes bug where thread gets deadlocked due to recursive call
- and addresses comment regarding events. When initializing the
- MMCSD, if we are being told there is a card, but we fail to
- initialize it, we should not re-register for an insertion event as
- this will immediately cause us to call in again. Instead, we should
- register for a removal event and wait for the card to be removed and
- re-inserted. From Anthony Merlino.
- * Networking/Network Drivers:
- - UsrSock: Fix debug logs and remove DEBUGASSERT from
- usrsockdev_do_request(). In a client mode, socket() will be the
- first request for usrsockdev_do_request(). However, in a server
- mode, the first request to accepted sockets will be recv() or other
- which depend on applications. So I think we should remove thi
- DEBUGASSERT from usrsockdev_do_request(). From Masayuki Ishikawa.
- - ICMPV6 Autoconfig: Use ntohs() to convert IPv6 address from
- network to host order int network debug output. From Bernd Walter.
- - TCP Buffering: Fix TCP buffer send deadlock in iob_copyin() when
- IOB buffers are exhausted and network lock is taken. From
- Valmantas Paliksa.
- - TCP Close: Fix TCP active close in inet_close.c. In previous
- implementation, FIN packet was not sent when a socket is actively
- closed (e.g. telnetd or webserver) without SO_LINGER. This issue
- happens because the socket closing sequence waits for the
- status.cl_sem only if lingering timeout is set. However, in many
- server use-cases, SO_LINGER is not usually set and even in these
- cases, FIN packet must be sent correctly. This changes the logic
- in inet_close.c so that it can wait for status.cl_sem regardless
- of SO_LINGER. Instead, if SO_LINGERis set, it waits for the
- semaphore with timeout option. From Masayuki Ishikawa.
- - UDP: Fix C89 compatibility problem. Empty initializers are not
- permitted. Caused eZ80 build failure. From Gregory Nutt.
- - Telnet: Fix a C89 non-compliance that was breaking the eZ80 build.
- From Gregory Nutt.
- * Wireless/Wireless Drivers:
- - NRF24L01: Fix NRF24L01_NCMDS in ioctl.h. The last one in
- nrf24l01.h is _WLCIOC(NRF24L01_FIRST + 15) From Masayuki Ishikawa.
- - NRF24L01: Fix PIPENO/PKTLEN bitmask in RX FIFO header. In RX FIFO
- header, the first byte should use 5 lsb to store PKTLEN and 3 msb
- to store PIPENO. However, FIFO_PIPENO_SHIFT was set to 4 which
- causes the lsb of pipe number to interfere with the received packet
- size stored in the FIFO. This fix RX corruption when using pipe
- number > 0. From Federico Braghiroli.
- * Graphics/Display Drivers:
- - Raising Windows: Fix a critical list handling bug in the graphics
- system. When a lower-level window was raised while a model window
- was in place, then list corruption could occur. From Gregory Nutt.
- * Common Drivers:
- - Serial: Limit the number of times that the poll semaphore is
- incremented. From Dave Marples.
- - USB Host: Remove duplicate const in USB Host files. From Adam
- Porter.
- - USB Host Composite: Class-specific descriptors were not available
- if the interface is part of a composite device, since only interface
- and endpoint descriptors are copied by usbhost_copyinterface().
- This change will copy any class-specific interface descriptors for
- use in downstream class drivers. The loop was aborting due to
- finding two interface descriptors back-to-back. From Adam Porter.
- - USB Host Composite: The cfgdesc pointer was initialized after the
- buffer had been advanced, so it was not pointing where it should.
- The totallen operations at the end of the function ended up
- overwriting memory belonging to the first copied interface
- descriptor. From Adam Porter.
- - USB MSC: Fix usbmsc_exportluns declaration. Fixes the following
- error "...undefined reference to `usbmsc_exportluns'". From Alin
- Jerpelea.
- * Architecture Common:
- - Rename all arch/<family>/src/<chip>/chip directories to
- arch/<family>/src/<chip>/hardware. This eliminates a name collision
- that is usually harmless but does cause problems at the time. The
- problem is because the include path includes '.' and 'chip/.',
- therefore an inclusion like '#include <chip/mcu_header.h' can be
- ambiguous if a file named mcu_header.h exists in both at both
- arch/<family>/src/<chip>/chip and at arch/<family>/src/chip/chip.
- From Gregory Nutt.
- * Board Common:
- - Default Configurations: Update configurations for changes to
- apps/netutils/netinit configuration. MAC address configuration
- was represented by type long long. That is a problem for
- architectures that do not support type long long. Replaces by
- two long configuration items. From
- Gregory Nutt.
- - Default Configurations: Change CONFIG_NSH_MACADDR to
- CONFIG_NETINIT_MACADDR From Masayuki Ishikawa.
- - Default Configurations: Fix mac address settings for RNDIS.
- Recently CONFIG_NETINIT_MACADDR_2 and CONFIG_NETINIT_MACADDR_1 were
- newly introduced instead of CONFIG_NETINIT_MACADDR. This change
- conforms to this change. From Masayuki Ishikawa.
- - Default Configurations: Kconfig files should not select
- SCHED_WORKQUEUE since that is really only is only the logical OR if
- SCHED_LPWORK and SCHED_HPWORK. Selecting it has no effect other
- than to produce an erroneous configuration. From Gregory Nutt.
- - Linker Scripts: Make sure sections are aligned to 32-bits in all LD
- linker scripts. This fixes and issues noted specifically for the
- SAMD21 by Bernd Walter, but should be applicable to all other LD
- scripts as well.
- - Linker Scripts: Add . = ALIGN(4); before every .data section,
- add . = ALIGN(4); before every ARM.extab section, add . = ALIGN(4);
- before every definition of __exidx_start, add . = ALIGN(4); before
- every .init_section. Convert TABs to spaces in all ld linker
- scripts. This just makes things easier to modify with scripts
- because the files are more consistent. From Gregory Nutt.
- - configs/Board.mk: Cannot call $(AR) directly. That works only with
- GCC. It must, instead use the ARCHIVE command from Config.mk as do
- other Makefiles. From Gregory Nutt.
- * MIPS32:
- - Fix a copy-paste error. On vfork, the GP register was being set to
- the new SP value vs. the context GP value. NOTED in Bitbucket issue
- 155. From Gregory Nutt.
- - An older commit used CP0 register definitions that were not defined
- in the NuttX cp0.h header file. Probably these were from the
- Microchip hacked up GCC toolchain but are not generally available
- outside that toolchain. Fix: Add definitions to NuttX cp0.h header
- file. From Gregory Nutt.
- * Microchip PIC32MZ Drivers:
- - PIC32MZ GPIO: Use LAT instead of PORT when writing. From Ouss4.
- * Microchip/Atmal SAM3/SAM4 Drivers:
- - SAMD2/L2: Correct TC register bit field definitions used with
- TC_CTRLBCLR and TC_CTRLSET registers. From Bernd Walter.
- * NXP LPC17xx Boards:
- - LPC17xx PROTECTED: On the LPC1769 there are two 16 KiB AHB SRAM
- blocks, which are mapped back to back at physical address 0x2007C000
- and 0x20080000 (i.e. right below and right above a 512 KiB boundary).
- Memory from those two blocks is considered continuous when assigned
- to a heap. In the protected build mode, when the memory protection
- unit is used, though, it must be split into two MPU regions. This
- is because MPU regions must be naturally aligned, and the 32KiB
- continuous address space of the two 16KiB AHB SRAM blocks does not
- start at an address divisible by 32KiB. The only other
- configurations that use protected build mode on lpc17xx are
- currently open1788/knsh and open1788/knxterm. The LPC1788 has the
- AHB SRAM blocks mapped more sanely (from an MPU region point of
- view), which is probably why no problems emerged here. Both still
- compile with my change and other than wasting an MPU region (which
- would otherwise remain unused) should work fine. That said, I
- have no hardware to confirm. From Michael Jung.
- * NXP LPC54xx Boards:
- - LPCXpresso-LPC54628: Modify the TWM configurations to properly
- inject keyboard data. This way, in the case of multiple NxTERMs,
- only the NxTerm at the top of the hierarchy gets the keyboard input.
- Otherwise, it is not possible to use multiple NxTerms with each the
- keyboard input going to a different NxTerm window. From Gregory
- Nutt.
- * NXP i.MXRT Drivers:
- - i.MXRT Serial: Fix serial TIOCSINVERT From David Sidrane.
- - i.MXRT USDHC: USDHC Stopgap Fix for build breakage From David
- Sidrane.
- - i.MXRT USDHC: Fix compiler error for CONFIG_IMXRT_USDHC1 &&
- !CONFIG_IMXRT_USDHC2 From David Sidrane.
- * On Semiconductor LC823450:
- - LC823450-XGEVK: Remove CPU assignment for LPWORK. This change will
- reduce audio under-run when running dvfs auto mode. From Masayuki
- Ishikawa.
- * SiLabs EFM32 Drivers:
- - EFM32 USB Host: Apply Adam Porter's STM32 fix to EFM32 which has
- the same IP. From Gregory Nutt.
- * STMicro STM32:
- - STM32F1 Pinmap: Fix names for complementary PWM outputs From
- Mateusz Szafoni.
- - STM32L4: If SRAM3 is used as heap, do not power it off in stop 2
- mode. From Juha Niskanen.
- * STMicro STM32 Drivers:
- - STM32 ADC: Fix a compilation error when verbose analog debugging is
- enabled for the STM32 ADC. not all STM32s have an SQR4 register.
- From rajan gill.
- - STM32 PWM: Fix pulse count for the number of counts greater than 128.
- From Mateusz Szafoni.
- - STM32 USB OTG FS/HS Host: In stm32_ctrlout() in the HS and FS host
- drivers, the data buffer isn't sent. This patch passes the buffer
- and buflen to the stm32_ctrl_senddata() function. With this change,
- I am able to send MBIM control messages to my USB modem, and read the
- response. From Adam Porter.
- - STM32L4 USB: Fix USB device PMA accesses. USB PMA accesses are
- done as 16-bit words on STM32L4 instead of 32-bit words on STM32L1.
- From Jussi Kivilinna.
- - STM32L4 OTG FS/HS: Fix constant using in comparison to determine
- endpoint is interrupt type. From Adam Porter.
- - STM32F7 OTG FS/HS: Fix constant using in comparison to determine
- endpoint is interrupt type. From Adam Porter.
- - STM32H7 PWM: Fix pulse count for the number of counts greater than 128.
- From Mateusz Szafoni.
- - STM32H7 Serial: Fix error when SINGLEWIRE or
- CONFIG_STM32H7_SERIALBRK_BSDCOMPAT defined. From David Sidrane.
- - STM32H7 SPI: Correct a typo in condition compilation. From
- Jonathan Richner.
- - STM32H7 Timer: Fixed compile errors with TIM13, TIM14, TIM7. From
- David Sidrane.
- - STM32H7 USB OTG FS/HS: Fix constant using in comparison to determine
- endpoint is interrupt type. From Adam Porter.
- - STM32G0 Serial: Fix STM32G0 error when SINGLEWIRE or SERIALBRK_BSDCOMPAT
- defined (it reflects previous changes in STM32H7). From Mateusz Szafoni.
- * STMicro STM32 Boards:
- - Nucleo-L432KC: Shorten some long lines, fix i2c pinout. From
- Sebastien Lorquet.
- - STM32L476VG-Disco: Fix an error in defconfig files because a line
- in the rcS file was longer than the configured NSH command line.
- From Juha Niskanen.
- - STM32L4R9AI-Disco: Fix an error in defconfig files because a line
- in the rcS file was longer than the configured NSH command line.
- From Juha Niskanen.
- - OmnibusF4: Correct naming of a configuration variable for ROMFS.
- From Phil Coval.
- - Olimex-STM32-E407: Change initialization to match the way it is
- done with other boards. From Gregory Nutt.
- - Olimex-STM32-E407 SPI: Add SPI initialization logic. From Juan
- Flores.
- - STM32F4-Discovery ROMFS: Missing colon in declaration of local
- variable. From Phil Coval.
- - STM32F4-Discovery ROMFS: Correct naming of a configuration variable
- for ROMFS. From Phil Coval.
- - STM32F4-Discovery Build: Fix .ARM.exidx section overlap Source:
- https://stackoverflow.com/questions/30778614/arm-none-eabi-ld-section-arm-exidx-overlaps-section-data.
- From Alan Carvalho de Assis.
- - STM32F4-Discovery PROTECTED: Fix a problem with undefined symbol
- 'abort' from GCC library in PROTECTED build. Fix by moving libgcc
- into recursive archive group between --start-group and --end-group.
- Other kernel/Makefiles suffer from this same issue From Gregory
- Nutt.
- - Nucleo-H743ZI SPI: Correct typos in function naming. From Jonathan
- Richner.
- * TI AM335x:
- - AM335x SYSCLK: Add a function to return a frequency of the system
- clock. From Gregory Nutt.
- - AM355x CM: Fix a typo in a macro name. From Gregory Nutt.
- - AM355x LCD: Fix a few typos. Add things needed by the LCDC driver.
- From Gregory Nutt.
- * TI Tiva Drivers:
- - Tiva Ethernet: Add a workaround for tiva with qemu. With qemu,
- tiva_ifup() hangs because Ethernet link status can not be set
- correctly. This change is a workaround to avoid this issue. From
- Masayuki Ishikawa.
- * TI Tiva Boards:
- - TM4C1294-Launchpad: Fix syntax error in oocd.sh script. From
- Nathan Hartman.
- * ZiLOG Common:
- - z80: up_addregion() must be prototyped in nuttx/mm/mm.h, not
- up_internal.h. Various name changes to better conform to the coding
- standard, naming conventions, and use by other architectures. From
- Gregory Nutt.
- * ZiLOG Z80 Boards:
- - z80sim: Remove unused function up_earlyserialinit() from serial
- driver. From Gregory Nutt.
- * ZiLOG z16f ZNeo:
- - z16f ZNeo: Replicate build changes make for eZ80 and z8 for ZNeo.
- From Gregory Nutt.
- - ZNeo compile fixes: Fix misuse of FAR which makes a difference on
- this platform. Be consistent in use of WDOG_ID type. ZDS-II doesn't
- like auto-conversions of struct wdog_s * to WDOG_ID (which is type
- struct wdog_s *). From Gregory Nutt.
- * ZiLOG eZ80Acclaim!:
- - eZ80: Fix eZ80 compile problems due to New ZDS-II toolchain and
- ongoing bit rot due to non-C89 code creeping into the core OS. From
- Gregory Nutt.
- - eZ80: Fix some backward conditional logic in Make.defs. From
- Gregory Nutt.
- - eZ80: Fix a logic error in vector initialization. From Gregory Nutt.
- * C Library/Header Files:
- - signal.h: Fix a C89 compliance problem that cause the eZ80 build to
- fail. Empty structure and unions are not accepted by the compiler.
- From Gregory Nutt.
- - wqueue.h: Allow definitions even if work queues are not enabled.
- This solves build failures when work queues are not enabled. From
- Gregory Nutt.
- - fixedmath.h: Regarding the single precision float to/from fixed
- point conversions in fixedmath.h, I believe the floating point
- literals should be appended with the letter 'f' to avoid (expensive)
- conversions from single to double precision, and thereby also avoid
- (expensive if done in SW) double point arithmetic (which is what is
- happening upon inspection of my disassembly). From rajan gill.
- - stdio: Fix long long usage in all of the newer printf-related
- logic: The selection CONFIG_LIBC_LONG_LONG must be ignored if the
- architecture does not support long long types. From Gregory Nutt.
- - gm_time_r(): Spurious reorganization of a loop in gm_time_r() to
- work around and ZDD-II internal compiler error. Might be a little
- bigger now, but is also probably a more structured use of C. From
- Gregory Nutt.
- - Debug: For platforms whose CPP tool does not support a variable
- number arguments to pre-processor macros, we may still need to build
- the debug functions even when CONFIG_DEBUG_FEATURES is not selected.
- For example, __alert() may be needed if CONFIG_ARCH_STACKDUMP is
- set. From Gregory Nutt.
- * Tools:
- - tools/nxstyle.c: Fix error in conditional logic that was preventing
- detection bad brace alignment. Add logic to handle alignment of
- braces in data initializers which following slightly different
- indentation rules. From Gregory Nutt.
- - tools/mkexport.sh: The mcu sub-directory chip/ was renamed to
- hardware/ in late May of 2019. The mkexport.sh script that copies
- these files was not updated, however, until now. Noted by Alin
- Jerpelea. From Gregory Nutt.
- * NSH Library: apps/nshlib:
- - apps/nshlib: Fix all places where cle() and readline() are used.
- readline() returns EOF on a failure. cle() returns a negated errno
- value. Checking only for EOF causes failues to be missed (and
- infinite loops ensuing). From Valmantas Paliksa.
- - nshlib/nsh_parse.c: Fix a warning about an uninitialized variable
- from the ZDS-II compiler. From Gregory Nutt.
- - apps/nshlib/nsh_ddcmd.c: Seemingly nonsense change but somehow
- works around a compilation error using the ZDS-II toolchain. It
- was claiming that vtbl was undefined indd_outfopen(). From Gregory
- Nutt.
- * Network Utilities: apps/netutils:
- - apps/netutils/netinit: MAC address configuration was represented
- by type long long. That is a problem for architectures that do not
- support type long long. Replaces by two long configuration items.
- From Gregory Nutt.
- - apps/netutils/telnetd/telnetd_daemon.c: Fix a C89 violation that
- caused the eZ80 build to fail. From Gregory Nutt.
- - apps/netutils/json: Removed. Replaced with apps/netutils/cjson.
- From Gregory Nutt.
- * Graphics Utilities: apps/graphics:
- - apps/graphics/twm4nx: Fix an uninitialized variable that was
- causing toolbar buttons to randomly come up enabled or disabled.
- Remove some unused event definitions. From Gregory Nutt.
- - apps/graphics/twm4nx: Fix a calibration screen startup issue.
- Make an initial calibration screen optional. From Gregory Nutt.
- - apps/graphics/twm4nx: Revise logic to detect clicks on the
- background image. The original implementation had some side
- effects. From Gregory Nutt.
- - apps/graphics/twm4nx: Remove some remaining stuff from TWM that
- was never used. Menus need to close after the 'terminal' selection
- is made. Otherwise, the menu can become buried under a newly open
- menu and not easily recovered. From Gregory Nutt.
- - apps/graphics/twm4ndx: Add a 'critical' bit to the eventID. While
- resizing, all events will be ignore except those marked critical.
- From Gregory Nutt
- - apps/graphics/twm4nx: CBackground now brings up the main menu if
- the background image is clicked. This makes the behavior the same
- across all of the background except when an icon is clicked. From
- Gregory Nutt.
- - apps/graphics/twm4nx: Fix a bug in placement of icons on the
- desktop. When many windows are displayed, a bug in the looping logic
- could cause an infinite loop. From Gregory Nutt.
- - apps/graphics/twm4nx: Fix some errors found when enabling NX
- keyboard support. The most important being that the mouse and
- keyboard drivers need to be opened non-blocking. From Gregory Nutt.
- NuttX-8.1 Release Notes
- ------------------------
- The 132nd release of NuttX, Version 8.1, was made on September 14, 2019,
- and is available for download from the Bitbucket.org website. Note
- that release consists of two tarballs: nuttx-8.1.tar.gz and
- apps-8.1.tar.gz. These are available from:
- https://bitbucket.org/nuttx/nuttx/downloads
- https://bitbucket.org/nuttx/apps/downloads
- Both may be needed (see the top-level nuttx/README.txt file for build
- information).
- The major release version number is only incremented when there is a major
- change to the OS that makes it more-or-less incompatible with preceding
- versions. This release bumps the major version number from 7 to 8 due
- primarily to a major reorganization in the what was the configs/ directory
- in nuttx-7.31. That directory has been renamed boards/ and now has a
- directory structure that mirrors the organization of the arch/ directory
- for the most part:
- board/ - Holds all board-related information
- board/<arch> - Holds board-related information for all boards that use
- the same CPU architecture. For example, all ARM-based boards will be
- found under board/arm
- board/<arch>/<chip> - Holds board-related information for all boards
- that use the same MCU chip family. For example, all STM32-based
- boards will be found under board/arm/stm32
- board/<arch>/<chip>/<board> - Holds board-related information for a
- specific board. This is analogous to the configs/<board> directory in
- nuttx-7.31. So, for example, the STM32F4-Discovery board support that
- was at configs/stm32f4disovery can now be found under
- boards/arm/stm32/stm32f4discovery.
- boards/<arch>/<chip>/<board>/<configs> - All configurations for a
- specific board can now be found together in this configs/
- subdirectory. So, continuing the example, the STM32F4-Discovery NSH
- configuration can now be found at
- boards/arm/stm32/stm32f4discovery/configs/nsh.
- In additional, common MCU logic can be found at board/<arch>/<chip>/common
- and MCU common drivers can be found at board/<arch>/<chip>/common. Related
- changes include changes to tools/, comments, and documentation that depend
- on the board directory structure.
- This re-organization is the work of Alin Jerpelea. Not only did Alin do
- this major directory re-organization, but he ran the code standard
- compliance tool and corrected every .c and .h file under boards/ so that
- they all correctly follow the NuttX coding style. These changes were very
- extensive and, hence, will not be addressed individually in the ReleaseNotes.
- You have to give Alin credit for his effort to take on really big jobs and
- stick with it until it is finished. Kudos!
- A more constrained re-organization of the drivers/ directory was also
- contributed by Augusto Fraga Giachero. Augusto reorganized some driver
- directories to make better functional associations and also to make space
- for a new set of RF-related drivers.
- Additional new features and extended functionality:
- ---------------------------------------------------
- * Core OS:
- - POSIX Message Queues: Add a test to verify that message queue is
- closed by the same task group that opened it. If not, then list
- corruption would result. This test is only performed if
- CONFIG_DEBUG_FEATURES is enabled since it should not normally be an
- issue: It would be a strange programming practice to open a
- message queue in open task group, then close it in another. From
- ???.
- - Signal Notifications: Add configuration option to select either the
- high-priority or low-priority work queue for SIG_EVTHREA
- notifications. From ligd.
- - System Calls: In order to support built-in in function in protected
- mode, a task_spawn() system call must be supported. task_spawn()
- and posix_spawn() are NuttX OS interfaces. In PROTECTED and KERNEL
- build modes, then can be reached from applications only via a system
- call. Unfortunately this is overly complex because there is a (soft)
- limit of 6 parameters in a system call; task_spawn has seven
- parameters. This is a soft limit but still difficult to extend
- because it involves assembly language changes to numerous
- architectures. Better to get more creative. Rather than extend the
- maximum number of parameters across all architectures, I opted
- instead to marshal the seven parameters into a structure and pass
- only a single parameter: A pointer to the structure containing the
- seven marshaled parameters. From Gregory Nutt.
- - /etc/passwd and /etc/group: Improve the format of the /etc/passwd
- file as used in the sim:nsh configuration. It is now a little
- more similar to other systems and includes user and group IDs. Add
- also an /etc/group file to support future testing. From Gregory
- Nutt.
- - User/Group IDs: Implement 'real' setuid, getuid, setgid, and getgid
- interfaces is so configured (otherwise fall back to stubs that
- support only the 'root' user ID and group. Once set, these IDs will
- be inherited by all child task groups. From Gregory Nutt.
- - Debug Output: Add debug macros for contactless. The various
- contactless device drivers currently define device specific debug
- macros within their local header files. This patch adds generic
- ctls[info|warn|err] macros for the overall contactless subsystem to
- be used in future drivers. Ported the existing contactless device
- drivers to use these generic logging macros and fixed some logging
- bugs along the way. From Michael Jung.
- - IOB instrumentation. Introduces producer/consumer id to every IOB
- call. This is so that the calls can be instrumented to monitor the
- IOB resources and to collect usage statistics. From Anthony
- Merlino.
- - IOB ProcFS: Adding ProcFS support at /proc/iobinfo to show the data
- collected from the IOB instrumentation. From Anthony Merlino.
- - Versioning: Report GIT information via ProcFS. GIT info reported:
- branch, version, GIT hash, hostname, user, build date. Integrates
- into existing .version and ProcFS. From David Alessio.
- * File System/Block and MTD Drivers:
- - BinFS: The BinFS file system uses the same built-in library and
- built-in arrays as does NSH. The built-in arrays are simple name-
- value pairs that map built-in function names with the user-space
- entry point. In the FLAT build, the built-in arrays are available
- everywhere via the backdoor left open by the FLAT address space.
- In the PROTECTED build, however, the kernel must maintain its own
- reference to the user-space built-in array. This commit adds those
- kernel globals and a new boardctl(BOARDIOC_BUILTINS) that can be
- used by applications to the provide the built-in list reference to
- the kernel. From Gregory Nutt.
- - MMC/SD: Added support for MMC (eMMC) bigger than 2 GB (Tested with
- IMXRT1050EVKB and samsung eMMC 16GB).
- - AT24CSxx: Register a character driver for UUID of AT24CSxx chips.
- Allows the UUID to read as a file or displayed from an nsh prompt with:
- nsh> hexdump /dev/eeprom.uuid From David Alessio.
- - Macronix FLASH: Add support for 4-byte addressing on >128Mb
- Macronix flash parts From jjlange.
- - MX25Rxx: Add support for 512B sectors. From Simon Piriou.
- - SST26: Accept the 16MBit Flash when reading the JEDEC-ID at
- initialization time. From Ouss4.
- * Network/Network Drivers:
- - IPv4 Options: Now handles reception of IPv4 packets with larger
- IPv4 headers containing options. From Gregory Nutt.
- - Sockets: Re-order the content of all address-family socket
- 'connection' structures so that they begin with a common prologue.
- This permits better use of logic for different address family
- types. From Gregory Nutt.
- - TCP: Make RTO and WAIT_TIME configurable. This fix is not really
- correct: TCP RTO really should be calculated dynamically for each
- TCP connection: http://sgros.blogspot.com/2012/02/calculating-tcp-rto.html.
- From zhangyuan7.
- - IP Forwarding: Check if interface is up early on when forwarding to
- avoid extra work. As noticed in a previous wireless commit, when
- forwarding is enabled and a packet comes in, the packet is attempted
- to be sent on each other netdev without regard for whether it is in
- the UP state. Of course this is eventually caught, but it can be
- caught earlier to avoid unnecessary work, especially in the 6LoWPAN
- case where a useless packet conversion will occur. From Anthony
- Merlino.
- - RNDIS: Expose option to change the number of write requests that
- can be in flight. From Anthony Merlino.
- - GS2200M: Add UDP support. From Masayuki Ishakawa
- - GS2200M: Implement GS2200M_IOC_IFREQ IOCTL command. From Masayuki
- Ishikawa.
- - GS2200M: Enable NuttX's DHCP client instead of GS2200M's DHCP
- client. From Masayuki Ishikawa.
- - GS2200M: GS2200M now supports SIOCGIFHWADDR From Masayuki
- Ishikawa.
- * Wireless/Wireless Drivers:
- - IEEE802.15.4 Network Driver: Allow 64-bit prefix to be configurable
- when auto-configuring the IPv6 address during bring-up. Previously,
- only the link-local prefix fe80::/64 was used. Also, put the
- network in the DOWN state at the end of initialization. From
- Anthony Merlino.
- - IEEE 802.15.4 MAC: Adds support for energy detect. Adds support
- for energy detect by introducing a new radio call/callback, as the
- PHY layer is required to perform the energy detect. From Anthony
- Merlino.
- - IEEE 802.15.4 MAC: Adds support for getting/setting
- macMaxFrameRetries via IOCTL. Add get support for rxonidle
- attribute From Anthony Merlino.
- - IEEE 802.15.4 MAC: Move the global iobuffer into the macnet struct
- so that more than one macnet device can exist. From Anthony
- Merlino.
- - IEEE 802.15.4 MAC: Defer handling of extracting association
- response to LPWORK queue. From Anthony Merlino.
- - IEEE 802.15.4 Radios: Support dynamic FCS length. Adds
- IEEE802154_ATTR_PHY_FCSLEN. This change introduces
- IEEE802154_ATTR_PHY_FCSLEN which the radio layer can support to
- set/get the FCS length that's added to the end of the frame. One
- use case, in promiscuous mode, is to add back in the FCS of the
- received frame by increasing the iob->io_len by the FCS length.
- From Anthony Merlino.
- - Xbee: Support "WR" AT command for writing parameters to non-
- volatile memory. From Anthony Merlino.
- - Xbee: Add configuration option for setting the default prefix
- to use when bringing up the network and setting the IP address.
- From Anthony Merlino.
- * Other Common Device Drivers:
- - RTC: If the RTC time is successfully set, then update the current
- system time to match. From ligd.
- - ADT7320: Add support for the ADT7320 temperature sensor. From
- Augusto Fraga Giachero.
- - DAC7554: Add support to the DAC7554 digital-to-analog converter.
- From Augusto Fraga Giachero.
- - DAT-31R5-SP+: Add support to the DAT-31R5-SP+ digital attenuator.
- Creates a the new device driver directory drivers/rf/ to support
- drivers related to RF peripherals. It also adds support for the
- DAT-31R5-SP+ digital attenuator. From Augusto Fraga Giachero.
- - ISL29023: Add basic driver of ISL29023 ambient light sensor. The
- basic driver can set operational mode, range, and resolution. It
- can also read lux value in continuous mode. Interrupt and the alarm
- is not implemented. From Matous Pokorny.
- - SHT3x: Add Sensirion SHT3x driver. From Markus Bernet.
- * Simulator:
- - Simulator Build: Even though the simulation has no "chips", it
- needs to have CONFIG_ARCH_CHIP and chip sub-directories. Otherwise,
- we would have to treat it as a special case in the build system
- after the changes to the boards/ directory. From Gregory Nutt.
- * Microchip PIC32MZ:
- - PIC32MZ. Make the PLL input clock configurable. From Ouss4.
- * ARMv7-M
- - Add ARMv7-M setjmp/longjump functions. From David S. Alessio.
- * NXP i.MXRT:
- - i.MXRT Clocking: Enable TRACE clocks if the divider has been
- defined in the board's board.h file. From Dave Marples.
- * NXP i.MXRT Drivers:
- - i.MXRT QEncoder: Adds quadrature encoder driver for IMXRT. From
- Nicholas Chin.
- - i.MXRT uSDHC: This change completes SDIO support for IMXRT, and
- also adds support for WiFi using the AP6212A module based on Simon
- Piriou's rather excellent work. The patch should also address
- DavidS's concern about width setting for USDHC1 and 2. Testing of
- the WiFi is minimal so far but functionality is proven. I'm
- specifically not happy that the driver doesn't recover elegantly
- from a DMA data checksum failure, but that is an issue that can be
- dealt with in due course ... I'm trying to get the rest of the
- interfaces fleshed out and the hardware proven so it can go for pre-
- production build. I _think_ there's only Bluetooth and USB-device
- left to implement now. From Dave Marples.
- - i.MXRT uSDHC: IMXRT uSDHC driver cmd line reset logic modified.
- From Ivan Ucherdzhiev.
- * NXP/Freescale Kinetis Drivers:
- - Kinetis Serial: Add possibility to specify pull-up instead of
- open drain for serial single-wire mode. From Beat Küng.
- * NXP LPC17xx/40xx:
- - LPC17xx/40xx Build: Cortex-M system reset is applicable to
- LPC17xx/40xx too. From Pavel Pisa.
- * NXP LPC17xx/40xx Drivers:
- - LPC17xx/40xx Ethernet: Follow the procedure listed in the
- LPC176x/5x User Manual when reading from and writing to the PHY's
- registers (section 10.11.14). I couldn't see any behavioral change
- after this commit, but nonetheless is a good practice to follow the
- manufacturer's recommended procedure. From Augusto Fraga Giachero.
- * NXP S31K1xx:
- - Added architecture support for the NXP S32K1xx family. Basic
- support includes the boot up logic, clock configuration, LPUART
- console, Systick timer, GPIO controls, and eDMA (unverified).
- * NXP S31K1xx Drivers:
- - S32K1xx eDMA Leverage eDMA logic from i.MXRT to S32K1XX. Appears
- to be the same IP but with fewer channels and features than the
- i.MXRT implementation. From Gregory Nutt.
- - S32K1xx LPUART: Bring in the LPUART from i.MXRT. It is the same
- IP. From Gregory Nutt.
- - S32K1xx SysTick: Bring in Cortex-M0+ SysTick and interrupt handling
- from samd2l2; bring in Cortex-M4F Systick and interrupt handling
- from LPC54xx. From Gregory Nutt.
- - S32K1xx GPIO: Bring in GPIO logic from Kinetis. Looks like similar
- IP. From Gregory Nutt.
- - S32K1xx Ethernet: Unverified port of the i.MXRT Ethernet driver to
- the S32K1xx. The i.MXRT uses the same IP. From Gregory Nutt.
- - S32K1xx LPSPI and LPI2C: Brings in the LPSPI and LPI2C peripheral
- drivers from the i.MXRT which used the identical IP. From Gregory
- Nutt.
- * NXP S31K1xx Boards:
- - S32K118EVB. This commit adds initial board support for the NXP
- S32K118EVB development board. Currently supports only a minimal
- NSH configuration. From Gregory Nutt.
- - S32K118EVB: Implement board support for on-board LEDs and buttons.
- This is taken from the Freedom-K66f with has the same LED and
- button configuration as the S32K116EVB and uses the same GPIO IP.
- LEDs, but not buttons, have have been verified. From Gregory Nutt.
- - S32K146EVB: Adds initial board support for the S32K146EVB
- development board. Currently supports a NSH configuration with a
- richer feature set than the minimal configuration of the S32K118EVB.
- From Gregory Nutt.
- - S32K146EVB: Add support for execution out of SRAM. This is helpful
- for bring-up when you want to avoid putting a lethal image in FLASH.
- From Gregory Nutt.
- - S32K148EVB: Add support for the NXP S32K148EVB development board.
- Very similar to the S32K146EVB but with more on-chip memory and
- hardware features.
- * Sony CXD56xx
- - CXD56xx: Migrate CXD56xx common code to the common/ directory:
- Boot code, FLASH code, I2C driver, UID. From Alin Jerpelea.
- - CXD56xx: Add SPH. The SPH is used by the ASMP implementation from
- the SDK. From Alin Jerpelea.
- * Sony CXD56xx Drivers:
- - CXD56xx: Add sensors connected to the SCU on Spresense board:
- o Avago APDS9930 Proximity and Ambient light Sensor.
- o Rohm BH1721FVC Ambient Light Sensor.
- o Rohm BH1745NUC Color Sensor.
- o Rohm BM1383GLV/BM1383AGLV Pressure Sensor.
- o Rohm BM1422GMV/BM1422AGMV Magnetic Sensor.
- o Bosch BMI160 Sensor support.
- o Bosch BMP280 Barometic Pressure Sensor.
- o Kionix KX022/KX122 Acceleration Sensor.
- o Murata LT1PA01 Proximity and Ambient light Sensor.
- o Rohm RPR0521RS Proximity and Ambient light Sensor.
- o BMI160: Add optional I2C address.
- From Alin Jerpelea.
- - CXD56xx: Add the sensor initialization for CXD56xx boards in the
- common board folder:
- o APDS9930: typo fix
- o cxd56_ak09912 initialization.
- o cxd56_bmi160 initialization.
- o cxd56_apds9960 initialization.
- o cxd56_bh1721fvc initialization.
- o cxd56_bh1745nuc initialization.
- o cxd56_bm1383glv initialization.
- o cxd56_bm1422gmv initialization.
- o cxd56_bmi160 initialization.
- o cxd56_bmp280 initialization.
- o cxd56_kx022 initialization.
- o cxd56_lt1pa01 initialization.
- o cxd56_rpr0521rs initialization.
- o cxd56_sensors initialization.
- o Backup Log driver.
- o crashlog driver.
- o Move gs2200m initialization.
- o Move ili9340 initialization.
- o Move lpm013m091a initialization.
- From Alin Jerpelea.
- * Sony CXD56xx Spresense Board:
- - Spresense: Enable SmartFS and UDP support From Masayuki Ishikawa.
- * STMicro STM32:
- - STM32F4 PLLI2S: Add support to enable the I2S Phase Locked Loop on
- STM32F427 and STM32F437 MCUs. From Michael Jung.
- * STMicro STM32 Drivers:
- - STM32 ADC: Add ADC calibration procedure for IP_ADC_V1. Tested on
- STM32F100, and it magically increased result accuracy. STM32F103
- has the same calibration procedure. I am not sure about others.
- From Matous Pokorny.
- - STM32 SPI: TI Synchronous Serial Frame Format. The SPI macros on
- STM32 MCUs now support the Texas Instruments Synchronous Serial
- Frame Format protocol (TI protocol). Defined a new SPIDEV_MODETI
- and add support for it in stm32_spi.c. From Michael Jung.
- - STM32 UART: Serial add HW HS on UART 4 & 5. From David Sidrane.
- - STM32 PWM: Configure multi-channel duty only if channel specified.
- This allows you to update duty cycle for a single channel. From
- Mateusz Szafoni.
- - STM32F7 Ethernet: Add a timeout on MAC reset From David Sidrane.
- - STM32F7 FLASH: Exposes stm32_flash_xxx functions. From Anthony
- Merlino.
- - STM32F7 PWM: Configure multi-channel duty only if channel specified.
- This allows you to update duty cycle for a single channel. From
- Mateusz Szafoni.
- - STM32F7 UART: Serial add HW HS on UART 4 & 5. From David Sidrane.
- - STM32H7 ADC: Fix internal channel numbers. From Markus Bernet.
- - STM32H7 BBSRAM: Add BBSRAM support. From David Sidrane.
- - STM32H7 DTCM: Port DTCM from F7 From David Sidrane.
- - STM32H7 I2C: Select ARCH_HAVE_I2CRESET in configuration. From
- David Sidrane.
- - STM32H7 PWM: Configure multi-channel duty only if channel
- specified. This allows you to update duty cycle for a single
- channel. From Mateusz Szafoni.
- - STM32H7 RCC: Fix RCC register definitions and typos for ADC/UART.
- From Markus Bernet.
- - STM32H7 RTC: Ported over F7 RTC. From David Sidrane.
- - STM32H7 SPI: Allow more clock sources. From David Sidrane.
- - STM32H7 UART: Serial add HW HS on UART 4 & 5. From David Sidrane.
- - STM32H7 UART: Fix typo in UART8 configuration. From Markus Bernet.
- - STM32H7 UID: Ported UID from F7 From David Sidrane.
- - STM32L4 PWM: Configure multi-channel duty only if channel specified.
- This allows you to update duty cycle for a single channel. From
- Mateusz Szafoni.
- - STM32L4 UART: Serial add HW HS on UART 4 & 5. From David Sidrane.
- * STMicro STM32 Boards:
- - B-L475E-IOT01A: Add mx25rxx memory chip and smartfs support in NSH
- configuration. From Simon Piriou.
- - LX_CPU: Add support for the PIKRON LX_CPU board. From Pavel Pisa.
- - Nucleo-F303RE: Add basic NSH configuration. From Mateusz Szafoni.
- - Nucleo-F303RE: Enable console on UART2 and set entry point to
- nsh_main() in the PWM configuration. From Mateusz Szafoni.
- - Nucleo-H743ZI: Add RTC support. From David Sidrane.
- - Nucleo-L432KC: Added GPIO drivers for use with /apps/examples/gpio.
- From Daniel P. Carvalho.
- - Nucleo-L432KC: Added Zero Cross sensor to nucleo-l432kc. From
- Daniel P. Carvalho.
- * TI Tiva:
- - Tiva: Add support for Tiva TM4C123AH6PM. From Nathan Hartman.
- - Tiva Configuration: Modify preprocessor logic to support
- configurations with no UART. Now similar to logic for other
- architectures. From Nathan Hartman.
- - Tiva Interrupts: Add handling for IRQs 128 thru 159. From Nathan
- Hartman.
- * TI Tiva Drivers:
- - TM4C QEncoder: Reinstate TM4C qencoder driver and expand its
- ioctls. Add TIVA_HAVE_QEI0, TIVA_HAVE_QEI1 as applicable to each
- ARCH_CHIP_TM4C12*. Rewrite tiva_qe_setup(). Replace tiva_qe_ppr()
- with tiva_qe_resetatppr(). Add tiva_qe_resetatmaxpos() and
- tiva_qe_resetatindex(). Add missing definitions:
- SIGMODE_QUADRATURE, SIGMODE_CLK_AND_DIR, SWAP_NO_SWAP, SWAP_PHA_PHB.
- Rename TIVA QEI ioctl QEIOC_PPR to QEIOC_RESETATPPR; add TIVA QEI
- ioctl identifiers QEIOC_RESETATMAXPOS, QEIOC_RESETATINDEX. From
- Nathan Hartman.
- * TI Tiva Boards:
- - TM4C1294-Launchpad: Enables /dev/userleds in board bring-up for
- tm4c1294-launchpad by calling userled_lower_initialize() in
- tm4c_bringup(). From Nathan Hartman.
- * TI Tiva Drivers:
- - Tiva GPTM timers: Implement 16-bit PWM mode. Add
- tiva_pwm16_sel_event() to choose GPTMCTL.TnEVENT value. Implement
- tiva_pwm_mode16(). This also involved numerous corrections to the
- 16-bit timer logic. Add tiva_timer16pwm_setperiodduty() to set
- initial period, duty cycle, and enable interrupts if requested in
- GPTM peripheral. Interrupts are not enabled in NVIC until
- tiva_timer16_start() is called. Add tiva_timer16pwm_setduty() to
- update duty cycle at any time. Add new TIMER_FLAG_* configuration
- flags to enable configuring the 16-bit PWM feature. Extend type of
- "flags" in tiva_timer32config_s and tiva_timer16config_s from 8- to
- 32-bits to allow more flags. From Nathan Hartman.
- * Build System:
- - Export Build: Export all variables/files to support architecture
- independent build against NSH. From Pavel Pisa.
- - Application Export: This change too build tools allows to export
- built-in applications registry into temporarily created directory
- where export archive content is prepared. If the Makefile in apps/
- directory does not define export: target then error is print but
- export continues without interruption. It would be more logical to
- print warning but there is no way instruct apps make to not print
- error. From Pavel Pisa.
- - boards/Board.mk: Add support to pass dependency paths. From
- Gregory Nutt.
- * Libraries/Header Files:
- - libs/libc/libc.csv: Add some missing C library functions. From
- Pavel Pisa.
- - libs/libc/libc.csv: Add ioctl() to fs_ioctl() wrapper for varidic
- case. From Pavel Pisa.
- - libs/libc/builtin/: Moves shared built-in information out of
- binfmt/libbuiltin and into libs/libc/builtin where it can be shared
- with applications. This should permit built-in application in the
- PROTECTED build where binfmt/libbuiltin was not available in user
- space. From Gregory Nutt.
- - libs/libc/dirent/: Added alphasort() implementation, scandir()
- implementation and DT_* definitions to include/dirent.h. Apparently
- those definitions are not required by POSIX, but are part of
- 4.3BSD and available in glibc as well. From Michael Jung.
- - libs/libc/grp/: Added stubbed implementations of getgrgid,
- getgrgid_r, getgrnam, getgrnam_r, and initgroups. These functions
- are essentially stubs pretending that NuttX supported groups and
- that the only configured group in the system was 'root' with gid 0.
- The intend is not to provide meaningful new features, but to ease
- porting of foreign source code to NuttX. From Michael Jung.
- - libs/libc/machine/arm/armv7-m/: Add Cortex M4F machine optimized
- fabsf and sqrtf. From David S. Alessio.
- - libs/libc/pwd/: Added stubbed implementations. Added stubbed
- implementations of getpwuid, getpwuid_r, getpwnam, and getpwnam_r.
- These functions are essentially stubs pretending that NuttX
- supported users and that the only configured user in the system
- was 'root' with uid 0. The intend is not to provide meaningful
- new features, but to ease porting of foreign source code to NuttX.
- From Michael Jung.
- - libs/libc/pwd and libs/libc/grp/: Modify to get user/group data
- from /etc/passwd and /etc/group if so configured. From Gregory
- Nutt.
- - libs/libc/stdio/: Add support for the size_t integer qualifier 'z'
- to the printf family. This is kind of tricky due the variety of
- sizeof(size_t) on different platforms. From David Sidrane.
- - libs/libc/unistd.h: Added stubbed implementations of setuid() and
- setgid(). These functions are essentially stubs pretending that
- NuttX supported users and groups and that the only configured user
- and group in the system were both 'root' with a uid and a gid of 0,
- respectively. The intent is not to provide meaningful new features,
- but to ease porting of foreign source code to NuttX. From Michael
- Jung.
- - libs/libc/unistd/: Add getuid() and getgid() stubs to match
- MichaelJung's setuid() and setgid(). From Gregory Nutt.
- - libc/libc/unistd/: Add stubs for geteuid(), getegid(), seteuid(),
- setegid(), setreuid(), and setregid(). NuttX does not currently
- support effective user/group IDs, but these stubs will support
- linkage of applications that expect these POSIX standard interfaces.
- From Gregory Nutt.
- * Symbol Tables:
- - NuttX provides lists of available syscalls and library functions and
- tools to process them. The lists can be used to build symbol table
- which allows runtime program loading which can reuse functions
- already compiled into NuttX system image. List processing,
- compilation and linking to the final system image has been possible
- only under manual control until now. Provided changes add option
- (CONFIG_EXECFUNCS_GENERATE_SYSTEM_SYMTAB) to build complete list of
- available functions and syscalls automatically. The symbolic table
- is generated in form libsymtab.a which can be reused by application
- or directly pull in when "g_symtab" and "g_nsymbols" variables are
- requested by EXECFUNCS configuration. I have tried to follow
- mechanisms for library compilation in different kernel protection
- modes but tested only flat no-MMU build. The basic assumption is
- that this library and libraries providing syscall stubs and C-
- library functions are available in user-space context and initial
- application (usually NSH) registers the symbol table through IOCTL.
- The table can be reused then by another applications in their
- address space as kernel allows. Simple for flat or protected mode,
- I am not sure if really support in MMU mode. It is highly probable
- that I have made some mistake, overlooked something, but the
- functionality is optional (should not cause troubles in any mode if
- disabled) and main purpose is to lower memory overhead when more
- applications are loaded on memory constrained system which usually
- use direct kernel calling without protection or address space
- separation. If the table should be provided by kernel to
- applications then makefiles has to be adjusted. From Pavel Pisa.
- * Tools:
- - tools/: Change preferred argument of configurations tools to use
- ':' as the delimiter between <board-name> and <config-name>. This
- is to emphasize that this is not a path; it is configuration
- specification. The legacy '/' delimiter is still supported but
- not recommend and not advertised. Updated configurations
- instructions in README.txt files to show ':' delimiter vs '/'
- delimiter. Update all configuration-related tools to accept ':'
- separator between board and configuration name. From Gregory Nutt.
- * apps/ General:
- - Makefile: Added support for application-specific export target.
- Used by nuttx/tools/mkexport.sh. From Pavel Pisa.
- - apps/builtins: Move apps/builtins/builtin_forindex.c to
- nuttx/libs/libc/builtin since it is required by kernel logic as
- well. Other changes account for movement of builtin.h from
- nuttx/include/nuttx/binfmt/built.h to nuttx/include/lib/builtin.h.
- From Gregory Nutt.
- * Examples/Tests: apps/examples:
- - apps/examples/uid: Demo used to verify PASSWD and GROUP interfaces.
- From Gregory Nutt.
- - apps/examples/webserver/: Initialilze network and run forever only
- if not built-in app. Infer from CONFIG_NSH_BUILTIN_APPS if we are a
- NSH built-in app or not. If built-in app (CONFIG_NSH_BUILTIN_APPS
- defined) then we assume network is initialized prior to webserver
- starting and we exit on webserver failure. If running standalone
- (CONFIG_NSH_BUILTIN_APPS is undefined) then behavior is unchanged:
- webserver initializes network and runs forever. From Nathan Hartman.
- * Network Utilities: apps/fsutils:
- - apps/fsutils/passwd: Handle the improved the format of the
- /etc/passwd file. It is now a little more similar to other systems.
- From Gregory Nutt.
- * Network Utilities: apps/netutils:
- - apps/netutils/dhcpc: Add host name support to DHCP client. From
- Masayuki Ishikawa.
- * Network Utilities: apps/wireless
- - apps/wireless/ieee802154/i8sak: I8sak improvements: (1) Adds
- support for getting/setting maxretries and promsicuous mode from
- i8sak, (2) Fixes a build warning and handles a few cases where a
- fault can occur due to not catching missing arguments. From
- Anthony Merlino.
- - apps/wireless/ieee802154/i8sak: Allow setting the endpoint PAN ID.
- From Anthony Merlino.
- - apps/wireless/ieee802154/i8sak: Adds support for energy scan result
- printout. From Anthony Merlino.
- - apps/wireless/ieee802154/i8shark: Adds support for intentionally
- suppressing passing the FCS so that Wireshark doesn't try to
- validate it. From Anthony Merlino.
- - apps/wireless/ieee802154/libmac: Adds support for getting/setting
- the FCS length From Anthony Merlino.
- - apps/wireless/gs2200m: Add UDP support to the GS2200M driver. From
- Masayuki Ishikawa.
- - apps/wireless/gs2200m: Add DHCP client handling in ioctl_request().
- From Masayuki Ishikawa.
- - apps/wireless/gs2200m: ioctl_request() supports SIOCGIFHWADDR.
- From Masayuki Ishikawa.
- Bugfixes:
- ---------
- Only the most critical bugfixes are listed here (see the ChangeLog for a
- more complete list of bugfixes and for additional, more detailed bugfix
- information):
- * Core OS:
- - Priority Inheritance: Fix a race in telnet with PRIORITY_INHERITANCE
- and SCHED_HPWORK. Sometimes causes an assertion to fire incorrectly.
- From David S. Alessio.
- - Task Groups: Correct some naming. The NuttX task groups have been
- using the acronym 'gid' and also the type 'gid_t' for the the task
- group ID. That is incorrect. Than naming is reserved for use with
- group permissions. So these were all named to grpid and grpid_t so
- that it is clearer that these refer to NuttX task group IDs, and not
- to group permissions. From Gregory Nutt.
- - Task Termination: nxtask_signalparent() in task_exithook.c may
- invalidate the group's parent task ID (tg_ppid) too soon. The
- tg_ppid field is use only to remember the parent tasks ID so that it
- can send the SIGCHLD signal to it. So it must stay valid until
- SIGCHLD has been sent. In nxtask_signalparent(), it calls
- nxtask_sigchild() to send SIGCHLD to the parent, then invalidates
- tg_ppid. That would be okay, except that the SIGCHLD is only sent
- when the last member of the group terminates. That is incorrect;
- tg_ppid can be invalidated too soon and, as a consequence, SIGCHLD
- would never be sent. Noted by Jeongchan Kim in the Google group:
- https://groups.google.com/forum/#!topic/nuttx/SXd8fVwVKBk From
- Gregory Nutt.
- - sched_get_rr_interval(): sched_get_rr_interval() should return
- {0,0} if round-robin scheduling is not selected for the task. From
- Gregory Nutt.
- - SMP Type Collision: The non-standard, non-portable type cpu_set_t
- was created specifically to support the NuttX internal, SMP
- implementation. Any resemblance to any other cpu_set_t would be
- purely coincidental. However it appears that that coincidence has
- occurred. cpu_set_t has an equivalent, non-standard, non-portable
- type in the GNU C library. Compilation of libgnat expects this
- non-standard type to be defined. Who am I to stand in the way of
- progress? This commit removes the conditioning on CONFIG_SMP so
- that cpu_set_t is typed (as a uint8_t) even if CONFIG_SMP is not
- defined. Reference: Bitbucket issue 164. From Gregory Nutt.
- - Binary Loader: Change some debug macros from berr() to binfo()
- when dumping module data. The report of problems is important
- during development but when it enables complete informative output
- about load binaries then the important information can be easily
- overlooked. The huge output sent to serial terminal slows loading
- significantly as well. From Pavel Pisa.
- - Power Management: Fix g_pmcount 16-bits overflow when
- CONFIG_PM_XXENTER_COUNT set big value. From ligd.
- - Timekeeping: Fix cases in time conversion that must be >=
- NSEC_PER_SEC, not > NSEC_PER_SEC. From Gregory Nutt.
- * File System/Block and MTD Drivers:
- - opendir(): opendir() set errno to a negative value in one error
- case. From Michael Jung.
- - SmartFS: Update smartfs smart_scan() function. From Simon Piriou.
- - ProcFS: Add missing LF to cpuload procfs output From David Alessio.
- - MMC/SD: Copy/paste error fix in the SDIO-based block driver for
- MMC. From Ivan Ucherdzhiev.
- - MMC/SD: Correct a misplaced #endif in the SDIO-based driver. From
- Gregory Nutt.
- * Networking/Network Drivers:
- - Ethernet Configuration: Ethernet packet buffer size cannot be
- permitted to go below 1294 if IPv6 is selected. From Gregory Nutt.
- - TCP RST: Fix outgoing RST packet with wrong ack number. From
- biantao.
- - TCP Close: Fix TCP close flow; free the connection after all TCP
- close process finished. From zhangyuan7.
- - UDP Broadcast: Remove net stack dependency from CONFIG_NET_BROADCAST.
- This change allows us to use CONFIG_NET_BROADCAST without network
- stack (i.e. usrsock application can use broadcast) From Masayuki
- Ishikawa.
- - UDP: Fixes a UDP send copy-paste error in the new SO_LINGER code:
- CONFIG_TCP_NOTIFIER to CONFIG_UDP_NOTIFIER. From Juha Niskanen.
- - TCP and UDP: Fix errors in the new implementation of SO_LINGER.
- The tcp_drain() and udp_drain() functions were casting the working
- argument to the wrong type, resulting in hangs and abnormal
- behavior. There is a complexity in the TCP drain logic when the
- remote peer closes the socket before all Tx data has been flushed.
- Sometimes we are not notified of this case and wait the entire
- timeout unnecessarily. There is a workaround in place in
- tcp_txdrain(), but this really should be revisited. From Gregory
- Nutt.
- - 6LoWPAN: Removes unnecessary conversions that were happening due to
- a misunderstanding of byte ordering with EUI-64. From Anthony
- Merlino.
- - RNDIS: Fix issue with DEBUGASSERT when using composite device and
- endpoint numbers not being the default. From Anthony Merlino.
- * Wireless/Wireless Drivers:
- - wireless network devices: Attach radio to d_buf before registering
- device to handle forwarding case. When CONFIG_NET_IPFORWARD is
- enabled, and CONFIG_NET_6LOWPAN is being used, a packet that
- attempts to get forwarded on the 6LoWPAN interface will require
- that the radio's buffer be attached to d_buf. Otherwise an assertion
- will fire. The underlying "radio" in this case is the
- mac802154_netdev. This behavior has probably not been observed
- because the buffer is normally attached in the periodic txpoll
- worker. However, in my case, the 6LoWPAN interface was not UP yet,
- and therefore the worker hadn't run yet. From Anthony Merlino.
- - IEEE 802.15.4 MAC: Fixes issues with extended address. 1) Extended
- address should be read-only. 2) Extended address should be placed
- in frame in "reverse-canonical" order. The extended address is a
- read-only attribute and thus an attempt to write the extended
- address should be denied. Instead, the extended address should
- really be either set by the PHY/radio itself, or provided at board
- bring-up time to the radio layer. The MAC layer now pulls in the
- extended address from the radio any time the MAC is reset. The
- extended address is also supposed to be sent in the frame in
- reverse-canonical order. This is very confusing in the standard and
- it wasn't until I realized it was backwards in Wireshark that I
- researched this further. Searching online I find documents from the
- committee for suggestions/feedback on the future standard. It isn't
- in the 2015 standard but a newer version of the standard will
- presumably clarify this. It says that the extended address should be
- written in reverse-canonical form, meaning the OUI comes last, not
- first inside the frame. From Anthony Merlino.
- - IEEE 802.15.4 MAC: Frame Version should have been 1, but was being
- set to 3 when payload exceeds version 0 capabilities. Adds warning
- to build to indicate what is noted in the menu for
- CONFIG_MAC802154_NTXDESC From Anthony Merlino.
- - IEEE 802.15.4 MAC: Fixes issue where the txdesc's ackreq flag was
- not being set, despite the frame containing a Frame Control field
- with ACKREQ bit set. From Anthony Merlino.
- - Xbee: Fix logic to prevent deadlock scenario when there are no
- available IOBs From Anthony Merlino (2018-12-21).
- - Xbee: Change assumption about destination address mode for incoming
- frames. If a short address has been assigned to our radio, then
- assume we were addressed using that. Otherwise we were addressed
- using our extended address. From Anthony Merlino.
- - Xbee: Initialize the short address to the unspecified address and
- query for the extended address on initialization. From Anthony
- Merlino.
- - Xbee: Adds CONFIG_XBEE_LOCKUP_WORKAROUND option and corresponding
- logic to workaround an issue where the XBee locks up and stops
- responding. This typically happens when there is a lot of data
- being received over the link. When the XBee stops responding, many
- times, querying the XBee kicks it out of this state. However,
- occasionally the XBee is completely locked up and the XBee has to
- be reset. This change handles these conditions by periodically
- (if not naturally occurring) querying the XBee. If during any
- query, the XBee does not respond within a certain number of
- attempts, the XBee is reset. From Anthony Merlino.
- - Xbee: Cancel query timeout upon receiving the expected response.
- Add protection for race condition that can cause association
- timeout to continue firing repeatedly From Anthony Merlino.
- - Xbee: Detect lockup and reset XBee in xbee_req_data From Anthony
- Merlino.
- - Xbee: Fixes one instance of the use of IOBUSER_WIRELESS_MAC802154
- which isn't available without the software MAC layer. Instead we
- use IOBUSER_WIRELESS_RAD802154 throughout the whole driver since it
- is always available when IEEE 802.15.4 support is enable. From
- Anthony Merlino.
- * Common Drivers:
- - pipes: Use inode reference counter instead of device reference
- counter to handle dup(). I found that if I dup() a pipe, the
- reference counter d_refs is not increased. If I close any of the
- fd, backed by the same pipe, the pipe will be freed. This causes
- any further usage on the fd referencing a non existent pipe. This
- change uses the inode reference counter, which is properly
- maintained during dup(). From Yang ChungFan.
- - SPI Bitbang: Fix build error when the SPI bitbang variable width
- support is enabled. From Augusto Fraga Giachero.
- - GPIO Lower Half: Remove limitation when pintype >
- GPIO_INTERRUPT_PIN. From ligd.
- * ARMv4/ARMv5
- - Classic ARM7/ARM9: When performing stability test, the application
- would cause kernel crash. When I trace the stack, I find that
- register R1 has been changed, and its value is the same as register
- CPSR. In up_fullcontextrestore.S, the restoration of R0 and R1 is
- not atomic: 'msr cpsr r1 will enable interrupts and the recovery of
- r0 and r1 may be interrupted and the value or R1 may be changed.
- Fix is to use a single ldmia to restore R0, R1, and return via R15.
- From Loyen Wang.
- * ARMv7-A
- - ARMv7-A: Fix typo and missing quotation for ARMv7-A. From Oki
- Minabe.
- - ARMv7-A: Fix double increment in armv7-a's
- arm_addrenv_destroy_region(). From Oki Minabe.
- - ARMv7-A: Fix L2 page table mask for ARMv7-A page allocator. From
- Oki Minabe.
- * ARMv7-M
- - Interrupts. Removes the architecture-common
- CONFIG_ARCH_INT_DISABLEALL configuration option (but which was
- supported only by ARMv7-M). In the normal course of things,
- interrupts must occasionally be disabled using the up_irq_save()
- inline function to prevent contention in use of resources that may
- be shared between interrupt level and non-interrupt level logic.
- Now the question arises, if we are using BASEPRI to disable
- interrupts and have high priority interrupts enabled
- (CONFIG_ARCH_HIPRI_INTERRUPT=y), do we disable all interrupts except
- SVCall (we cannot disable SVCall interrupts). Or do we only disable
- the "normal" interrupts? If we are using the BASEPRI register to
- disable interrupts, then the answer is that we must disable ONLY the
- "normal interrupts". That is because we cannot disable SVCALL
- interrupts and we cannot permit SVCAll interrupts running at a
- higher priority than the high priority interrupts (otherwise, they
- will introduce jitter in the high priority interrupt response time.)
- Hence, if you need to disable the high priority interrupt, you will
- have to disable the interrupt either at the peripheral that
- generates the interrupt or at the NVIC. Disabling global interrupts
- via the BASEPRI register cannot effect high priority interrupts.
- From Gregory Nutt.
- - ARMv7-M Priorities: In the 'normal' case, the priority of the
- SVCALL interrupt was the same as the priority of the high priority
- interrupt. This means that SVCALL interrupt processing can defer
- the high priority interrupt and result in the jitter in that
- interrupt response. Fix is to raise the priority of the high
- priority interrupt above the priority of the SVCALL interrupt.
- Suggested by Nathan Hartman. From Gregory Nutt.
- * Microchip i.MXRT Drivers:
- - i.MXRT ENC: Fix some errors in register bit definitions. Noted by
- Arie de Muijnck. From Gregory Nutt.
- - i.MXRT LPI2C: Slave addresses are now correctly shifted when
- sending START. TX/RX FIFOs now discarded on error to prevent FIFO
- underflow errors. Fixes error checking to use priv structure and
- removes checking of BBF flag as it is not an error. From Nicholas
- Chin.
- * Microchip PIC32MZ Drivers:
- - PIC32MZ SPI: Fix SPI Mode selection. CKE is the inversion of the
- CPHA. From Ouss4.
- * Microchip/Atmel SAMD2x/SAML2x Drivers:
- - SAMD2/L2 I2C: Correct time calculation. From Bernd Walter.
- * Microchip/Atmel SAM3/SAM4:
- - SAM3/4: Add missing DMA configuration Kconfig setting. From Bernd
- Walter.
- * NXP LPC17xx/40xx Drivers:
- - LPC17xx/40xx ADC: Only use PCLKSEL0 for ADC on LPC176x family.
- From jjlange.
- - LPC17xx/40xx Ethernet: Set speed back to 10Mbps if 10Mmbps link
- negotiated. From Augusto Fraga Giachero.
- - LPC17xx/40xx I2C: Abort I2C transfers if a timeout has occurred.
- If a timeout has occurred in the middle of a I2C transfer, the next
- I2C interrupt should abort any transfers and send a stop condition
- to the corresponding I2C bus. Failure to do so will result in
- memory corruption / undefined behavior as priv->msgs points to a
- region of memory it doesn't owns anymore after lpc17_40_i2c_start
- returns. From Augusto Fraga Giachero.
- - LPC17xx/40xx I2C: Calculate the appropriate timeout for I2C
- transfers. Depending on the bus frequency and transfer size, I2C
- transactions can take quite a bit, so a fixed timeout is not a
- good solution. Calculating the timeout at run time poses some
- overhead but still better than aborting long transactions. From
- Augusto Fraga Giachero.
- * NXP/Freescale Kinetis Drivers:
- - Kinetis I2C: i2c transfer ensure correct result returned.
- kinetis_i2c_transfer released the mutex then fetched the state,
- this resulted in returning the correct results. From David
- Sidrane.
- * NXP LPC17xx/40xx Drivers:
- - LPC17xx/40xx CAN: If BOARD_CCLKSEL_DIVIDER is not equal to 1 on
- LPC178x or LPC40xx then base clock rate is calculated incorrectly
- because CCLK frequency does not correspond to PLL0 clock which is
- used for PCLK. This is partially workaround solution. It would
- be probably better to define BOARD_PCLK_FREQUENCY even for LPC176x
- targets and use that to replace divisor by base_clock in up_dev_s.
- From Pavel Pisa.
- * NXP LPC17xx/40xx Boards:
- - LPC17xx/40xx Ethernet: Add missing LPC17_40_PHY_CEMENT_DISABLE
- variable to the lpc17xx/40xx Kconfig file. For some reason this
- setting was not referenced anywhere except in the Ethernet driver.
- From Augusto Fraga Giachero.
- - LPC17xx/40xx Ethernet: Fix the initialization for DP83848x PHYs.
- The DP83848x requires the RMII mode to be manually enabled through
- the MII_DP83848C_RBR register. Before querying the speed and mode
- it should wait for the link to be established. From Augusto Fraga
- Giachero.
- * NXP i.MXRT Drivers:
- - i.MXRT LPUART: Fix some errors in the LPUART register definition
- files. Correct naming of a function: up_earlyserialinit() should
- be imxrt_earlyserialinit(). Remove prototypes for non-existent
- serial initialization functions. From Gregory Nutt.
- - i.MXRT USDHC: uSDHC typo fixes and command transfer error handling
- modified. From Ivan Ucherdzhiev.
- * SiLabs EFM32 Drivers:
- - EFM32 OTG host: Adam Porter's various fixex for STM32 FS/HS
- probably should be applied to EFM32 host which which has very
- similar IP. From Gregory Nutt.
- * STMicro STM32:
- - STM327F Configuration: Kconfig add depends on BBSRAM. From David
- Sidrane.
- - STM32F7 Interrupts: Fix overwritten IRQ enable. System boot order
- calls clock_initialize() then up_initialize(). clock_initialize()
- was setting up the alarm IRQ up_initialize is initializing the NVIC.
- This most likely worked in the past due to a bug in the NVIC
- initialization code that failed to clear the Interrupt enables.
- - STM32H7: Rix BBSRAM name in memory map. From David Sidrane.
- - STM32H7: Removed f7 in file path. From David Sidrane.
- * STMicro STM32 Drivers:
- - STM32H7 BBSRAM: Fix issues causing no writes and hardfaults. From
- David Sidrane.
- - STM32H7 BBSRAM: Convince compiler to perform 32 bit write. From
- David Sidrane.
- - STM32F7 OTGHS: Fixes bad preprocessor logic preventing USB OTG HS
- to work when used without external ULPI. From Anthony Merlino.
- - STM32 OTGH[FS|HS] Host STM32 host only initiates transfer if
- buflenl > 0. From Adam Porter.
- - STM32F7/H7/L4 OTG host: Adam Porter's fix for STM32 FS/HS probably
- should be applied to STM32 F7, H7, and L4 OTG host which are very
- similar. From Gregory Nutt.
- - STM32/F7/H7/L4: This change was required to get my devices
- (CDC-MBIM) to enumerate. Initially the system timed out retrieving
- the USB configuration descriptor. Ctrl IN requests got nothing but
- NAKs. I found that the initial SETUP packet and corresponding IN
- transfer were fine; it was the Status OUT phase that was getting the
- NAK. After receiving a NAK on the Status OUT, the code would loop
- back and issue another ctrl IN, which will always fail because the
- data was already transferred before. Thus the entire transfer would
- 'timeout'. The fix I implemented moves the DATANAK timeout loop to
- only apply to the Status OUT. Both the ctrl IN and the Status OUT
- need their own retry loops. From Adam Porter.
- - STM32F7 SDMMC: If there is only one SDMMC it is slot 0 From David
- Sidrane.
- - STM32F7 USART1: USART1_RXDMA is dependent on STM32F7_DMA2 not
- STM32F7_DMA1 From Anthony Merlino.
- - STM32H7 DBGMCU: Memory Map DBGMCU is @ 0x5c001000 From David
- Sidrane.
- - STM32F7 SDMMC: Fix warning when DMA is not enabled. From David
- Sidrane.
- - STM32H7 Ethernet: Fix some errors in Ethernet MAC configuration.
- From Markus Bernet.
- - STM32H7 Ethernet: Correct stm32h7 mac address filtering. Correct
- the MAC address 0 register definition and remove the 'receive all'
- flag. Now the Ethernet driver only receives packets addressed to
- correct MAC. From Jukka Laitinen.
- - STM32H7 Ethernet: Correct memory corruption error. The Ethernet
- driver initialization incorrectly wrote to DMACRXCR instead of
- DMACSR when trying to clear the stopped flags. This caused
- invalid buffer length in the DMACRXCR, causing DMA to overflow the
- RX buffers when large packets are sent to the device. From Jukka
- Laitinen.
- - STM32H7 PWR: Ensure data is flushed on backup domain access
- changes. From David Sidrane.
- - STM32H7 Serial: Serial fix undefined with TERMIOS From David
- Sidrane.
- - STM32H7 UARTs: Fix UART7/8 typos. Fix bug in ETH_MACQTXFCR
- configuration. From Markus Bernet.
- * STMicro STM32 Boards:
- - Multiple STM32 Boards: If CONFIG_SCHED_CRITMONITOR is selected,
- then make sure that ITM and DWT resources are enabled before
- accessing ITM and DWT registers. By default, these registers are
- disabled. Suggested by Juha Niskanen. From Gregory Nutt.
- - Nucleo-H743ZI: Correct logic that determines if the RTC driver is
- available. Find in build testing. From Gregory Nutt.
- - Nucleo-G071RB: Fix linker script to avoid .ARM.exidx section
- overlap with .data From Daniel Pereira Volpato.
- - Modify all linker scripts (all boards, all architectures) to use
- solution from Daniel P. Volpato. From Alan Carvalho de Assis.
- - Nucleo-L432KC ADC: Change analog pins definitions and correct DMA
- related issue. From Daniel P. Carvalho.
- * TI Tiva:
- - Tiva Configuration: Rename TM4C123GH6PMI identifiers to
- TM4C123GH6PM. Rationale: In terms of firmware programming, there
- is no functional difference between these parts: TM4C123GH6PMI7,
- TM4C123GH6PMI7R, TM4C123GH6PMT7, and TM4C123GH6PMT7R. From a
- programming standpoint, all of the above parts are TM4C123GH6PM,
- which means it doesn't make sense to differentiate between PM and
- PMI. (The PM means 64-LQFP. The I means temperature range -40C to
- +85C. It could be T meaning -40C to +105C. The R means it ships in
- Tape and Reel packaging as opposed to Tray.) From Nathan Hartman.
- - Tiva Configuration: Rename TM4C1294NC identifiers to TM4C1294NCPDT.
- Rationale: TM4C1294NC is ambiguous: TM4C1294NCPDT is a 128-TQFP,
- TM4C1294NCZAD is a 212-NFBGA. The TM4C1294NC part currently
- supported by NuttX is the TM4C1294NCPDT used on the TI EK-TM4C1294XL
- "Connected LaunchPad" (see configs/tm4c1294-launchpad). To ensure
- the correct part is fully specified, this commit updates all
- TM4C1294NC identifiers to TM4C1294NCPDT. From Nathan Hartman.
- - Tiva Configuration: Fix TM4C129XNCZAD part number in Kconfig and
- identifiers. Rationale: Fully specify that this is the 212-pin BGA
- package (ZAD ending) and for consistency with earlier changes to
- other Tiva TM4C12x part numbers in Kconfig names and identifiers.
- From Nathan Hartman.
- * TI Tiva Drivers:
- - Tiva TM4C 1-Wire: Fix wrong description on define TIVA_1WIRE_BASE:
- Was "EEPROM and Key Locker" (same as the item above). Now "1-Wire
- Master Module." Make DMACTL symbols visible for TM4C123: Remove
- "#ifdef CONFIG_ARCH_CHIP_TM4C129" guard around UART DMA Control
- (DMACTL) symbols. These bits are valid on TM4C123 devices, as well
- as on TM4C129. Also, improve the comment on UART_DMACTL_DMAERR.
- From Nathan Hartman.
- - Tiva GPIO Interrupts: LM3S, LM4F, TM4C: Fix GPIO IRQ error, ports
- R, S, T. Preprocessor logic for CONFIG_TIVA_GPIOx_IRQS was setting/
- clearing port Q defines when it should act on ports R, S, T.
- gpioport2irq() was missing handling for port T. From Nathan
- Hartman.
- - Tiva Timers: Fix minor errors in tiva_timerlib.c. Fix incorrect
- preprocessor conditionals related to Kconfig defines:
- CONFIG_TIVA_TIMER32_EDGECOUNT -> CONFIG_TIVA_TIMER16_EDGECOUNT,
- CONFIG_TIVA_TIMER32_TIMECAP -> CONFIG_TIVA_TIMER16_TIMECAP,
- CONFIG_TIVA_TIMER32_PWM -> CONFIG_TIVA_TIMER16_PWM. From Nathan
- Hartman.
- - Tiva Timers: Fix errors in low-level timer support.
- tiva_gptm_configure() and tiva_gptm_release() were calling
- tiva_emac_periphrdy() instead of tiva_gptm_periphrdy(). Fix
- error in "abcde" description of bit flag defines. From Nathan
- Hartman.
- - Tiva Timers: Fix one code error and some comment errors.
- tiva_timer16_setinterval(): Was DEBUGASSERTing on mode !=
- TIMER16_MODE. Fixed to DEBUGASSERT on mode == TIMER16_MODE.
- From Nathan Hartman.
- * ZiLOG Z80 Boards:
- - z80sim Serial: Fix uart_dev_t initializer: pollfds[] is a array of
- pointers and, hence, the NULL initializer must be included in braces.
- Noted by Paul Osmialowski in Issue #160. From Gregory Nutt.
- - z80sim Interrupts: Missed a name change up_irqinitialize to
- z80_irq_initialize. From Gregory Nutt.
- * C Library/Header Files:
- - include/netinet/in.h: Rename __pad member to sin_zero in struct
- sockaddr_in. Libwebsockets initializes the 'sin_zero' member of
- sockaddr_in objects to zeros. Apparently, judging from mailing list
- entries, there are platforms on which not doing this causes
- undefined behavior. On NuttX compiling respective code is broken,
- as the corresponding member variable is called '__pad'. Neither in
- the 'nuttx' nor in the 'apps' repository did I find any reference to
- this identifier. Thus, I believe its a safe bet to just rename it.
- UNIX Network Programming states in this regard: "The POSIX
- specification requires only three members in the structure:
- sin_family, sin_addr, and sin_port. It is acceptable for a POSIX-
- compliant implementation to define additional structure members, and
- this is normal for an Internet socket address structure. Almost all
- implementations add the sin_zero member so that all socket address
- structures are at least 16 bytes in size." From Michael Jung.
- - libs/libc/libc.csv: Correct dependency of setlocale on
- CONFIG_LIBC_LOCALE. From Pavel Pisa.
- - libs/libc/machine/arm/armv7-m: Fix build error for ELF. From
- Masayuki Ishikawa.
- - libs/libc/math.csv: Correct format of some function entries. From
- Pavel Pisa.
- * Tools:
- - tools/: Change all occurrences of /bin/(ba)sh in shell scripts to
- /usr/bin/env bash which appears more portable From Manuel Stühn.
- * NSH Library: apps/nshlib:
- - apps/nshlib/: As noted by David S. Alessio, 'cat' should not output
- any additional newline at the end of the cat'ed file content. This
- additional newline was added to assure that the NSH prompt was
- presented on a new line. However, that is not the correct behavior
- of 'cat' per the IEEE std: "The standard output shall contain the
- sequence of bytes read from the input files. Nothing else shall be
- written to the standard output." Reference:
- https://pubs.opengroup.org/onlinepubs/009695399/utilities/cat.html.
- This commit changes the function nsh_catfile() which underlies the
- 'cat' command and well as other NSH commands. Although this is the
- correct behavior for 'cat' it may not be the correct behavior for
- other commands implemented via nsh_catfile(). That remains to be
- determined. From Gregory Nutt.
- * System Utilities: apps/system:
- - apps/system/cle/: ASCII DEL should be treated by Delete-Left. From
- Dave Marples.
- - apps/system/i2ctool: (1) Friendlier I2C "knock-knock" uses only
- read request. While many I2C slave devices have multiple indexed
- registers, some have only one register and it's not indexed. For
- example, the I2C bus switch TCA9548A has only a Control Register,
- attempting to index to "Reg[0]" alters its contents to 0x00
- disabling all subordinate buses. This patch fixes that problem by
- simply trying to read something/anything from the slave. This also
- helps coax out slaves with register files that start from a higher
- index, i.e. the AT24CS0x, FLASH chips with a UUID that appears as a
- 2nd I2C slave at (address+8), report their serial number at
- Reg[80]-Reg[8F] and will NAK a read of Reg[0]. (2) Modify get/set
- to prevent write of reg index if not specifed From David Alessio.
- * Network Utilities: apps/netutils:
- - apps/netutils/dhcpd: Fixes bug where hwaddr was being used instead
- of ipaddr in the ARP update. This bug seems to have been introduced
- three years ago during a rewrite to remove a direct OS call to arp.
- I'm not sure how others have not run into issues with this. The
- behavior I was observing was that the DHCPD would go to offer an IP
- address, but then send a ARP request for the IP instead because it
- didn't know where to send the data. From Anthony Merlino.
- - apps/netutils/netinit/: Remove warnings. Unhook PHY notification
- signal handler when cleaning up, if an error occurs after the signal
- handler is put into place. From Nathan Hartman.
- * Wireless Utilities: apps/wireless:
- - apps/wireless/ieee802154/i8sak: Fixes conversion from extended
- address to IPv6 address. From Anthony Merlino.
|