cortex | A fault-tolerant events/alerts correlation engine | Monitoring library
kandi X-RAY | cortex Summary
kandi X-RAY | cortex Summary
Cortex is a fault-tolerant events correlation engine. It groups and correlates incoming events for further actions: creating/resolving incidents/alerts or for doing root cause analysis. The project is alpha quality and not yet ready for production.
Support
Quality
Security
License
Reuse
Top functions reviewed by kandi - BETA
- New creates a new Service
- Execute executes a script and returns the result .
- httpRaftJoin is used to initiate a raft cluster join
- newStore returns a new store .
- LeaderAddr returns the address of the leader
- RetryPost posts a POST to URL
- run starts the service
- Main entry point
- newTCPTransport creates a new transport layer
- restoreRules restores the rules from the given reader
cortex Key Features
cortex Examples and Code Snippets
Community Discussions
Trending Discussions on cortex
QUESTION
Situation: I am working with a crypto library called embedded disco, I have a demo working on my PC but when porting it over to the MCU I get a hard fault when executing a library procedure. In the faulting code, the library is trying to simply copy the content of one strobe_s
struct into another strobe_s
. This is done twice: once for s1
and once for s2
. For s1
, the library simply assigns the dest. struct to the source struct. For s2
however, such an assign gave a hard fault. As the Cortex-M ISA requires aligned memory accesses, I reckoned that replacing the assignment with a memcpy should fix the problem. Nevertheless, simply stepping into memcpy using the debugger results in a hard fault! I.e. I have a breakpoint at the line with the memcpy and when stepping inside the fault handler is called! I have used memcpy to fix misaligned memory accesses in other parts of the code just fine...
MCU: STM32L552ZET6QU
Faulting code:
The code below is my modification of the original library code where the assignment to *s2
was replaced by a memcpy. The original code from the library's github was:
ANSWER
Answered 2021-Jun-14 at 10:32Here:
QUESTION
I want to implement an embedded project using stm32F0 (arm-based) with VS Code. The project ran properly on other systems.
- I Added C/C++ extension to visual studio
- I installed a compiler for cortex-m0 arm: GNU Arm Embedded toolchain/gcc arm for windows.
- Makefiles installed: binaries file + dependencies file
- openOCD installed (open On Chip Debugger)
- tasks.json (build instructions), c_cpp_properties.json (compiler path and IntelliSense settings) were created. I modified the Include path because my program includes header files that aren't in my workspace, and that is not in the standard library path.
c_cpp_properties.json file
...ANSWER
Answered 2021-May-27 at 13:45Cannot open source file avr/io.h (dependency of hal.h)
You appear to be using ChibiOS whhich has a file hal.h which includes halconf.h which includes mcuconf.h. Clearly you appear to have an AVR port of ChibiOS where you need STM32 or ARM Cortex-M support.
But, how VS Code can find dependencies before compiling?
The same way as the compiler/pre-processor do, by having include paths configured, parsing the project files and accounting for any externally defined (command line) macros.
I also was wondering if I should add a path for main.cpp file and other C and CPP files in the configuration file of VS Code to solve these problems?
I believe it will parse project files in any case. It only needs to find the header files included in a source file to provide context for the parsing of the sourcefile.
For debugging, I don't see any debugger in the list, though I installed openOCD and add the path in the environment variable
That is an entirely different question - post a new question for that.
QUESTION
I have a huge memory block (bit-vector) with size N bits within one memory page, consider N on average is 5000, i.e. 5k bits to store some flags information.
At a certain points in time (super-frequent - critical) I need to find the first bit set in this whole big bit-vector. Now I do it per-64-word, i.e. with help of __builtin_ctzll
). But when N grows and search algorithm cannot be improved, there can be some possibility to scale this search through the expansion of memory access width. This is the main problem in a few words
There is a single assembly instruction called BSF
that gives the position of the highest set bit (GCC's __builtin_ctzll()
).
So in x86-64 arch I can find the highest bit set cheaply in 64-bit words.
But what about scaling through memory width?
E.g. is there a way to do it efficiently with 128 / 256 / 512 -bit registers?
Basically I'm interested in some C API function to achieve this, but also want to know what this method is based on.
UPD: As for CPU, I'm interested for this optimization to support the following CPU lineups:
Intel Xeon E3-12XX, Intel Xeon E5-22XX/26XX/E56XX, Intel Core i3-5XX/4XXX/8XXX, Intel Core i5-7XX, Intel Celeron G18XX/G49XX (optional for Intel Atom N2600, Intel Celeron N2807, Cortex-A53/72)
P.S. In mentioned algorithm before the final bit scan I need to sum k (in average 20-40) N-bit vectors with CPU AND (the AND result is just a preparatory stage for the bit-scan). This is also desirable to do with memory width scaling (i.e. more efficiently than per 64bit-word AND)
Read also: Find first set
...ANSWER
Answered 2021-May-25 at 21:12You may try this function, your compiler should optimize this code for your CPU. It's not super perfect, but it should be relatively quick and mostly portable.
PS length
should be divisible by 8 for max speed
QUESTION
I'm writing Assembly using Thumb for a Cortex-M7.
...ANSWER
Answered 2021-Jun-01 at 16:29This occurs because you haven't set up unified syntax in the assembler and the old divided syntax does not support condition codes on general instructions (or so I think). Supply the directive
QUESTION
I would like to know what would be a good approach, from a software design standpoint, to a situation where each derived class should have a different type of polymorphic data member. In more detail:
I'm writing a library that has an abstract base class Base
that users of the library will inherit from. for one member of Base
, let's call it BaseMember
, I want polymorphic behavior. What I mean by that is that various classes derived from Base
will "contain" different subclasses of BaseMember
- some will contain a OneDerivedMember
, others will contain AnotherDerivedMember
etc (all of these are derived from BaseMember
, and all are supplied in the library). The reason for wanting that, is that I want to be able to go over some collection of Base
pointers and activate some functionality of BaseMember
(which is implemented differently for its different derived classes). As I understand it, I am guessing I have to make BaseMember
a pointer. Now my questions start:
- First of all, is all of this even a good approach or do you sense a "code smell" here? Is building it like that a common practice?
Assuming the basic approach is OK:
Where would be the proper location to allocate the
BaseMember
pointer? in the constructors of the various derived classes?Can I enforce that the derived classes actually do this allocation? i.e. what if a user didn't understand, or forget, that they needed to allocate one kind or other of
SomeDerivedMember
and make theBaseMember
pointer point to it? How can I force it not to compile in such a case?Where should this member be released (de-allocated)? I suppose the RAII approach dictates it would be in the same scope it was allocated in (so, destructor of derived class?) but this forces every user of the library to remember to do this de-allocation. Instead, I could do it in the destructor of
Base
(i.e. in the library, not by the user) - but would this violate the RAII principle? and what if the user DID decide to de-allocate it (double delete...)?Alternatively to all this, can you imagine a way to have equivalent polymorphic behavior without even using dynamic allocation? This code is for a low-level embedded MCU, Cortex M4 or similar cores and bare metal (no OS) - so I try to stay away from dynamic allocation wherever possible.
I feel this kind of situation must be be fairly common, and there would be a design pattern that solves this cleanly, however I'm not sure what that would be.
Example code:
...ANSWER
Answered 2021-May-31 at 09:24EDIT Following the suggestions of the OP, I replaced the example with a fully runnable one
I would make the interface difficult to be misused:
QUESTION
I'm currently trying to learn Rust (for embedded specifically), coming from a background of C for embedded systems and Python. So far, I've been reading Rust Programming Language and Rust for Embedded, and read a few blog posts on the web.
I want my first project to be a simple "Blinky", where an LED blinks infinitely. I've got an STM32L152CDISCOVERY board with an STM32L152 chip in it (basically same as STM32L151), which is a Cortex M3.
Instead of implementing everything from scratch, I want to leverage existing crates and HALs. I've found two that seem promising: stm32l1 and stm32l1xx-hal. I've tried to read the documentation of each of them and also part of the source code, but I still can't figure out how to use them correctly.
Got a few questions about Rust and about the crates:
I see that
stm32l1xx-hal
has a dependency onstm32l1
. Do I need to add both as a dependency in myCargo.toml
file? Or will that create problems related to ownership?Is this the correct way to add them? Why is the second one added like that
...[dependencies.stm32l1]
?
ANSWER
Answered 2021-May-29 at 19:32I got some help from a Discord community. The answers were (modified a bit by me):
stm32l1xx-hal
already depends onstm32l1
as seen here. There's no need to import it twice. It is enough to add to Cargo.toml:
QUESTION
I cannot pass Story #5: "When I click a .nav-link button in the nav element, I am taken to the corresponding section of the landing page." I have all of my href
attributes set to the corresponding id
attributes and when i click on them they take me to the correct section of the page, but I am still failing this test... What am I Doing Wrong???
The code I wrote is below:
...ANSWER
Answered 2021-May-28 at 01:41The error reads
QUESTION
I wrote the following code to program a STM32F439 microcontroller based on the ARM Cortex-M4 processor core. I defined a timer interrupt handler that is triggered every time when TIM7 counts to the end of 1 second so that it executes a specified piece of code every second. The contents of functions InitRCC() (which initialises RCC to enable GPIOs) and ConfGPIO() (which configures GPIO pins) are omitted.
...ANSWER
Answered 2021-May-25 at 16:38Never include core_cm4.h or stm32f439xx.h directly.
You need to define the correct part number macro STM32F439xx using a command line flag eg: -DSTM32F439xx
.
After that you should only include "stm32f4xx.h"
. This will include the correct CMSIS headers which define _enable_irq
and _disable_irq
and all the valid IRQ numbers for the part.
Regarding TIM7_DAC_IRQn, this is incorrect. The DAC shares an interrupt with TIM6, and TIM7 has its own separate one. Chose either TIM6_DAC_IRQn
or TIM7_IRQn
.
QUESTION
I am using qemu-arm and the ARM Workbench IDE to run/profile an ARM binary which was built with armcc/armlink (an .axf-File, program written in C). This works fine with Cortex-A9 and ARM926/ARM5TE. However, whatever I tried, it doesnt work when the binary is built for Cortex-M4. Both the simulator and qemu-arm hang when M4 is selected as CPU.
I know that this processor requires some additional startup code, but I could find any comprehensive tutorial on how to get it running. Does anyone know how to do this? I have a quite big project with one main function, but it would already help if a "hello world" or some simple program which takes arguments would run.
Here is the command line I am using with Cortex-A9:
...ANSWER
Answered 2021-May-18 at 19:07I do not know how to do it with the versatilepb, it did not "just work", but this does work:
flash.s
QUESTION
Note: Although question is duplicate, but current answers lacks details, so I wanted to post another one.
I'm using C++Builder developed by Embarcadero.
For Windows, it compiles fine.
For Android, it shows the following error:
...ANSWER
Answered 2021-May-17 at 14:10my bet is that you need to use "Preprocessor directives" in your code and indicate platforms
Community Discussions, Code Snippets contain sources that include Stack Exchange Network
Vulnerabilities
No vulnerabilities reported
Install cortex
Support
Reuse Trending Solutions
Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items
Find more librariesStay Updated
Subscribe to our newsletter for trending solutions and developer bootcamps
Share this Page