Deutsch   English   Français   Italiano  
<100752v$3kivm$1@dont-email.me>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!weretis.net!feeder9.news.weretis.net!news.quux.org!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: Improving build system
Date: Fri, 16 May 2025 12:46:56 +0200
Organization: A noiseless patient Spider
Lines: 355
Message-ID: <100752v$3kivm$1@dont-email.me>
References: <vvvq5j$1lml0$1@dont-email.me> <1001m9t$2drv1$1@dont-email.me>
 <100338u$2c42e$1@dont-email.me> <1004all$3218k$1@dont-email.me>
 <1005m3f$3aqfb$1@dont-email.me> <1006vho$3miqf$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Fri, 16 May 2025 12:46:58 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="b1ab8f7032ac741dfc92317180d6ca90";
	logging-data="3820534"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX19CulNpOjOLMCUPGZf1SD821J6DGJelOfk="
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:FPhvcJsIw6/34gpBzdSkTjnJGHw=
In-Reply-To: <1006vho$3miqf$1@dont-email.me>
Content-Language: it
Bytes: 16624

Il 16/05/2025 11:12, David Brown ha scritto:
> On 15/05/2025 23:25, pozz wrote:
>> Il 15/05/2025 11:03, David Brown ha scritto:
>>> On 14/05/2025 23:51, pozz wrote:
>>>> Il 14/05/2025 11:03, David Brown ha scritto:
>>>>> On 13/05/2025 17:57, pozz wrote:
>>>> [...]
>>
> 
>> I worked on PIC8 and AVR8 and IMHO AVR8 is much better then PIC8.
>> Regarding Cortex-M, SAM devices are fine for me.
> 
> The 8-bit PIC's are extraordinarily robust microcontrollers - I've seen 
> devices rated for 85 °C happily running at 180 °C, and tolerating 
> short-circuits, over-current, and many types of abuse.  But the 
> processor core is very limited, and the development tools have always 
> been horrendous.  The AVR is a much nicer core - it is one of the best 
> 8-bit cores around.  But you are still stuck working in a highly 
> device-specific form of coding instead of normal C or C++.  

Why do you write "highly device-specific form of coding"? Considering 
they are 8-bits (and C is at-least-16-bits integer), it seems to me an 
acceptable C language when you coimpile with avr-gcc.

You can use int variables without any problems (they will be 16-bits). 
You can use function calls passing paramters. You can return complex 
data from functions.

Of course flash memory is in a different address space, so you need 
specific API to access data from flash.

Do you know of other 8-bits cores supported better by a C compiler?


> And you are 
> still stuck with Microchip's attitude to development tools.  (You can 
> probably tell that I find this very frustrating - I would like to be 
> able to use more of Microchip / Atmel's devices.)

Maybe we already talked in the past about this. I don't know if avr-gcc 
was developed by Atmel or Arduino community. Anyway, for AVR8 you have 
the possibility to use gcc tools for compiling and debugging. There are 
many open source tools. I think you could avoid completely 
Microchip/Atmel IDE for AVR8 without any problems. Arduino IDE is a good 
example.


>>>>> 2.
>>>>>
>>>>> You don't need to use bash or other *nix shells for makefile or 
>>>>> other tools if you don't want to.  When I do builds on Windows, I 
>>>>> run "make" from a normal command line (or from an editor / IDE).  
>>>>> It is helpful to have msys2's usr/bin on your path so that make can 
>>>>> use *nix command-line utilities like cp, mv, sed, etc.  But if you 
>>>>> want to make a minimal build system, you don't need a full msys2 
>>>>> installation - you only need the utilities you want to use, and 
>>>>> they can be copied directly (unlike with Cygwin or WSL).
>>>>>
>>>>> Of course you /can/ use fuller shells if you want.  But don't make 
>>>>> your makefiles depend on that, as it will be harder to use them 
>>>>> from IDEs, editors, or any other automation.
>>>>
>>>> In the beginning (some years ago) I started installing GNU Make for 
>>>> Windows, putting it in c:\tools\make.  Then I created a simple 
>>>> Makefile and tried to process it on a standard Windows command line. 
>>>> It was a mess!  I remember there were many issues regarding: 
>>>> slash/backslash on file paths, lack of Unix commands (rm, mv, ...) 
>>>> and so on.  Native Windows tools need backslash in the paths, but 
>>>> some unix tools need slash.  It was a mess to transform the paths 
>>>> between the two forms.
>>>>
>>>
>>> Most tools on Windows are happy with forward slash for path 
>>> separators as well. 
>>
>> mkdir, just to name one?  And you need mkdir in a Makefile.
> 
> Don't use the crappy Windows-native one - use msys2's mkdir.  As I said:
> 
> bin_path :=
> RM := $(bin_path) rm
> MKDIR := $(bin_path) mkdir
> 
> and so on.
> 
> Now your makefile can use "mkdir" happily - with forward slashes, with 
> "-p" to make a whole chain of directories, and so on.

Yes, sure, now I know.  I was responding to your "Most tools on Windows 
are happy with forward slash". I thought your "tools on Windows" were 
native Windows commands.

I think your suggestion is: explicitly call msys tools (rm, mkdir, gcc) 
in normal Windows CMD shell, without insisting in using directly the 
msys shell. Maybe this will help in integration with third-parties 
IDE/editors (such as VSCode, C::B, and so on).


> Once you have left the limitations of the Windows default command shell 
> builtins behind, it is all much easier.  For utilities like "cp" and 
> "rm" it is a little more obvious since the names are different from the 
> DOS leftovers "copy" and "del" - unfortunately "mkdir" is the same name 
> in both cases.

Indeed.


>>> Certainly everything that is originally a *nix tool will be fine with 
>>> that.
>>>
>>> Of course if you have a makefile that uses commands like "rm" and you 
>>> don't have them on your path, and don't specify the path in the 
>>> makefile, then it won't work.  This is why the norm in advanced 
>>> makefiles is to use macros for these things :
>>>
>>> # Put this in the host-specific file, with blank for no path needed
>>> bin_path :=
>>>
>>> # Use this instead of "rm".
>>> RM := $(bin_path) rm
>>
>> Initially I insisted using native Windows commands: DEL, MKDIR, COPY 
>> and so on.  Finally I gave up.
>>
> 
> Excellent decision.
> 
>>
>>
>>>> After this attempt, I gave up.  I thought it was much better to use 
>>>> the IDE and build system suggested by the MCU manufacturer.
>>>>
>>>
>>> For most IDEs, the build system is "make".  But the IDE generates the 
>>> makefiles - slowly for big projects, and usually overly simplistic 
>>> with far too limited options.
>>>
>>> But IDE's are certainly much easier for getting started.  On new 
>>> projects, or new devices, I will often use the IDE to get going and 
>>> then move it over to an independent makefile.  (And I'll often 
>>> continue to use the IDE after that as a solid editor and debugger - 
>>> IDE's are generally happy with external makefiles.)
>>
>> I'm going to create a new post regarding editors and debugger... stay 
>> tuned :-D
> 
> You are keeping this group alive almost single-handedly :-)  Many of us 
> read and answer posts, but few start new threads.

I'm the student, your are the teachers, so it is normal I make the 
questions :-D

[OT] I like newsgroups for chatting with others on specific topics. 
Nowadays unfortunately newsgroups are dying in favor of other social 
platforms: Facebook, reddit, blogs.... Do you know of some other active 
platforms about embedded?


>>>> Now I'm trying a Unix shell in Windows (msys, WSL or even the bash 
>>>> installed with git) and it seems many issues I had are disappearing.
>>>>
>>>>
>>>>> And of course you will want an msys2/mingw64 (/not/ old mingw32) 
>>>>> for native gcc compilation. 
>>>>
>>>> The goal of the simulator is to detect problems on the software that 
>>>> runs directly on Windows, without flashing, debug probes and so on. 
>>>> I increased my productivity a lot when I started this approach.
>>>>
>>>> Obviously, the software running on Windows (the simulator) should be 
>>>> very similar to the sofware running on the embedded target.  
>>>> Cortex-M MCUs are 32-bits so I thought it should be better to use a 
>>>> 32-bits compiler even for the simulator.
>>>>
>>>
>>> mingw-w64 can happily generate 32-bit Windows executables.  IIRC you 
>>> just use the "-m32" flag.  It is significantly better than old mingw 
========== REMAINDER OF ARTICLE TRUNCATED ==========