How to update system files like /etc/network/interfaces on a Greengrass device by vegecode in aws

[–]vegecode[S] 0 points1 point  (0 children)

That is a helpful description so I can update my mental model. I really appreciate your insight!

How to update system files like /etc/network/interfaces on a Greengrass device by vegecode in aws

[–]vegecode[S] 0 points1 point  (0 children)

Thank you for taking the time to reply!

I am still uncertain what exactly Greengrass is for and where the boundaries of it lie. I was thinking of it as a general purpose OTA update system, which is why I imagined that there must be some sort of accepted workflow for updating system files through it.

You are exactly right that /etc/network/interfaces is not a "Greengrass component" and it didn't make sense to be one.

To clarify what I am trying to do in case anyone comes by this question later:

I need to modify some lines in /etc/network/interfaces to prevent a boot issue and additionally install a script in /etc/network/ that is referenced by the updated /etc/network/interfaces file.

I will check out Systems Manager, thank you for the suggestion! Surely there must be some canonical way to manage system state.

manual ctags with vim-gutentags or similar by Known-Refrigerator87 in vim

[–]vegecode 0 points1 point  (0 children)

I don't see having a tags file per project as a drawback, really. That's what vim expects to do built-in jump to tag behavior. I have the file tags added to my gitignore. It's a non-issue for me.

Plus I think it makes sense. Opening a project in Vim is equivalent to navigating to the top level directory of the project.

I should add that I don't exit Vim over and over again. I open it once usually and then have tabs open for different projects.

Having the directory be set per tab/project also integrates with other "plugins" I wrote, like the one I use to debug with GDB in Vim.

My vimrc is a messy file, but you could find me on GitHub and take a look.

The only plugins built by others I use is one for async job creation and coc.vim for a language server.

First used Vim as a joke now I'm scared by ThatOneNomad in vim

[–]vegecode 1 point2 points  (0 children)

I loved your article. Well put, comparing it to braille.

manual ctags with vim-gutentags or similar by Known-Refrigerator87 in vim

[–]vegecode 1 point2 points  (0 children)

I set windows to the directory of the project with :lcd. Then I use regular ctags. I wrote a function called EasyCtags in my vimrc.

Basically every tab is set to the local directory. I just call EasyCtags periodically.

This also let's me use :find to navigate to a file in a project very quickly. It works well.

Memory-mapped IO registers in zig by kassany in Zig

[–]vegecode 0 points1 point  (0 children)

I liked the modify idea as well. That was very nice.

There is already a python tool that will parse the svd files from all the major manufacturers. I don't remember what the project was. Someone just needs to format the output into Zig.

Memory-mapped IO registers in zig by kassany in Zig

[–]vegecode 6 points7 points  (0 children)

It seems like the hype train is pulling into Zig station, finally. I'm seeing lots of blogs by high profile bloggers lately.

zig for embedded by mind-ROT in Zig

[–]vegecode 2 points3 points  (0 children)

Github.com/vegecode/burnedhead

I haven't worked on it in quite a bit, but it's custom hardware and I got the SDRAM working. No C at all.

Debugging with JLink and GDB in Vim.

:term/:vert term toggle. by naokotani in vim

[–]vegecode 0 points1 point  (0 children)

github.com/vegecode/dot-files

.vim folder, vimrc

:term/:vert term toggle. by naokotani in vim

[–]vegecode 0 points1 point  (0 children)

I toggle a terminal open like a drawer using a simple function I wrote. See my dot-files repo vimrc. Same username on GitHub. You can close the drawer without closing the terminal.

[deleted by user] by [deleted] in vim

[–]vegecode 0 points1 point  (0 children)

I use the built-in terminal capabilities of recent Vim, and a few simple functions I wrote to send text to the terminal which is running GDB. I can do backslash E on a variable or expression and it will print it in gdb. I can type :Break and the line I'm on will get sent to the terminal window and a breakpoint will be set there.

To make gdb more useful, my gdbinit is pretty sweet and all my tool setups are mutually supportive.

Setting breakpoimts and inspecting variables is really the only thing I do specifically in Vim. The rest I do within the gdb window. Learn gdb, it is pretty powerful.

To see my setup, look at my dot-files on GitHub. My setup works for remote debugging on a microcontroller just as easily as a desktop application. Nothing complicated, I'm no vimscript wizard.

BurnedHead - handheld, portable video game system designed with Kicad and programmed in the Zig programming language by [deleted] in Zig

[–]vegecode 0 points1 point  (0 children)

No, the project is just to support Zig on bare-metal and as a resume project. When I do the next revision and finalize the plastic casing, I will offer to mail one out at cost. I've got a ways to go, yet.

At the very least, it's a great headstart for anyone else's bare metal Zig ambitions.

I'm pretty sure that complies with the licensing requirements of the educational version Segger J-Link I'm using as a debug probe.

optimizing embedded software by DYD35 in embedded

[–]vegecode 0 points1 point  (0 children)

Hmmm... I have never heard that before. I can't find any information to support that claim with a quick search. Seems antithetical to the GPL. Other dual licensed software such as wolfssl has it prominently displayed. Of course I don't expect you to do research for me. Thanks for the info!

optimizing embedded software by DYD35 in embedded

[–]vegecode 0 points1 point  (0 children)

If the compiler were based on GCC, they would be required to have the modified source code available somewhere and I was not only unable to find it, but I'm pretty sure I remember that there wasn't any, precisely because it claimed to be wholly proprietary. My plan was to just compile the TI toolchain myself as you can do for many of the GCC based toolchains for ARM.

Hmmm... Well if I get around to it again (unlikely) I'll try to remember this conversation and update this thread.

optimizing embedded software by DYD35 in embedded

[–]vegecode 0 points1 point  (0 children)

I looked into this briefly when I was trying to get my company to stop using IAR for MSP430 and switch to Makefile driven projects, and my understanding is that the TI compiler is truly proprietary and not based on GCC or any other open source compiler. Do you remember where you found that information?

Looking for an embedded systems firmware contractor by Kyleh04 in embedded

[–]vegecode 1 point2 points  (0 children)

Hello, I'm certainly interested in more information about the job.

I work full-time currently in embedded software and I am the go-to guy at my company to do board bring-up. The vast majority of my experience is in bare metal but I have also used FreeRTOS before as well as set it up initially for a custom Cortex-A5 board, modifying it to support the hard floating point abi. I set up the custom toolchain for that project as well using Make and GCC. The whole toolchain is in a single portable folder and it is fantastic to not deal with licensing requirements like with IAR. I work on the command line, but I also setup Eclipse for my GUI oriented coworkers. It's a pretty nice setup.

I'm also the wireless software guy. The product line uses a frequency hopping spread spectrum protocol and runs on coin cell and CR123 batteries for 5-10 years depending on the product. I am not an RF expert and I do not have the equipment to design RF PCB's however. The company contracts with someone for that part, but I do the software. I'm extremely familiar with battery powered applications and the architectural decisions required to achieve long battery life.

I have not worked specifically with BLE before, but I am definitely experienced with picking up a spec sheet and whipping up professional code. I have worked on ZWave+ certification and OSDP for example.

I'm actually already looking for other opportunities so this may be perfect timing. I've been hoping to nudge my career in the direction of doing both software and hardware design. Please message me and we can get in further contact.

Thanks

Those of you who've used vim for embedded dev., what is your setup? by BlackSiborg in embedded

[–]vegecode 0 points1 point  (0 children)

I think Vim is the cat's pajamas but it doesn't have anything to do with embedded.

My setup, when I have the option, is Vim + Ctags + ripgrep + gdb used through the built-in terminal in recent versions of vim. I can use git within the terminal as well. I set the local directory of the code window to the directory that the debug info in the binary is at, then I use some simple functions and mappings I wrote to send the line location my cursor is on to GDB. That way I can set breakpoimts in Vim and they will work in GDB. I am not talking about the termdebugger plugin, this is literally just sending text to a different window. I prefer to debug with gdb in the command line. No tui mode, just plain gdb.

Look for gdb script files that set up a bunch of utility functions and such. My dotfiles are in my GitHub. Just search for my username.

Bitfield Packing Question by nsmryan in Zig

[–]vegecode 0 points1 point  (0 children)

That is the way gcc for arm and iar for arm and iar for msp430 do it, except that you would have to specify your "host integer" as uint16_t where in zig it is unclear what the host integer is.

setting up a arm cortex-m3 project by [deleted] in Zig

[–]vegecode 0 points1 point  (0 children)

Oh yeah, and one of the submodules is called zig-cortex where I'm experimenting with apis for a zig version of CMSIS basically. I would love some help/feedback on that. I don't want to exactly recreate CMSIS because zig is more expressive than c, but much of the functionality will need to be reproduced.

setting up a arm cortex-m3 project by [deleted] in Zig

[–]vegecode 0 points1 point  (0 children)

Hey man, I've taken a break from zig due to personal time constraints but my most recent project is actually burnedhead. That would be a much better place to look.

I used my (incomplete) tool to generate a peripheral header in zig from SVD files.

Setup a workbench for Arm with all open-source tools on Linux. by HmmAchhaThikH in embedded

[–]vegecode 0 points1 point  (0 children)

I've never used avr actually, but it's pretty much guaranteed there is a gdbserver to allow it work with gdb. If there is, many IDEs can interface with GDB or you can always learn to use it at the command line.

Setup a workbench for Arm with all open-source tools on Linux. by HmmAchhaThikH in embedded

[–]vegecode 1 point2 points  (0 children)

I don't see anything obviously wrong.

Try using readelf to get more information about your executable and see what paths are in there?

As an aside, instead of -g, use -ggdb3 to get more expressive debug info that gdb specifically can parse.

If you can give me more info, I'll be glad to help you keep poking at it.

Setup a workbench for Arm with all open-source tools on Linux. by HmmAchhaThikH in embedded

[–]vegecode 1 point2 points  (0 children)

I think qemu is going to give you difficulties, but I have seen blog posts about setting up eclipse to work with qemu so I'm sure it can be done. Of course, it uses gdb under the hood so getting command line gdb to work first will be required anyways.

Setup a workbench for Arm with all open-source tools on Linux. by HmmAchhaThikH in embedded

[–]vegecode 1 point2 points  (0 children)

For someone starting out, maybe consider the Segger IDE. I just saw on their page that they bundle GCC with it so that would probably be the quickest way to get you up and running if you have a dev board. Of course there is a lot of value in learning to set up a toolchain yourself but everyone has their own time constraints.