| Deutsch English Français Italiano |
|
<vrc74l$2133a$2@dont-email.me> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail From: pozz <pozzugno@gmail.com> Newsgroups: comp.arch.embedded Subject: Re: 32 bits time_t and Y2038 issue Date: Tue, 18 Mar 2025 17:31:18 +0100 Organization: A noiseless patient Spider Lines: 117 Message-ID: <vrc74l$2133a$2@dont-email.me> References: <vqpkf9$1sbsa$1@dont-email.me> <vqpoi3$226ih$1@dont-email.me> <slrnvtbaot.sal.news-1513678000@a-tuin.ms.intern> <vrbado$2133a$1@dont-email.me> <vrbi79$2a30t$1@dont-email.me> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Tue, 18 Mar 2025 17:31:18 +0100 (CET) Injection-Info: dont-email.me; posting-host="72382ab6454fc73aa33532361b073b5c"; logging-data="2133098"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18mYH+7Rq8Kx8kwsxRTxk6i+Sieou1DHKY=" User-Agent: Mozilla Thunderbird Cancel-Lock: sha1:fFZ7HGGSR1rI5H80lK8p2mUe060= Content-Language: it In-Reply-To: <vrbi79$2a30t$1@dont-email.me> Bytes: 6836 Il 18/03/2025 11:34, David Brown ha scritto: > On 18/03/2025 09:21, pozz wrote: >> Il 15/03/2025 17:30, Michael Schwingen ha scritto: >>> On 2025-03-11, David Brown <david.brown@hesbynett.no> wrote: >>>> package as-is. For anything other than a quick demo, my preferred >>>> setup >>>> is using makefiles for the build along with an ARM gcc toolchain. That >>>> way I can always build my software, from any system, and archive the >>>> toolchain. (One day, I will also try using clang with these packages, >>>> but I haven't done so yet.) >>> >>> Same here. I just switched to ARM gcc + picolibc for all my ARM >>> projects - >>> this required some changes in the way my makefiles generate linker >>> scripts >>> and startup code, and now I am quite happy with that setup. >> >> One day or another I will try to move from my actual build system >> (that depends on silicon vendor IDE, libraries, middleware, drivers, >> and so on) to a generic makefile and generic toolchain. >> >> Sincerely I tried in the past with some issues. First of all, I use a >> Windows machine for development and writing makefiles that work on >> Windows is not simple. Maybe next time I will try with WSL, writing >> makefiles that work directly in Unix. > > Install msys2 (and the mingw-64 version of gcc, if you want a native > compiler too). Make sure the relevant "bin" directory is on your path. > Then gnu make will work perfectly, along with all the little *nix > utilities such as touch, cp, mv, sed, etc., that makefiles sometimes use. Do you run <msys>\usr\bin\make.exe directly from a cmd.exe shell? Or do you open a msys specific shell? > The only time I have seen problems with makefiles on Windows is when > using ancient partial make implementations, such as from Borland, along > with more advanced modern makefiles, or when someone mistakenly uses > MS's not-make "nmake" program instead of "make". > > Of course your builds will be slower on Windows than on Linux, since > Windows is slow to start programs, slow to access files, and poor at > doing it all in parallel, but there is nothing hindering makefiles in > Windows. My builds regularly work identically under Linux and Windows, > with the same makefiles. I tried to use make for Windows some time ago, but it was a mess. Maybe msys2 system is much more straightforward. >> Another problem that I see is the complexity of actual projects: >> TCP/IP stack, cripto libraries, drivers, RTOS, and so on. Silicon >> vendors usually give you several example projects that just works with >> one click, using their IDE, libraries, debuggers, and so on. Moving >> from this complex build system to custom makefiles and toolchain isn't >> so simple. > > That's why you still have a job. Putting together embedded systems is > not like making a Lego kit. Running a pre-made demo can be easy - > merging the right bits of different demos, samples and libraries into > complete systems is hard work. It is not easy whether you use an IDE > for project and build management, or by manual makefiles. Some aspects > may be easier with one tool, other aspects will be harder. You're right. >> Suppose you make the job to "transform" the example project into a >> makefile. You start working with your preferred IDE/text >> editor/toolchain, you are happy. >> After some months the requirements change and you need to add a driver >> for a new peripheral or a complex library. You know there are >> ready-to-use example projects in the original IDE from silicon vendor >> that use exactly what you need (mbedtls, DMA, ADC...), but you can't >> use them because you changed your build system. > > Find the files you need from the SDK or libraries, copy them into your > own project directories (keep them organised sensibly). > > A good makefile picks up the new files automatically and handles all the > dependencies, so often all you need is a new "make -j". But you might > have to set up include directories, or even particular flags or settings > for different files. > >> Another problem is debugging: launch a debug sessions that means >> download the binary through a USB debugger/probe and SWD port, add >> some breakpoints, see the actual values of some variables and so on. >> All this works very well without big issues if using original IDE. Are >> you able to configure *your* custom development system to launch debug >> sessions? > > Build your elf file with debugging information, open the elf file in the > debugger. What do you mean with "open the elf file in the debugger"? > You probably have a bit of setup to specify things like the exact > microcontroller target, but mostly it works fine. > >> Eventually another question. Silicon vendors usually provide custom >> toolchains that often are a customized version of arm-gcc toolchian >> (yes, here I'm talking about Cortex-M MCUs only, otherwise it would be >> much more complex). >> What happens if I move to the generic arm-gcc? >> > > This has already been covered. Most vendors now use standard toolchain > builds from ARM. > > What happens if the vendor has their own customized tool and you switch > to a generic ARM tool depends on the customization and the tool > versions. Usually it means you get a new toolchain with better > warnings, better optimisation, and newer language standard support. But > it might also mean vendor-supplied code with bugs no longer works as it > did. (You don't have any bugs in your own code, I presume :-) ) :-)